| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /*
- * ArmyUpgrade.cpp, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #include "StdInc.h"
- #include "StayAtTown.h"
- #include "../AIGateway.h"
- #include "../Engine/Nullkiller.h"
- #include "../AIUtility.h"
- namespace NKAI
- {
- using namespace Goals;
- StayAtTown::StayAtTown(const CGTownInstance * town, AIPath & path)
- : ElementarGoal(Goals::STAY_AT_TOWN)
- {
- sethero(path.targetHero);
- settown(town);
- movementWasted = static_cast<float>(hero->movementPointsRemaining()) / hero->movementPointsLimit(!hero->inBoat()) - path.movementCost();
- vstd::amax(movementWasted, 0);
- }
- bool StayAtTown::operator==(const StayAtTown & other) const
- {
- return hero == other.hero && town == other.town;
- }
- std::string StayAtTown::toString() const
- {
- return "Stay at town " + town->getNameTranslated()
- + " hero " + hero->getNameTranslated()
- + ", mana: " + std::to_string(hero->mana)
- + " / " + std::to_string(hero->manaLimit());
- }
- void StayAtTown::accept(AIGateway * ai)
- {
- ai->nullkiller->lockHero(hero, HeroLockedReason::DEFENCE);
- }
- }
|