CPlayerBattleCallback.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * CPlayerBattleCallback.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "CPlayerBattleCallback.h"
  12. #include "../CStack.h"
  13. #include "../gameState/InfoAboutArmy.h"
  14. #define ASSERT_IF_CALLED_WITH_PLAYER if(!getPlayerID()) {logGlobal->error(BOOST_CURRENT_FUNCTION); assert(0);}
  15. VCMI_LIB_NAMESPACE_BEGIN
  16. CPlayerBattleCallback::CPlayerBattleCallback(const IBattleInfo * battle, PlayerColor player):
  17. battle(battle),
  18. player(player)
  19. {
  20. }
  21. #if SCRIPTING_ENABLED
  22. scripting::Pool * CPlayerBattleCallback::getContextPool() const
  23. {
  24. return nullptr; //TODO cl->getGlobalContextPool();
  25. }
  26. #endif
  27. const IBattleInfo * CPlayerBattleCallback::getBattle() const
  28. {
  29. return battle;
  30. }
  31. std::optional<PlayerColor> CPlayerBattleCallback::getPlayerID() const
  32. {
  33. return player;
  34. }
  35. bool CPlayerBattleCallback::battleCanFlee() const
  36. {
  37. RETURN_IF_NOT_BATTLE(false);
  38. ASSERT_IF_CALLED_WITH_PLAYER
  39. return CBattleInfoEssentials::battleCanFlee(*getPlayerID());
  40. }
  41. TStacks CPlayerBattleCallback::battleGetStacks(EStackOwnership whose, bool onlyAlive) const
  42. {
  43. if(whose != MINE_AND_ENEMY)
  44. {
  45. ASSERT_IF_CALLED_WITH_PLAYER
  46. }
  47. return battleGetStacksIf([&](const CStack * s){
  48. const bool ownerMatches = (whose == MINE_AND_ENEMY)
  49. || (whose == ONLY_MINE && s->unitOwner() == getPlayerID())
  50. || (whose == ONLY_ENEMY && s->unitOwner() != getPlayerID());
  51. return ownerMatches && s->isValidTarget(!onlyAlive);
  52. });
  53. }
  54. int CPlayerBattleCallback::battleGetSurrenderCost() const
  55. {
  56. RETURN_IF_NOT_BATTLE(-3);
  57. ASSERT_IF_CALLED_WITH_PLAYER
  58. return CBattleInfoCallback::battleGetSurrenderCost(*getPlayerID());
  59. }
  60. const CGHeroInstance * CPlayerBattleCallback::battleGetMyHero() const
  61. {
  62. return CBattleInfoEssentials::battleGetFightingHero(battleGetMySide());
  63. }
  64. InfoAboutHero CPlayerBattleCallback::battleGetEnemyHero() const
  65. {
  66. return battleGetHeroInfo(otherSide(battleGetMySide()));
  67. }
  68. VCMI_LIB_NAMESPACE_END