IBattleInfoCallback.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * IBattleInfoCallback.h, 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. #pragma once
  11. #include "GameConstants.h"
  12. #include "BattleHex.h"
  13. struct CObstacleInstance;
  14. class BattleField;
  15. namespace battle
  16. {
  17. class IUnitInfo;
  18. class Unit;
  19. using Units = std::vector<const Unit *>;
  20. using UnitFilter = std::function<bool(const Unit *)>;
  21. }
  22. #if SCRIPTING_ENABLED
  23. namespace scripting
  24. {
  25. class Pool;
  26. }
  27. #endif
  28. class DLL_LINKAGE IBattleInfoCallback
  29. {
  30. public:
  31. #if SCRIPTING_ENABLED
  32. virtual scripting::Pool * getContextPool() const = 0;
  33. #endif
  34. virtual TTerrain battleTerrainType() const = 0;
  35. virtual BattleField battleGetBattlefieldType() const = 0;
  36. ///return none if battle is ongoing; otherwise the victorious side (0/1) or 2 if it is a draw
  37. virtual boost::optional<int> battleIsFinished() const = 0;
  38. virtual si8 battleTacticDist() const = 0; //returns tactic distance in current tactics phase; 0 if not in tactics phase
  39. virtual si8 battleGetTacticsSide() const = 0; //returns which side is in tactics phase, undefined if none (?)
  40. virtual uint32_t battleNextUnitId() const = 0;
  41. virtual battle::Units battleGetUnitsIf(battle::UnitFilter predicate) const = 0;
  42. virtual const battle::Unit * battleGetUnitByID(uint32_t ID) const = 0;
  43. virtual const battle::Unit * battleGetUnitByPos(BattleHex pos, bool onlyAlive = true) const = 0;
  44. virtual const battle::Unit * battleActiveUnit() const = 0;
  45. //blocking obstacles makes tile inaccessible, others cause special effects (like Land Mines, Moat, Quicksands)
  46. virtual std::vector<std::shared_ptr<const CObstacleInstance>> battleGetAllObstaclesOnPos(BattleHex tile, bool onlyBlocking = true) const = 0;
  47. virtual std::vector<std::shared_ptr<const CObstacleInstance>> getAllAffectedObstaclesByStack(const battle::Unit * unit) const = 0;
  48. };