BattleCb.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * BattleCb.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 "BattleCb.h"
  12. #include "../LuaStack.h"
  13. #include "../LuaCallWrapper.h"
  14. #include "../../../lib/GameConstants.h"
  15. #include "../../../lib/battle/Unit.h"
  16. namespace scripting
  17. {
  18. namespace api
  19. {
  20. VCMI_REGISTER_CORE_SCRIPT_API(BattleCbProxy, "Battle");
  21. const std::vector<BattleCbProxy::RegType> BattleCbProxy::REGISTER =
  22. {
  23. {
  24. "getBattlefieldType",
  25. &BattleCbProxy::getBattlefieldType
  26. },
  27. {
  28. "getNextUnitId",
  29. LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleNextUnitId)
  30. },
  31. {
  32. "getTacticDistance",
  33. LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleTacticDist)
  34. },
  35. {
  36. "getTerrainType",
  37. &BattleCbProxy::getTerrainType
  38. },
  39. {
  40. "getUnitById",
  41. LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleGetUnitByID)
  42. },
  43. {
  44. "getUnitByPos",
  45. &BattleCbProxy::getUnitByPos
  46. },
  47. {
  48. "isFinished",
  49. LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleIsFinished)
  50. }
  51. };
  52. const std::vector<BattleCbProxy::CustomRegType> BattleCbProxy::REGISTER_CUSTOM =
  53. {
  54. };
  55. int BattleCbProxy::getBattlefieldType(lua_State * L, const BattleCb * object)
  56. {
  57. LuaStack S(L);
  58. auto ret = object->battleGetBattlefieldType();
  59. S.push(static_cast<si32>(ret.num));
  60. return 1;
  61. }
  62. int BattleCbProxy::getTerrainType(lua_State * L, const BattleCb * object)
  63. {
  64. LuaStack S(L);
  65. auto ret = object->battleTerrainType();
  66. S.push(static_cast<si32>(ret.num));
  67. return 1;
  68. }
  69. int BattleCbProxy::getUnitByPos(lua_State * L, const BattleCb * object)
  70. {
  71. LuaStack S(L);
  72. BattleHex hex;
  73. if(!S.tryGet(1, hex.hex))
  74. return S.retNil();
  75. bool onlyAlive;
  76. if(!S.tryGet(2, onlyAlive))
  77. onlyAlive = true;//same as default value in battleGetUnitByPos
  78. S.push(object->battleGetUnitByPos(hex, onlyAlive));
  79. return 1;
  80. }
  81. }
  82. }