CNonConstInfoCallback.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*
  2. * CNonConstInfoCallback.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 "CNonConstInfoCallback.h"
  12. #include "networkPacks/ArtifactLocation.h"
  13. #include "mapObjects/CGHeroInstance.h"
  14. #include "mapObjects/IMarket.h"
  15. #include "gameState/CGameState.h"
  16. #include "mapping/CMap.h"
  17. VCMI_LIB_NAMESPACE_BEGIN
  18. TerrainTile * CNonConstInfoCallback::getTile(const int3 & pos)
  19. {
  20. if(!gameState().getMap().isInTheMap(pos))
  21. return nullptr;
  22. return &gameState().getMap().getTile(pos);
  23. }
  24. CGHeroInstance * CNonConstInfoCallback::getHero(const ObjectInstanceID & objid)
  25. {
  26. return const_cast<CGHeroInstance*>(CGameInfoCallback::getHero(objid));
  27. }
  28. CGTownInstance * CNonConstInfoCallback::getTown(const ObjectInstanceID & objid)
  29. {
  30. return const_cast<CGTownInstance*>(CGameInfoCallback::getTown(objid));
  31. }
  32. TeamState * CNonConstInfoCallback::getTeam(const TeamID & teamID)
  33. {
  34. return const_cast<TeamState*>(CGameInfoCallback::getTeam(teamID));
  35. }
  36. TeamState * CNonConstInfoCallback::getPlayerTeam(const PlayerColor & color)
  37. {
  38. return const_cast<TeamState*>(CGameInfoCallback::getPlayerTeam(color));
  39. }
  40. PlayerState * CNonConstInfoCallback::getPlayerState(const PlayerColor & color, bool verbose)
  41. {
  42. return const_cast<PlayerState*>(CGameInfoCallback::getPlayerState(color, verbose));
  43. }
  44. CArtifactInstance * CNonConstInfoCallback::getArtInstance(const ArtifactInstanceID & aid)
  45. {
  46. return gameState().getMap().getArtifactInstance(aid);
  47. }
  48. CGObjectInstance * CNonConstInfoCallback::getObjInstance(const ObjectInstanceID & oid)
  49. {
  50. return gameState().getMap().getObject(oid);
  51. }
  52. CArmedInstance * CNonConstInfoCallback::getArmyInstance(const ObjectInstanceID & oid)
  53. {
  54. return dynamic_cast<CArmedInstance *>(getObjInstance(oid));
  55. }
  56. CArtifactSet * CNonConstInfoCallback::getArtSet(const ArtifactLocation & loc)
  57. {
  58. if(auto hero = getHero(loc.artHolder))
  59. {
  60. if(loc.creature.has_value())
  61. {
  62. if(loc.creature.value() == SlotID::COMMANDER_SLOT_PLACEHOLDER)
  63. return hero->getCommander();
  64. else
  65. return hero->getStackPtr(loc.creature.value());
  66. }
  67. else
  68. {
  69. return hero;
  70. }
  71. }
  72. else if(auto market = getMarket(loc.artHolder))
  73. {
  74. if(auto artSet = market->getArtifactsStorage())
  75. return artSet;
  76. }
  77. else if(auto army = getArmyInstance(loc.artHolder))
  78. {
  79. return army->getStackPtr(loc.creature.value());
  80. }
  81. return nullptr;
  82. }
  83. VCMI_LIB_NAMESPACE_END