| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*
- * BattleCb.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 "BattleCb.h"
- #include "../LuaStack.h"
- #include "../LuaCallWrapper.h"
- #include "../../../lib/GameConstants.h"
- #include "../../../lib/battle/Unit.h"
- namespace scripting
- {
- namespace api
- {
- VCMI_REGISTER_CORE_SCRIPT_API(BattleCbProxy, "Battle");
- const std::vector<BattleCbProxy::RegType> BattleCbProxy::REGISTER =
- {
- {
- "getBattlefieldType",
- &BattleCbProxy::getBattlefieldType
- },
- {
- "getNextUnitId",
- LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleNextUnitId)
- },
- {
- "getTacticDistance",
- LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleTacticDist)
- },
- {
- "getTerrainType",
- &BattleCbProxy::getTerrainType
- },
- {
- "getUnitById",
- LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleGetUnitByID)
- },
- {
- "getUnitByPos",
- &BattleCbProxy::getUnitByPos
- },
- {
- "isFinished",
- LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleIsFinished)
- }
- };
- const std::vector<BattleCbProxy::CustomRegType> BattleCbProxy::REGISTER_CUSTOM =
- {
- };
- int BattleCbProxy::getBattlefieldType(lua_State * L, const BattleCb * object)
- {
- LuaStack S(L);
- auto ret = object->battleGetBattlefieldType();
- S.push(static_cast<si32>(ret.num));
- return 1;
- }
- int BattleCbProxy::getTerrainType(lua_State * L, const BattleCb * object)
- {
- LuaStack S(L);
- auto ret = object->battleTerrainType();
- S.push(static_cast<si32>(ret.num));
- return 1;
- }
- int BattleCbProxy::getUnitByPos(lua_State * L, const BattleCb * object)
- {
- LuaStack S(L);
- BattleHex hex;
- if(!S.tryGet(1, hex.hex))
- return S.retNil();
- bool onlyAlive;
- if(!S.tryGet(2, onlyAlive))
- onlyAlive = true;//same as default value in battleGetUnitByPos
- S.push(object->battleGetUnitByPos(hex, onlyAlive));
- return 1;
- }
- }
- }
|