Fixes bug in DepthSearchAI where we ran threaded simulations with captured by reference variables. Should be captured by value, as they changed.
This commit is contained in:
parent
f5b438f38a
commit
91247909f8
|
@ -74,7 +74,7 @@ namespace PkmnLibAI {
|
|||
if (move.GetValue()->GetRemainingUses() == 0) {
|
||||
continue;
|
||||
}
|
||||
threadPool.push_back(std::async([=] {
|
||||
threadPool.push_back(std::async([this, battle, side, moveIndex, depth] {
|
||||
auto v = std::tuple(moveIndex, SimulateTurn(battle, side->GetSideIndex(), 0, moveIndex, depth));
|
||||
asThreadCleanup();
|
||||
return v;
|
||||
|
@ -89,7 +89,7 @@ namespace PkmnLibAI {
|
|||
if (mon.GetValue()->IsFainted()) {
|
||||
continue;
|
||||
}
|
||||
threadPool.push_back(std::async([=] {
|
||||
threadPool.push_back(std::async([this, battle, side, i, depth] {
|
||||
auto v = std::tuple((u8)(i + 4), SimulateTurn(battle, side->GetSideIndex(), 0, i + 4, depth));
|
||||
asThreadCleanup();
|
||||
return v;
|
||||
|
@ -141,6 +141,9 @@ namespace PkmnLibAI {
|
|||
auto target = GetOppositeIndex(user);
|
||||
if (index < 4) {
|
||||
auto move = user->GetMoves()[index];
|
||||
if (!move.HasValue()) {
|
||||
return std::numeric_limits<float>::min();
|
||||
}
|
||||
auto choice = new CreatureLib::Battling::AttackTurnChoice(user, move.GetValue(), target);
|
||||
if (!battle->TrySetChoice(choice)) {
|
||||
delete choice;
|
||||
|
|
Loading…
Reference in New Issue