1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00

NKAI: various AI fixes after tests in headless

This commit is contained in:
Andrii Danylchenko 2023-12-23 15:53:51 +02:00
parent 1db43a509e
commit 0c1664dbe7
4 changed files with 21 additions and 16 deletions

View File

@ -586,13 +586,18 @@ void AIGateway::heroGotLevel(const CGHeroInstance * hero, PrimarySkill pskill, s
requestActionASAP([=]()
{
int sel = 0;
if(hPtr.validAndSet())
{
std::unique_lock<std::mutex> lockGuard(nullkiller->aiStateMutex);
nullkiller->heroManager->update();
answerQuery(queryID, nullkiller->heroManager->selectBestSkill(hPtr, skills));
sel = nullkiller->heroManager->selectBestSkill(hPtr, skills);
}
answerQuery(queryID, sel);
});
}

View File

@ -137,7 +137,7 @@ TResources getCreatureBankResources(const CGObjectInstance * target, const CGHer
return sum > 1 ? result / sum : result;
}
uint64_t getResourcesGoldReward(TResources & res)
uint64_t getResourcesGoldReward(const TResources & res)
{
int nonGoldResources = res[EGameResID::GEMS]
+ res[EGameResID::SULFUR]
@ -541,6 +541,9 @@ float RewardEvaluator::getStrategicalValue(const CGObjectInstance * target) cons
? getEnemyHeroStrategicalValue(dynamic_cast<const CGHeroInstance *>(target))
: 0;
case Obj::KEYMASTER:
return 0.6f;
default:
return 0;
}

View File

@ -524,25 +524,24 @@ void handleQuit(bool ask)
// FIXME: avoids crash if player attempts to close game while opening is still playing
// use cursor handler as indicator that loading is not done yet
// proper solution would be to abort init thread (or wait for it to finish)
if(!ask)
{
quitApplication();
return;
}
if (!CCS->curh)
{
quitRequestedDuringOpeningPlayback = true;
return;
}
if(ask)
{
CCS->curh->set(Cursor::Map::POINTER);
CCS->curh->set(Cursor::Map::POINTER);
if (LOCPLINT)
LOCPLINT->showYesNoDialog(CGI->generaltexth->allTexts[69], quitApplication, nullptr);
else
CInfoWindow::showYesNoDialog(CGI->generaltexth->allTexts[69], {}, quitApplication, {}, PlayerColor(1));
}
if (LOCPLINT)
LOCPLINT->showYesNoDialog(CGI->generaltexth->allTexts[69], quitApplication, nullptr);
else
{
quitApplication();
}
CInfoWindow::showYesNoDialog(CGI->generaltexth->allTexts[69], {}, quitApplication, {}, PlayerColor(1));
}
void handleFatalError(const std::string & message, bool terminate)

View File

@ -249,9 +249,7 @@ PathfinderBlockingRule::BlockingReason MovementAfterDestinationRule::getBlocking
}
case EPathNodeAction::BLOCKING_VISIT:
return destination.guarded
? BlockingReason::DESTINATION_GUARDED
: BlockingReason::DESTINATION_BLOCKVIS;
return BlockingReason::DESTINATION_BLOCKVIS;
case EPathNodeAction::NORMAL:
return BlockingReason::NONE;