mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
Less ugly API declarations
This commit is contained in:
parent
ec6f7b88fe
commit
6d245a7821
@ -12,7 +12,6 @@
|
||||
|
||||
#include "api/Registry.h"
|
||||
#include "LuaStack.h"
|
||||
#include "LuaFunctor.h"
|
||||
|
||||
namespace scripting
|
||||
{
|
||||
@ -20,8 +19,83 @@ namespace scripting
|
||||
namespace detail
|
||||
{
|
||||
|
||||
template<int ...>
|
||||
struct Seq {};
|
||||
|
||||
template<int N, int ...S>
|
||||
struct Gens : Gens<N-1, N-1, S...> {};
|
||||
|
||||
template<int ...S>
|
||||
struct Gens<0, S...>
|
||||
{
|
||||
typedef Seq<S...> type;
|
||||
};
|
||||
|
||||
template <typename R, typename ... Args>
|
||||
class LuaArgumentsTuple
|
||||
{
|
||||
public:
|
||||
using TupleData = std::tuple<Args ...>;
|
||||
using Functor = R(*)(Args ...);
|
||||
|
||||
TupleData args;
|
||||
Functor f;
|
||||
|
||||
LuaArgumentsTuple(Functor _f)
|
||||
:f(_f),
|
||||
args()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
STRONG_INLINE int invoke(lua_State * L)
|
||||
{
|
||||
return callFunc(L, typename Gens<sizeof...(Args)>::type());
|
||||
}
|
||||
private:
|
||||
template<int ...N>
|
||||
int callFunc(lua_State * L, Seq<N...>)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
bool ok[sizeof...(Args)] = {(S.tryGet(N+1, std::get<N>(args)))...};
|
||||
|
||||
if(std::count(std::begin(ok), std::end(ok), false) > 0)
|
||||
return S.retVoid();
|
||||
|
||||
|
||||
R ret = f(std::get<N>(args) ...);
|
||||
S.clear();
|
||||
S.push(ret);
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class LuaFunctionInvoker
|
||||
{
|
||||
public:
|
||||
template<typename R, typename ... Args>
|
||||
static STRONG_INLINE int invoke(lua_State * L, R(*f)(Args ...))
|
||||
{
|
||||
LuaArgumentsTuple<R, Args ...> args(f);
|
||||
return args.invoke(L);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
template <typename F, F f>
|
||||
class LuaFunctionWrapper
|
||||
{
|
||||
public:
|
||||
static int invoke(lua_State * L)
|
||||
{
|
||||
return detail::LuaFunctionInvoker::invoke(L, f);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//TODO: this should be the only one wrapper type
|
||||
//
|
||||
template <typename U, typename M, M m>
|
||||
@ -50,6 +124,26 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename T, typename R, R(T:: * method)()>
|
||||
class LuaMethodWrapper <U, R(T:: *)(), method>
|
||||
{
|
||||
public:
|
||||
static int invoke(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
U * obj = nullptr;
|
||||
|
||||
if(!S.tryGet(1,obj))
|
||||
return S.retVoid();
|
||||
|
||||
static auto functor = std::mem_fn(method);
|
||||
|
||||
S.clear();
|
||||
S.push(functor(obj));
|
||||
return S.retPushed();
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename T, void(T:: * method)()const>
|
||||
class LuaMethodWrapper <U, void(T:: *)()const, method>
|
||||
{
|
||||
@ -69,6 +163,25 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename T, void(T:: * method)()>
|
||||
class LuaMethodWrapper <U, void(T:: *)(), method>
|
||||
{
|
||||
public:
|
||||
static int invoke(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
U * obj = nullptr;
|
||||
|
||||
if(!S.tryGet(1,obj))
|
||||
return S.retVoid();
|
||||
|
||||
static auto functor = std::mem_fn(method);
|
||||
S.clear();
|
||||
functor(obj);
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename T, typename R, typename P1, R(T:: * method)(P1)const>
|
||||
class LuaMethodWrapper <U, R(T:: *)(P1)const, method>
|
||||
{
|
||||
@ -92,6 +205,29 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename T, typename R, typename P1, R(T:: * method)(P1)>
|
||||
class LuaMethodWrapper <U, R(T:: *)(P1), method>
|
||||
{
|
||||
public:
|
||||
static int invoke(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
U * obj = nullptr;
|
||||
|
||||
if(!S.tryGet(1,obj))
|
||||
return S.retVoid();
|
||||
|
||||
P1 p1;
|
||||
if(!S.tryGet(2, p1))
|
||||
return S.retVoid();
|
||||
|
||||
static auto functor = std::mem_fn(method);
|
||||
S.clear();
|
||||
S.push(functor(obj, p1));
|
||||
return S.retPushed();
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename T, typename P1, void(T:: * method)(P1)const>
|
||||
class LuaMethodWrapper <U, void(T:: *)(P1)const, method>
|
||||
{
|
||||
@ -115,6 +251,28 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename T, typename P1, void(T:: * method)(P1)>
|
||||
class LuaMethodWrapper <U, void(T:: *)(P1), method>
|
||||
{
|
||||
public:
|
||||
static int invoke(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
U * obj = nullptr;
|
||||
|
||||
if(!S.tryGet(1,obj))
|
||||
return S.retVoid();
|
||||
|
||||
P1 p1;
|
||||
if(!S.tryGet(2, p1))
|
||||
return S.retVoid();
|
||||
|
||||
static auto functor = std::mem_fn(method);
|
||||
S.clear();
|
||||
functor(obj, p1);
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename T, typename R, typename P1, typename P2, R(T:: * method)(P1, P2)const>
|
||||
class LuaMethodWrapper <U, R(T:: *)(P1, P2)const, method>
|
||||
@ -170,150 +328,4 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//deprecated, should use LuaMethodWrapper instead, once implemented
|
||||
template <typename T>
|
||||
class LuaCallWrapper
|
||||
{
|
||||
public:
|
||||
using Wrapped = typename std::remove_const<T>::type;
|
||||
|
||||
static std::function<int(lua_State *, T *)> createFunctor(void (Wrapped::* method)())
|
||||
{
|
||||
auto functor = std::mem_fn(method);
|
||||
auto ret = [=](lua_State * L, T * object)->int
|
||||
{
|
||||
LuaStack S(L);
|
||||
functor(object);
|
||||
return S.retVoid();
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static std::function<int(lua_State *, T *)> createFunctor(void (Wrapped::* method)() const)
|
||||
{
|
||||
auto functor = std::mem_fn(method);
|
||||
auto ret = [=](lua_State * L, T * object)->int
|
||||
{
|
||||
LuaStack S(L);
|
||||
functor(object);
|
||||
return S.retVoid();
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename R>
|
||||
static std::function<int(lua_State *, T *)> createFunctor(R (Wrapped::* method)())
|
||||
{
|
||||
auto functor = std::mem_fn(method);
|
||||
auto ret = [=](lua_State * L, T * object)->int
|
||||
{
|
||||
LuaStack S(L);
|
||||
S.clear();
|
||||
S.push(functor(object));
|
||||
return S.retPushed();
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename R>
|
||||
static std::function<int(lua_State *, T *)> createFunctor(R (Wrapped::* method)() const)
|
||||
{
|
||||
auto functor = std::mem_fn(method);
|
||||
auto ret = [=](lua_State * L, T * object)->int
|
||||
{
|
||||
LuaStack S(L);
|
||||
S.clear();
|
||||
S.push(functor(object));
|
||||
return S.retPushed();
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename P1>
|
||||
static std::function<int(lua_State *, T *)> createFunctor(void (Wrapped::* method)(P1))
|
||||
{
|
||||
auto functor = std::mem_fn(method);
|
||||
auto ret = [=](lua_State * L, T * object)->int
|
||||
{
|
||||
LuaStack S(L);
|
||||
P1 p1;
|
||||
if(S.tryGet(1, p1))
|
||||
{
|
||||
functor(object, p1);
|
||||
}
|
||||
|
||||
return S.retVoid();
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename P1>
|
||||
static std::function<int(lua_State *, T *)> createFunctor(void (Wrapped::* method)(P1) const)
|
||||
{
|
||||
auto functor = std::mem_fn(method);
|
||||
auto ret = [=](lua_State * L, T * object)->int
|
||||
{
|
||||
LuaStack S(L);
|
||||
P1 p1;
|
||||
if(S.tryGet(1, p1))
|
||||
{
|
||||
functor(object, p1);
|
||||
}
|
||||
|
||||
return S.retVoid();
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename R, typename P1>
|
||||
static std::function<int(lua_State *, T *)> createFunctor(R (Wrapped::* method)(P1))
|
||||
{
|
||||
auto functor = std::mem_fn(method);
|
||||
auto ret = [=](lua_State * L, T * object)->int
|
||||
{
|
||||
LuaStack S(L);
|
||||
P1 p1;
|
||||
if(S.tryGet(1, p1))
|
||||
{
|
||||
S.push(functor(object, p1));
|
||||
return 1;
|
||||
}
|
||||
|
||||
return S.retVoid();
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename R, typename P1>
|
||||
static std::function<int(lua_State *, T *)> createFunctor(R (Wrapped::* method)(P1) const)
|
||||
{
|
||||
auto functor = std::mem_fn(method);
|
||||
auto ret = [=](lua_State * L, T * object)->int
|
||||
{
|
||||
LuaStack S(L);
|
||||
P1 p1;
|
||||
if(S.tryGet(1, p1))
|
||||
{
|
||||
S.push(functor(object, p1));
|
||||
return 1;
|
||||
}
|
||||
|
||||
return S.retVoid();
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -10,9 +10,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "api/Registry.h"
|
||||
#include "LuaFunctor.h"
|
||||
#include "LuaStack.h"
|
||||
#include "LuaCallWrapper.h"
|
||||
|
||||
/*
|
||||
* Original code is LunaWrapper by nornagon.
|
||||
@ -27,13 +25,6 @@ namespace scripting
|
||||
|
||||
namespace detail
|
||||
{
|
||||
template<typename T>
|
||||
struct RegType
|
||||
{
|
||||
const char * name;
|
||||
std::function<int(lua_State *, T)> functor;
|
||||
};
|
||||
|
||||
struct CustomRegType
|
||||
{
|
||||
const char * name;
|
||||
@ -47,40 +38,11 @@ namespace detail
|
||||
using ProxyType = P;
|
||||
using UDataType = U;
|
||||
|
||||
static int invoke(lua_State * L)
|
||||
{
|
||||
static auto KEY = api::TypeRegistry::get()->getKey<UDataType>();
|
||||
|
||||
int i = (int)lua_tonumber(L, lua_upvalueindex(1));
|
||||
|
||||
void * raw = luaL_checkudata(L, 1, KEY);
|
||||
|
||||
if(!raw)
|
||||
{
|
||||
lua_settop(L, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
lua_remove(L, 1);
|
||||
|
||||
auto obj = *(static_cast<UDataType *>(raw));
|
||||
return (ProxyType::REGISTER[i].functor)(L, obj);
|
||||
}
|
||||
|
||||
static void setIndexTable(lua_State * L)
|
||||
{
|
||||
lua_pushstring(L, "__index");
|
||||
|
||||
lua_newtable(L);
|
||||
lua_Integer index = 0;
|
||||
for(auto & reg : ProxyType::REGISTER)
|
||||
{
|
||||
lua_pushstring(L, reg.name);
|
||||
lua_pushnumber(L, index);
|
||||
lua_pushcclosure(L, &invoke, 1);
|
||||
lua_rawset(L, -3);
|
||||
index++;
|
||||
}
|
||||
|
||||
for(auto & reg : ProxyType::REGISTER_CUSTOM)
|
||||
{
|
||||
@ -164,7 +126,6 @@ public:
|
||||
using UDataType = ObjectType *;
|
||||
using CUDataType = const ObjectType *;
|
||||
|
||||
using RegType = detail::RegType<UDataType>;
|
||||
using CustomRegType = detail::CustomRegType;
|
||||
|
||||
void pushMetatable(lua_State * L) const override final
|
||||
@ -202,7 +163,6 @@ class SharedWrapper : public RegistarBase
|
||||
public:
|
||||
using ObjectType = typename std::remove_cv<T>::type;
|
||||
using UDataType = std::shared_ptr<T>;
|
||||
using RegType = detail::RegType<UDataType>;
|
||||
using CustomRegType = detail::CustomRegType;
|
||||
|
||||
static int constructor(lua_State * L)
|
||||
@ -248,7 +208,6 @@ class UniqueOpaqueWrapper : public api::Registar
|
||||
public:
|
||||
using ObjectType = typename std::remove_cv<T>::type;
|
||||
using UDataType = std::unique_ptr<T>;
|
||||
using RegType = detail::RegType<UDataType>;
|
||||
using CustomRegType = detail::CustomRegType;
|
||||
|
||||
void pushMetatable(lua_State * L) const override final
|
||||
|
@ -24,23 +24,21 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(ArtifactProxy, "Artifact");
|
||||
|
||||
const std::vector<ArtifactProxy::RegType> ArtifactProxy::REGISTER = {};
|
||||
|
||||
const std::vector<ArtifactProxy::CustomRegType> ArtifactProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getIconIndex", LuaMethodWrapper<Artifact, int32_t(Entity:: *)()const, &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Artifact, int32_t(Entity:: *)()const, &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Artifact, const std::string &(Entity:: *)()const, &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Artifact, const std::string &(Entity:: *)()const, &Entity::getName>::invoke, false},
|
||||
{"getIconIndex", LuaMethodWrapper<Artifact, decltype(&Entity::getIconIndex), &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Artifact, decltype(&Entity::getIndex), &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Artifact, decltype(&Entity::getJsonKey), &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Artifact, decltype(&Entity::getName), &Entity::getName>::invoke, false},
|
||||
|
||||
{"getId", LuaMethodWrapper<Artifact, ArtifactID(EntityT<ArtifactID>::*)()const, &EntityT<ArtifactID>::getId>::invoke, false},
|
||||
{"accessBonuses", LuaMethodWrapper<Artifact, const IBonusBearer *(EntityWithBonuses<ArtifactID>:: *)()const, &EntityWithBonuses<ArtifactID>::accessBonuses>::invoke, false},
|
||||
{"getId", LuaMethodWrapper<Artifact, decltype(&EntityT<ArtifactID>::getId), &EntityT<ArtifactID>::getId>::invoke, false},
|
||||
{"accessBonuses", LuaMethodWrapper<Artifact, decltype(&EntityWithBonuses<ArtifactID>::accessBonuses), &EntityWithBonuses<ArtifactID>::accessBonuses>::invoke, false},
|
||||
|
||||
{"getDescription", LuaMethodWrapper<Artifact, const std::string &(Artifact:: *)()const, &Artifact::getDescription>::invoke, false},
|
||||
{"getEventText", LuaMethodWrapper<Artifact, const std::string &(Artifact:: *)()const, &Artifact::getEventText>::invoke, false},
|
||||
{"isBig", LuaMethodWrapper<Artifact, bool(Artifact:: *)()const, &Artifact::isBig>::invoke, false},
|
||||
{"isTradable", LuaMethodWrapper<Artifact, bool(Artifact:: *)()const, &Artifact::isTradable>::invoke, false},
|
||||
{"getPrice", LuaMethodWrapper<Artifact, uint32_t(Artifact:: *)()const, &Artifact::getPrice>::invoke, false},
|
||||
{"getDescription", LuaMethodWrapper<Artifact, decltype(&Artifact::getDescription), &Artifact::getDescription>::invoke, false},
|
||||
{"getEventText", LuaMethodWrapper<Artifact, decltype(&Artifact::getEventText), &Artifact::getEventText>::invoke, false},
|
||||
{"isBig", LuaMethodWrapper<Artifact, decltype(&Artifact::isBig), &Artifact::isBig>::invoke, false},
|
||||
{"isTradable", LuaMethodWrapper<Artifact, decltype(&Artifact::isTradable), &Artifact::isTradable>::invoke, false},
|
||||
{"getPrice", LuaMethodWrapper<Artifact, decltype(&Artifact::getPrice), &Artifact::getPrice>::invoke, false},
|
||||
};
|
||||
|
||||
|
||||
|
@ -24,7 +24,6 @@ class ArtifactProxy : public OpaqueWrapper<const Artifact, ArtifactProxy>
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const Artifact, ArtifactProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -24,75 +24,90 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(BattleCbProxy, "Battle");
|
||||
|
||||
const std::vector<BattleCbProxy::RegType> BattleCbProxy::REGISTER =
|
||||
const std::vector<BattleCbProxy::CustomRegType> BattleCbProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{
|
||||
"getBattlefieldType",
|
||||
&BattleCbProxy::getBattlefieldType
|
||||
&BattleCbProxy::getBattlefieldType,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getNextUnitId",
|
||||
LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleNextUnitId)
|
||||
LuaMethodWrapper<BattleCb, decltype(&BattleCb::battleNextUnitId), &BattleCb::battleNextUnitId>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getTacticDistance",
|
||||
LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleTacticDist)
|
||||
LuaMethodWrapper<BattleCb, decltype(&BattleCb::battleTacticDist), &BattleCb::battleTacticDist>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getTerrainType",
|
||||
&BattleCbProxy::getTerrainType
|
||||
&BattleCbProxy::getTerrainType,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getUnitById",
|
||||
LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleGetUnitByID)
|
||||
LuaMethodWrapper<BattleCb, decltype(&BattleCb::battleGetUnitByID), &BattleCb::battleGetUnitByID>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getUnitByPos",
|
||||
&BattleCbProxy::getUnitByPos
|
||||
&BattleCbProxy::getUnitByPos,
|
||||
false
|
||||
},
|
||||
{
|
||||
"isFinished",
|
||||
LuaCallWrapper<const BattleCb>::createFunctor(&BattleCb::battleIsFinished)
|
||||
LuaMethodWrapper<BattleCb, decltype(&BattleCb::battleIsFinished), &BattleCb::battleIsFinished>::invoke,
|
||||
false
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const std::vector<BattleCbProxy::CustomRegType> BattleCbProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
|
||||
int BattleCbProxy::getBattlefieldType(lua_State * L, const BattleCb * object)
|
||||
int BattleCbProxy::getBattlefieldType(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
const BattleCb * object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
auto ret = object->battleGetBattlefieldType();
|
||||
S.push(static_cast<si32>(ret.num));
|
||||
return 1;
|
||||
|
||||
return LuaStack::quickRetInt(L, static_cast<si32>(ret.num));
|
||||
}
|
||||
|
||||
int BattleCbProxy::getTerrainType(lua_State * L, const BattleCb * object)
|
||||
int BattleCbProxy::getTerrainType(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
const BattleCb * object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
auto ret = object->battleTerrainType();
|
||||
S.push(static_cast<si32>(ret.num));
|
||||
return 1;
|
||||
|
||||
return LuaStack::quickRetInt(L, static_cast<si32>(ret.num));
|
||||
}
|
||||
|
||||
int BattleCbProxy::getUnitByPos(lua_State * L, const BattleCb * object)
|
||||
int BattleCbProxy::getUnitByPos(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
const BattleCb * object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
BattleHex hex;
|
||||
|
||||
if(!S.tryGet(1, hex.hex))
|
||||
if(!S.tryGet(2, hex.hex))
|
||||
return S.retNil();
|
||||
|
||||
bool onlyAlive;
|
||||
|
||||
if(!S.tryGet(2, onlyAlive))
|
||||
if(!S.tryGet(3, onlyAlive))
|
||||
onlyAlive = true;//same as default value in battleGetUnitByPos
|
||||
|
||||
S.clear();
|
||||
S.push(object->battleGetUnitByPos(hex, onlyAlive));
|
||||
return 1;
|
||||
}
|
||||
|
@ -25,12 +25,11 @@ class BattleCbProxy : public OpaqueWrapper<const BattleCb, BattleCbProxy>
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const BattleCb, BattleCbProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int getBattlefieldType(lua_State * L, const BattleCb * object);
|
||||
static int getTerrainType(lua_State * L, const BattleCb * object);
|
||||
static int getUnitByPos(lua_State * L, const BattleCb * object);
|
||||
static int getBattlefieldType(lua_State * L);
|
||||
static int getTerrainType(lua_State * L);
|
||||
static int getUnitByPos(lua_State * L);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -25,85 +25,127 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(BonusProxy, "Bonus");
|
||||
|
||||
const std::vector<BonusProxy::RegType> BonusProxy::REGISTER =
|
||||
{
|
||||
{"getType", &BonusProxy::getType},
|
||||
{"getSubtype", &BonusProxy::getSubtype},
|
||||
{"getDuration", &BonusProxy::getDuration},
|
||||
{"getTurns", &BonusProxy::getTurns},
|
||||
{"getValueType", &BonusProxy::getValueType},
|
||||
{"getVal", &BonusProxy::getVal},
|
||||
{"getSource", &BonusProxy::getSource},
|
||||
{"getSourceID", &BonusProxy::getSourceID},
|
||||
{"getEffectRange", &BonusProxy::getEffectRange},
|
||||
{"getStacking", &BonusProxy::getStacking},
|
||||
{"getDescription", &BonusProxy::getDescription},
|
||||
{"toJsonNode", &BonusProxy::toJsonNode}
|
||||
};
|
||||
|
||||
const std::vector<BonusProxy::CustomRegType> BonusProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getType", &BonusProxy::getType, false},
|
||||
{"getSubtype", &BonusProxy::getSubtype, false},
|
||||
{"getDuration", &BonusProxy::getDuration, false},
|
||||
{"getTurns", &BonusProxy::getTurns, false},
|
||||
{"getValueType", &BonusProxy::getValueType, false},
|
||||
{"getVal", &BonusProxy::getVal, false},
|
||||
{"getSource", &BonusProxy::getSource, false},
|
||||
{"getSourceID", &BonusProxy::getSourceID, false},
|
||||
{"getEffectRange", &BonusProxy::getEffectRange, false},
|
||||
{"getStacking", &BonusProxy::getStacking, false},
|
||||
{"getDescription", &BonusProxy::getDescription, false},
|
||||
{"toJsonNode", &BonusProxy::toJsonNode, false}
|
||||
};
|
||||
|
||||
int BonusProxy::getType(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getType(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->type);
|
||||
}
|
||||
|
||||
int BonusProxy::getSubtype(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getSubtype(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->subtype);
|
||||
}
|
||||
|
||||
int BonusProxy::getDuration(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getDuration(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->duration);
|
||||
}
|
||||
|
||||
int BonusProxy::getTurns(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getTurns(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->turnsRemain);
|
||||
}
|
||||
|
||||
int BonusProxy::getValueType(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getValueType(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->valType);
|
||||
}
|
||||
|
||||
int BonusProxy::getVal(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getVal(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->val);
|
||||
}
|
||||
|
||||
int BonusProxy::getSource(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getSource(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->source);
|
||||
}
|
||||
|
||||
int BonusProxy::getSourceID(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getSourceID(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->sid);
|
||||
}
|
||||
|
||||
int BonusProxy::getEffectRange(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getEffectRange(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetInt(L, object->effectRange);
|
||||
}
|
||||
|
||||
int BonusProxy::getStacking(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getStacking(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetStr(L, object->stacking);
|
||||
}
|
||||
|
||||
int BonusProxy::getDescription(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::getDescription(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
return LuaStack::quickRetStr(L, object->description);
|
||||
}
|
||||
|
||||
int BonusProxy::toJsonNode(lua_State * L, std::shared_ptr<const Bonus> object)
|
||||
int BonusProxy::toJsonNode(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<const Bonus> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
S.clear();
|
||||
S.push(object->toJsonNode());
|
||||
return 1;
|
||||
@ -133,67 +175,48 @@ void BonusProxy::adjustStaticTable(lua_State * L) const
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(BonusListProxy, "BonusList");
|
||||
|
||||
const std::vector<BonusListProxy::RegType> BonusListProxy::REGISTER =
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
const std::vector<BonusListProxy::CustomRegType> BonusListProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
int BonusListProxy::index(lua_State * L)
|
||||
std::shared_ptr<const Bonus> BonusListProxy::index(std::shared_ptr<const BonusList> self, int key)
|
||||
{
|
||||
//field = __index(self, key)
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<const BonusList> self;
|
||||
lua_Integer key = -1;
|
||||
std::shared_ptr<const Bonus> ret;
|
||||
|
||||
if(S.tryGet(1, self) && S.tryGetInteger(2, key))
|
||||
{
|
||||
if((key >= 1) && (key <= self->size()))
|
||||
{
|
||||
std::shared_ptr<const Bonus> ret = (*self)[key-1];
|
||||
|
||||
S.clear();
|
||||
S.push(ret);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return S.retNil();
|
||||
if((key >= 1) && (key <= self->size()))
|
||||
ret = (*self)[key-1];
|
||||
return ret;
|
||||
}
|
||||
|
||||
void BonusListProxy::adjustMetatable(lua_State * L) const
|
||||
{
|
||||
lua_pushstring(L, "__index");
|
||||
lua_pushcfunction(L, &BonusListProxy::index);
|
||||
lua_pushcclosure(L, LuaFunctionWrapper<decltype(&BonusListProxy::index), &BonusListProxy::index>::invoke, 0);
|
||||
lua_rawset(L, -3);
|
||||
}
|
||||
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(BonusBearerProxy, "BonusBearer");
|
||||
|
||||
const std::vector<BonusBearerProxy::RegType> BonusBearerProxy::REGISTER =
|
||||
{
|
||||
{"getBonuses", &BonusBearerProxy::getBonuses},
|
||||
};
|
||||
|
||||
const std::vector<BonusBearerProxy::CustomRegType> BonusBearerProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getBonuses", &BonusBearerProxy::getBonuses, false},
|
||||
};
|
||||
|
||||
int BonusBearerProxy::getBonuses(lua_State * L, const IBonusBearer * object)
|
||||
int BonusBearerProxy::getBonuses(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
const IBonusBearer * object = nullptr;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
|
||||
TConstBonusListPtr ret;
|
||||
|
||||
const bool hasSelector = S.isFunction(1);
|
||||
const bool hasRangeSelector = S.isFunction(2);
|
||||
const bool hasSelector = S.isFunction(2);
|
||||
const bool hasRangeSelector = S.isFunction(3);
|
||||
|
||||
if(hasSelector)
|
||||
{
|
||||
|
@ -26,21 +26,20 @@ class BonusProxy : public SharedWrapper<const Bonus, BonusProxy>
|
||||
public:
|
||||
using Wrapper = SharedWrapper<const Bonus, BonusProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int getType(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getSubtype(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getDuration(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getTurns(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getValueType(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getVal(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getSource(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getSourceID(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getDescription(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getEffectRange(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getStacking(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int toJsonNode(lua_State * L, std::shared_ptr<const Bonus> object);
|
||||
static int getType(lua_State * L);
|
||||
static int getSubtype(lua_State * L);
|
||||
static int getDuration(lua_State * L);
|
||||
static int getTurns(lua_State * L);
|
||||
static int getValueType(lua_State * L);
|
||||
static int getVal(lua_State * L);
|
||||
static int getSource(lua_State * L);
|
||||
static int getSourceID(lua_State * L);
|
||||
static int getDescription(lua_State * L);
|
||||
static int getEffectRange(lua_State * L);
|
||||
static int getStacking(lua_State * L);
|
||||
static int toJsonNode(lua_State * L);
|
||||
|
||||
protected:
|
||||
virtual void adjustStaticTable(lua_State * L) const override;
|
||||
@ -51,10 +50,9 @@ class BonusListProxy : public SharedWrapper<const BonusList, BonusListProxy>
|
||||
public:
|
||||
using Wrapper = SharedWrapper<const BonusList, BonusListProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int index(lua_State * L);
|
||||
static std::shared_ptr<const Bonus> index(std::shared_ptr<const BonusList> self, int key);
|
||||
protected:
|
||||
virtual void adjustMetatable(lua_State * L) const override;
|
||||
};
|
||||
@ -64,10 +62,9 @@ class BonusBearerProxy : public OpaqueWrapper<const IBonusBearer, BonusBearerPro
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const IBonusBearer, BonusBearerProxy>;
|
||||
|
||||
static int getBonuses(lua_State * L, const IBonusBearer * object);
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int getBonuses(lua_State * L);
|
||||
};
|
||||
|
||||
|
||||
|
@ -24,42 +24,38 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(CreatureProxy, "Creature");
|
||||
|
||||
const std::vector<CreatureProxy::RegType> CreatureProxy::REGISTER =
|
||||
{
|
||||
{"getCost", LuaCallWrapper<const Creature>::createFunctor(&Creature::getCost)},
|
||||
{"isDoubleWide", LuaCallWrapper<const Creature>::createFunctor(&Creature::isDoubleWide)},
|
||||
};
|
||||
|
||||
const std::vector<CreatureProxy::CustomRegType> CreatureProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getIconIndex", LuaMethodWrapper<Creature, int32_t(Entity:: *)()const, &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Creature, int32_t(Entity:: *)()const, &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Creature, const std::string &(Entity:: *)()const, &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Creature, const std::string &(Entity:: *)()const, &Entity::getName>::invoke, false},
|
||||
{"accessBonuses", LuaMethodWrapper<Creature, const IBonusBearer *(EntityWithBonuses<CreatureID>:: *)()const, &EntityWithBonuses<CreatureID>::accessBonuses>::invoke, false},
|
||||
{"getIconIndex", LuaMethodWrapper<Creature, decltype(&Entity::getIconIndex), &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Creature, decltype(&Entity::getIndex), &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Creature, decltype(&Entity::getJsonKey), &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Creature, decltype(&Entity::getName), &Entity::getName>::invoke, false},
|
||||
{"accessBonuses", LuaMethodWrapper<Creature, decltype(&EntityWithBonuses<CreatureID>::accessBonuses), &EntityWithBonuses<CreatureID>::accessBonuses>::invoke, false},
|
||||
|
||||
{"getMaxHealth", LuaMethodWrapper<Creature, uint32_t(Creature:: *)()const, &Creature::getMaxHealth>::invoke, false},
|
||||
{"getPluralName", LuaMethodWrapper<Creature, const std::string &(Creature:: *)()const, &Creature::getPluralName>::invoke, false},
|
||||
{"getSingularName", LuaMethodWrapper<Creature, const std::string &(Creature:: *)()const, &Creature::getSingularName>::invoke, false},
|
||||
{"getMaxHealth", LuaMethodWrapper<Creature,decltype(&Creature::getMaxHealth), &Creature::getMaxHealth>::invoke, false},
|
||||
{"getPluralName", LuaMethodWrapper<Creature, decltype(&Creature::getPluralName), &Creature::getPluralName>::invoke, false},
|
||||
{"getSingularName", LuaMethodWrapper<Creature, decltype(&Creature::getSingularName), &Creature::getSingularName>::invoke, false},
|
||||
|
||||
{"getAdvMapAmountMin", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getAdvMapAmountMin>::invoke, false},
|
||||
{"getAdvMapAmountMax", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getAdvMapAmountMax>::invoke, false},
|
||||
{"getAIValue", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getAIValue>::invoke, false},
|
||||
{"getFightValue", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getFightValue>::invoke, false},
|
||||
{"getLevel", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getLevel>::invoke, false},
|
||||
{"getGrowth", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getGrowth>::invoke, false},
|
||||
{"getHorde", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getHorde>::invoke, false},
|
||||
{"getFactionIndex", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getFactionIndex>::invoke, false},
|
||||
{"getAdvMapAmountMin", LuaMethodWrapper<Creature, decltype(&Creature::getAdvMapAmountMin), &Creature::getAdvMapAmountMin>::invoke, false},
|
||||
{"getAdvMapAmountMax", LuaMethodWrapper<Creature, decltype(&Creature::getAdvMapAmountMax), &Creature::getAdvMapAmountMax>::invoke, false},
|
||||
{"getAIValue", LuaMethodWrapper<Creature, decltype(&Creature::getAIValue), &Creature::getAIValue>::invoke, false},
|
||||
{"getFightValue", LuaMethodWrapper<Creature, decltype(&Creature::getFightValue), &Creature::getFightValue>::invoke, false},
|
||||
{"getLevel", LuaMethodWrapper<Creature, decltype(&Creature::getLevel), &Creature::getLevel>::invoke, false},
|
||||
{"getGrowth", LuaMethodWrapper<Creature, decltype(&Creature::getGrowth), &Creature::getGrowth>::invoke, false},
|
||||
{"getHorde", LuaMethodWrapper<Creature, decltype(&Creature::getHorde), &Creature::getHorde>::invoke, false},
|
||||
{"getFactionIndex", LuaMethodWrapper<Creature, decltype(&Creature::getFactionIndex), &Creature::getFactionIndex>::invoke, false},
|
||||
|
||||
{"getBaseAttack", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getBaseAttack>::invoke, false},
|
||||
{"getBaseDefense", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getBaseDefense>::invoke, false},
|
||||
{"getBaseDamageMin", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getBaseDamageMin>::invoke, false},
|
||||
{"getBaseDamageMax", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getBaseDamageMax>::invoke, false},
|
||||
{"getBaseHitPoints", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getBaseHitPoints>::invoke, false},
|
||||
{"getBaseSpellPoints", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getBaseSpellPoints>::invoke, false},
|
||||
{"getBaseSpeed", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getBaseSpeed>::invoke, false},
|
||||
{"getBaseShots", LuaMethodWrapper<Creature, int32_t(Creature:: *)()const, &Creature::getBaseShots>::invoke, false},
|
||||
{"getBaseAttack", LuaMethodWrapper<Creature, decltype(&Creature::getBaseAttack), &Creature::getBaseAttack>::invoke, false},
|
||||
{"getBaseDefense", LuaMethodWrapper<Creature, decltype(&Creature::getBaseDefense), &Creature::getBaseDefense>::invoke, false},
|
||||
{"getBaseDamageMin", LuaMethodWrapper<Creature, decltype(&Creature::getBaseDamageMin), &Creature::getBaseDamageMin>::invoke, false},
|
||||
{"getBaseDamageMax", LuaMethodWrapper<Creature, decltype(&Creature::getBaseDamageMax), &Creature::getBaseDamageMax>::invoke, false},
|
||||
{"getBaseHitPoints", LuaMethodWrapper<Creature, decltype(&Creature::getBaseHitPoints), &Creature::getBaseHitPoints>::invoke, false},
|
||||
{"getBaseSpellPoints", LuaMethodWrapper<Creature, decltype(&Creature::getBaseSpellPoints), &Creature::getBaseSpellPoints>::invoke, false},
|
||||
{"getBaseSpeed", LuaMethodWrapper<Creature, decltype(&Creature::getBaseSpeed), &Creature::getBaseSpeed>::invoke, false},
|
||||
{"getBaseShots", LuaMethodWrapper<Creature, decltype(&Creature::getBaseShots), &Creature::getBaseShots>::invoke, false},
|
||||
|
||||
{"getCost", LuaMethodWrapper<Creature, decltype(&Creature::getCost), &Creature::getCost>::invoke, false},
|
||||
{"isDoubleWide", LuaMethodWrapper<Creature, decltype(&Creature::isDoubleWide), &Creature::isDoubleWide>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ class CreatureProxy : public OpaqueWrapper<const Creature, CreatureProxy>
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const Creature, CreatureProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -23,15 +23,13 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(FactionProxy, "Faction");
|
||||
|
||||
const std::vector<FactionProxy::RegType> FactionProxy::REGISTER = {};
|
||||
|
||||
const std::vector<FactionProxy::CustomRegType> FactionProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getIconIndex", LuaMethodWrapper<Faction, int32_t(Entity:: *)()const, &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Faction, int32_t(Entity:: *)()const, &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Faction, const std::string &(Entity:: *)()const, &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Faction, const std::string &(Entity:: *)()const, &Entity::getName>::invoke, false},
|
||||
{"hasTown", LuaMethodWrapper<Faction, bool(Faction:: *)()const, &Faction::hasTown>::invoke, false},
|
||||
{"getIconIndex", LuaMethodWrapper<Faction, decltype(&Entity::getIconIndex), &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Faction, decltype(&Entity::getIndex), &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Faction, decltype(&Entity::getJsonKey), &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Faction, decltype(&Entity::getName), &Entity::getName>::invoke, false},
|
||||
{"hasTown", LuaMethodWrapper<Faction, decltype(&Faction::hasTown), &Faction::hasTown>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ class FactionProxy : public OpaqueWrapper<const Faction, FactionProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const Faction, FactionProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -24,19 +24,17 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(GameCbProxy, "Game");
|
||||
|
||||
const std::vector<GameCbProxy::RegType> GameCbProxy::REGISTER = {};
|
||||
|
||||
const std::vector<GameCbProxy::CustomRegType> GameCbProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getDate", LuaMethodWrapper<GameCb, int32_t(GameCb:: *)(Date::EDateType)const, &GameCb::getDate>::invoke, false},
|
||||
{"isAllowed", LuaMethodWrapper<GameCb, bool(GameCb:: *)(int32_t, int32_t)const, &GameCb::isAllowed>::invoke, false},
|
||||
{"getCurrentPlayer", LuaMethodWrapper<GameCb, PlayerColor(GameCb:: *)()const, &GameCb::getLocalPlayer>::invoke, false},
|
||||
{"getPlayer", LuaMethodWrapper<GameCb, const Player * (GameCb:: *)(PlayerColor)const, &GameCb::getPlayer>::invoke, false},
|
||||
{"getDate", LuaMethodWrapper<GameCb, decltype(&GameCb::getDate), &GameCb::getDate>::invoke, false},
|
||||
{"isAllowed", LuaMethodWrapper<GameCb, decltype(&GameCb::isAllowed), &GameCb::isAllowed>::invoke, false},
|
||||
{"getCurrentPlayer", LuaMethodWrapper<GameCb, decltype(&GameCb::getLocalPlayer), &GameCb::getLocalPlayer>::invoke, false},
|
||||
{"getPlayer", LuaMethodWrapper<GameCb, decltype(&GameCb::getPlayer), &GameCb::getPlayer>::invoke, false},
|
||||
|
||||
{"getHero", LuaMethodWrapper<GameCb, const CGHeroInstance *(GameCb:: *)(ObjectInstanceID)const, &GameCb::getHero>::invoke, false},
|
||||
{"getHeroWithSubid", LuaMethodWrapper<GameCb, const CGHeroInstance *(GameCb:: *)(int)const, &GameCb::getHeroWithSubid>::invoke, false},
|
||||
{"getHero", LuaMethodWrapper<GameCb, decltype(&GameCb::getHero), &GameCb::getHero>::invoke, false},
|
||||
{"getHeroWithSubid", LuaMethodWrapper<GameCb, decltype(&GameCb::getHeroWithSubid), &GameCb::getHeroWithSubid>::invoke, false},
|
||||
|
||||
{"getObj", LuaMethodWrapper<GameCb, const CGObjectInstance *(GameCb:: *)(ObjectInstanceID, bool)const, &GameCb::getObj>::invoke, false},
|
||||
{"getObj", LuaMethodWrapper<GameCb, decltype(&GameCb::getObj), &GameCb::getObj>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ class GameCbProxy : public OpaqueWrapper<const GameCb, GameCbProxy>
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const GameCb, GameCbProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
};
|
||||
|
@ -22,14 +22,12 @@ namespace api
|
||||
{
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(HeroClassProxy, "HeroClass");
|
||||
|
||||
const std::vector<HeroClassProxy::RegType> HeroClassProxy::REGISTER = {};
|
||||
|
||||
const std::vector<HeroClassProxy::CustomRegType> HeroClassProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getIconIndex", LuaMethodWrapper<HeroClass, int32_t(Entity:: *)()const, &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<HeroClass, int32_t(Entity:: *)()const, &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<HeroClass, const std::string &(Entity:: *)()const, &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<HeroClass, const std::string &(Entity:: *)()const, &Entity::getName>::invoke, false},
|
||||
{"getIconIndex", LuaMethodWrapper<HeroClass, decltype(&Entity::getIconIndex), &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<HeroClass, decltype(&Entity::getIndex), &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<HeroClass, decltype(&Entity::getJsonKey), &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<HeroClass, decltype(&Entity::getName), &Entity::getName>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ class HeroClassProxy : public OpaqueWrapper<const HeroClass, HeroClassProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const HeroClass, HeroClassProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -22,12 +22,10 @@ namespace api
|
||||
{
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(HeroInstanceProxy, "HeroInstance");
|
||||
|
||||
const std::vector<HeroInstanceProxy::RegType> HeroInstanceProxy::REGISTER = {};
|
||||
|
||||
const std::vector<HeroInstanceProxy::CustomRegType> HeroInstanceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getStack", LuaMethodWrapper<CGHeroInstance, const CStackInstance *(CCreatureSet:: *)(SlotID)const, &CCreatureSet::getStackPtr>::invoke, false},
|
||||
{"getOwner", LuaMethodWrapper<CGHeroInstance, PlayerColor(CGObjectInstance:: *)()const, &CGObjectInstance::getOwner>::invoke, false},
|
||||
{"getStack", LuaMethodWrapper<CGHeroInstance, decltype(&CCreatureSet::getStackPtr), &CCreatureSet::getStackPtr>::invoke, false},
|
||||
{"getOwner", LuaMethodWrapper<CGHeroInstance, decltype(&CGObjectInstance::getOwner), &CGObjectInstance::getOwner>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ class HeroInstanceProxy : public OpaqueWrapper<const CGHeroInstance, HeroInstanc
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const CGHeroInstance, HeroInstanceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -23,14 +23,12 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(HeroTypeProxy, "HeroType");
|
||||
|
||||
const std::vector<HeroTypeProxy::RegType> HeroTypeProxy::REGISTER = {};
|
||||
|
||||
const std::vector<HeroTypeProxy::CustomRegType> HeroTypeProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getIconIndex", LuaMethodWrapper<HeroType, int32_t(Entity:: *)()const, &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<HeroType, int32_t(Entity:: *)()const, &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<HeroType, const std::string &(Entity:: *)()const, &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<HeroType, const std::string &(Entity:: *)()const, &Entity::getName>::invoke, false},
|
||||
{"getIconIndex", LuaMethodWrapper<HeroType, decltype(&Entity::getIconIndex), &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<HeroType, decltype(&Entity::getIndex), &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<HeroType, decltype(&Entity::getJsonKey), &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<HeroType, decltype(&Entity::getName), &Entity::getName>::invoke, false},
|
||||
};
|
||||
|
||||
|
||||
|
@ -23,7 +23,6 @@ class HeroTypeProxy : public OpaqueWrapper<const HeroType, HeroTypeProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const HeroType, HeroTypeProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -22,15 +22,13 @@ namespace api
|
||||
{
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(ObjectInstanceProxy, "ObjectInstance");
|
||||
|
||||
const std::vector<ObjectInstanceProxy::RegType> ObjectInstanceProxy::REGISTER = {};
|
||||
|
||||
const std::vector<ObjectInstanceProxy::CustomRegType> ObjectInstanceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getOwner", LuaMethodWrapper<CGObjectInstance, PlayerColor(IObjectInterface:: *)()const, &IObjectInterface::getOwner>::invoke, false},
|
||||
{"getObjGroupIndex", LuaMethodWrapper<CGObjectInstance, int32_t(IObjectInterface:: *)()const, &IObjectInterface::getObjGroupIndex>::invoke, false},
|
||||
{"getObjTypeIndex", LuaMethodWrapper<CGObjectInstance, int32_t(IObjectInterface:: *)()const, &IObjectInterface::getObjTypeIndex>::invoke, false},
|
||||
{"getVisitablePosition", LuaMethodWrapper<CGObjectInstance, int3(IObjectInterface:: *)()const, &IObjectInterface::visitablePos>::invoke, false},
|
||||
{"getPosition", LuaMethodWrapper<CGObjectInstance, int3(IObjectInterface:: *)()const, &IObjectInterface::getPosition>::invoke, false},
|
||||
{"getOwner", LuaMethodWrapper<CGObjectInstance, decltype(&IObjectInterface::getOwner), &IObjectInterface::getOwner>::invoke, false},
|
||||
{"getObjGroupIndex", LuaMethodWrapper<CGObjectInstance, decltype(&IObjectInterface::getObjGroupIndex), &IObjectInterface::getObjGroupIndex>::invoke, false},
|
||||
{"getObjTypeIndex", LuaMethodWrapper<CGObjectInstance, decltype(&IObjectInterface::getObjTypeIndex), &IObjectInterface::getObjTypeIndex>::invoke, false},
|
||||
{"getVisitablePosition", LuaMethodWrapper<CGObjectInstance, decltype(&IObjectInterface::visitablePos), &IObjectInterface::visitablePos>::invoke, false},
|
||||
{"getPosition", LuaMethodWrapper<CGObjectInstance, decltype(IObjectInterface::getPosition), &IObjectInterface::getPosition>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ class ObjectInstanceProxy : public OpaqueWrapper<const CGObjectInstance, ObjectI
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const CGObjectInstance, ObjectInstanceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -24,10 +24,6 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(PlayerProxy, "Player");
|
||||
|
||||
const std::vector<PlayerProxy::RegType> PlayerProxy::REGISTER =
|
||||
{
|
||||
};
|
||||
|
||||
const std::vector<PlayerProxy::CustomRegType> PlayerProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
// virtual PlayerColor getColor() const = 0;
|
||||
|
@ -23,8 +23,6 @@ class PlayerProxy : public OpaqueWrapper<const Player, PlayerProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const Player, PlayerProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
};
|
||||
|
@ -22,38 +22,43 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(ServerCbProxy, "Server");
|
||||
|
||||
const std::vector<ServerCbProxy::RegType> ServerCbProxy::REGISTER =
|
||||
const std::vector<ServerCbProxy::CustomRegType> ServerCbProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{
|
||||
"addToBattleLog",
|
||||
&ServerCbProxy::apply<BattleLogMessage>
|
||||
&ServerCbProxy::apply<BattleLogMessage>,
|
||||
false
|
||||
},
|
||||
{
|
||||
"moveUnit",
|
||||
&ServerCbProxy::apply<BattleStackMoved>
|
||||
&ServerCbProxy::apply<BattleStackMoved>,
|
||||
false
|
||||
},
|
||||
{
|
||||
"changeUnits",
|
||||
&ServerCbProxy::apply<BattleUnitsChanged>
|
||||
&ServerCbProxy::apply<BattleUnitsChanged>,
|
||||
false
|
||||
},
|
||||
{
|
||||
"commitPackage",
|
||||
&ServerCbProxy::commitPackage
|
||||
&ServerCbProxy::commitPackage,
|
||||
false
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<ServerCbProxy::CustomRegType> ServerCbProxy::REGISTER_CUSTOM =
|
||||
int ServerCbProxy::commitPackage(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
};
|
||||
ServerCallback * object = nullptr;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
|
||||
lua_remove(L, 1);
|
||||
|
||||
int ServerCbProxy::commitPackage(lua_State * L, ServerCallback * object)
|
||||
{
|
||||
if(lua_isuserdata(L, 1) != 1)
|
||||
{
|
||||
lua_settop(L, 0);
|
||||
return 0;
|
||||
}
|
||||
return S.retVoid();
|
||||
|
||||
lua_getfield(L, 1, "toNetpackLight");
|
||||
lua_insert(L, 1);
|
||||
@ -61,24 +66,28 @@ int ServerCbProxy::commitPackage(lua_State * L, ServerCallback * object)
|
||||
int ret = lua_pcall(L, 1, 1, 0);
|
||||
|
||||
if(ret != 0 || !lua_islightuserdata(L, 1))
|
||||
{
|
||||
lua_settop(L, 0);
|
||||
return 0;
|
||||
}
|
||||
return S.retVoid();
|
||||
|
||||
|
||||
CPackForClient * pack = static_cast<CPackForClient *>(lua_touserdata(L, 1));
|
||||
|
||||
object->apply(pack);
|
||||
|
||||
lua_settop(L, 0);
|
||||
return 0;
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
template<typename NetPack>
|
||||
int ServerCbProxy::apply(lua_State * L, ServerCallback * object)
|
||||
int ServerCbProxy::apply(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
ServerCallback * object = nullptr;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retNil();
|
||||
|
||||
lua_remove(L, 1);
|
||||
|
||||
std::shared_ptr<NetPack> pack;
|
||||
|
||||
if(!S.tryGet(1, pack))
|
||||
|
@ -24,13 +24,11 @@ class ServerCbProxy : public OpaqueWrapper<ServerCallback, ServerCbProxy>
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<ServerCallback, ServerCbProxy>;
|
||||
|
||||
static int commitPackage(lua_State * L, ServerCallback * object);
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
template<typename NetPack>
|
||||
static int apply(lua_State * L, ServerCallback * object);
|
||||
static int apply(lua_State * L);
|
||||
static int commitPackage(lua_State * L);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -33,104 +33,64 @@ namespace api
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(ServicesProxy, "Services");
|
||||
|
||||
const std::vector<ServicesProxy::RegType> ServicesProxy::REGISTER =
|
||||
{
|
||||
{"artifacts", LuaCallWrapper<const Services>::createFunctor(&Services::artifacts)},
|
||||
{"creatures", LuaCallWrapper<const Services>::createFunctor(&Services::creatures)},
|
||||
{"factions", LuaCallWrapper<const Services>::createFunctor(&Services::factions)},
|
||||
{"heroClasses", LuaCallWrapper<const Services>::createFunctor(&Services::heroClasses)},
|
||||
{"heroTypes", LuaCallWrapper<const Services>::createFunctor(&Services::heroTypes)},
|
||||
{"spells", LuaCallWrapper<const Services>::createFunctor(&Services::spells)},
|
||||
{"skills", LuaCallWrapper<const Services>::createFunctor(&Services::skills)},
|
||||
};
|
||||
|
||||
const std::vector<ServicesProxy::CustomRegType> ServicesProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"artifacts", LuaMethodWrapper<Services, decltype(&Services::artifacts), &Services::artifacts>::invoke, false},
|
||||
{"creatures", LuaMethodWrapper<Services, decltype(&Services::creatures), &Services::creatures>::invoke, false},
|
||||
{"factions", LuaMethodWrapper<Services, decltype(&Services::factions), &Services::factions>::invoke, false},
|
||||
{"heroClasses", LuaMethodWrapper<Services, decltype(&Services::heroClasses), &Services::heroClasses>::invoke, false},
|
||||
{"heroTypes", LuaMethodWrapper<Services,decltype(&Services::heroTypes), &Services::heroTypes>::invoke, false},
|
||||
{"spells", LuaMethodWrapper<Services, decltype(&Services::spells), &Services::spells>::invoke, false},
|
||||
{"skills", LuaMethodWrapper<Services,decltype(&Services::skills), &Services::skills>::invoke, false},
|
||||
};
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(ArtifactServiceProxy, "Artifacts");
|
||||
|
||||
const std::vector<ArtifactServiceProxy::RegType> ArtifactServiceProxy::REGISTER =
|
||||
{
|
||||
{"getByIndex", LuaCallWrapper<const EntityServiceT<ArtifactID, Artifact>>::createFunctor(&ArtifactService::getByIndex)}
|
||||
};
|
||||
|
||||
const std::vector<ArtifactServiceProxy::CustomRegType> ArtifactServiceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getByIndex", LuaMethodWrapper<ArtifactService, decltype(&ArtifactService::getByIndex), &ArtifactService::getByIndex>::invoke, false}
|
||||
};
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(CreatureServiceProxy, "Creatures");
|
||||
|
||||
const std::vector<CreatureServiceProxy::RegType> CreatureServiceProxy::REGISTER =
|
||||
{
|
||||
{"getByIndex", LuaCallWrapper<const EntityServiceT<CreatureID, Creature>>::createFunctor(&CreatureService::getByIndex)}
|
||||
};
|
||||
|
||||
const std::vector<CreatureServiceProxy::CustomRegType> CreatureServiceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getByIndex", LuaMethodWrapper<CreatureService, decltype(&CreatureService::getByIndex), &CreatureService::getByIndex>::invoke, false}
|
||||
};
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(FactionServiceProxy, "Factions");
|
||||
|
||||
const std::vector<FactionServiceProxy::RegType> FactionServiceProxy::REGISTER =
|
||||
{
|
||||
{"getByIndex", LuaCallWrapper<const EntityServiceT<FactionID, Faction>>::createFunctor(&FactionService::getByIndex)}
|
||||
};
|
||||
|
||||
const std::vector<FactionServiceProxy::CustomRegType> FactionServiceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getByIndex", LuaMethodWrapper<FactionService, decltype(&FactionService::getByIndex), &FactionService::getByIndex>::invoke, false}
|
||||
};
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(HeroClassServiceProxy, "HeroClasses");
|
||||
|
||||
const std::vector<HeroClassServiceProxy::RegType> HeroClassServiceProxy::REGISTER =
|
||||
{
|
||||
{"getByIndex", LuaCallWrapper<const EntityServiceT<HeroClassID, HeroClass>>::createFunctor(&HeroClassService::getByIndex)}
|
||||
};
|
||||
|
||||
const std::vector<HeroClassServiceProxy::CustomRegType> HeroClassServiceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getByIndex", LuaMethodWrapper<HeroClassService, decltype(&HeroClassService::getByIndex), &HeroClassService::getByIndex>::invoke, false}
|
||||
};
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(HeroTypeServiceProxy, "HeroTypes");
|
||||
|
||||
const std::vector<HeroTypeServiceProxy::RegType> HeroTypeServiceProxy::REGISTER =
|
||||
{
|
||||
{"getByIndex", LuaCallWrapper<const EntityServiceT<HeroTypeID, HeroType>>::createFunctor(&HeroTypeService::getByIndex)}
|
||||
};
|
||||
|
||||
const std::vector<HeroTypeServiceProxy::CustomRegType> HeroTypeServiceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getByIndex", LuaMethodWrapper<HeroTypeService, decltype(&HeroTypeService::getByIndex), &HeroTypeService::getByIndex>::invoke, false}
|
||||
};
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(SkillServiceProxy, "Skills");
|
||||
|
||||
const std::vector<SkillServiceProxy::RegType> SkillServiceProxy::REGISTER =
|
||||
{
|
||||
{"getByIndex", LuaCallWrapper<const EntityServiceT<SecondarySkill, Skill>>::createFunctor(&SkillService::getByIndex)}
|
||||
};
|
||||
|
||||
const std::vector<SkillServiceProxy::CustomRegType> SkillServiceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getByIndex", LuaMethodWrapper<SkillService, decltype(&SkillService::getByIndex), &SkillService::getByIndex>::invoke, false}
|
||||
};
|
||||
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(SpellServiceProxy, "Spells");
|
||||
|
||||
const std::vector<SpellServiceProxy::RegType> SpellServiceProxy::REGISTER =
|
||||
{
|
||||
{"getByIndex", LuaCallWrapper<const EntityServiceT<SpellID, spells::Spell>>::createFunctor(&spells::Service::getByIndex)}
|
||||
};
|
||||
|
||||
const std::vector<SpellServiceProxy::CustomRegType> SpellServiceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getByIndex", LuaMethodWrapper<spells::Service, decltype(&spells::Service::getByIndex), &spells::Service::getByIndex>::invoke, false}
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -31,7 +31,6 @@ class ServicesProxy : public OpaqueWrapper<const Services, ServicesProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const Services, ServicesProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -39,7 +38,6 @@ class ArtifactServiceProxy : public OpaqueWrapper<const ArtifactService, Artifac
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const ArtifactService, ArtifactServiceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -47,7 +45,6 @@ class CreatureServiceProxy : public OpaqueWrapper<const CreatureService, Creatur
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const CreatureService, CreatureServiceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -55,7 +52,6 @@ class FactionServiceProxy : public OpaqueWrapper<const FactionService, FactionSe
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const FactionService, FactionServiceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -63,7 +59,6 @@ class HeroClassServiceProxy : public OpaqueWrapper<const HeroClassService, HeroC
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const HeroClassService, HeroClassServiceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -71,7 +66,6 @@ class HeroTypeServiceProxy : public OpaqueWrapper<const HeroTypeService, HeroTyp
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const HeroTypeService, HeroTypeServiceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -79,7 +73,6 @@ class SkillServiceProxy : public OpaqueWrapper<const SkillService, SkillServiceP
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const SkillService, SkillServiceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -87,7 +80,6 @@ class SpellServiceProxy : public OpaqueWrapper<const spells::Service, SpellServi
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const spells::Service, SpellServiceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -22,14 +22,12 @@ namespace api
|
||||
{
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(SkillProxy, "Skill");
|
||||
|
||||
const std::vector<SkillProxy::RegType> SkillProxy::REGISTER = {};
|
||||
|
||||
const std::vector<SkillProxy::CustomRegType> SkillProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getIconIndex", LuaMethodWrapper<Skill, int32_t(Entity:: *)()const, &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Skill, int32_t(Entity:: *)()const, &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Skill, const std::string &(Entity:: *)()const, &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Skill, const std::string &(Entity:: *)()const, &Entity::getName>::invoke, false},
|
||||
{"getIconIndex", LuaMethodWrapper<Skill, decltype(&Entity::getIconIndex), &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Skill, decltype(&Entity::getIndex), &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Skill, decltype(&Entity::getJsonKey), &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Skill, decltype(&Entity::getName), &Entity::getName>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ class SkillProxy : public OpaqueWrapper<const Skill, SkillProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const Skill, SkillProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -26,31 +26,27 @@ VCMI_REGISTER_CORE_SCRIPT_API(SpellProxy, "Spell");
|
||||
|
||||
//TODO:calculateDamage,forEachSchool
|
||||
|
||||
const std::vector<SpellProxy::RegType> SpellProxy::REGISTER =
|
||||
{
|
||||
{"getCost", LuaCallWrapper<const Spell>::createFunctor(&Spell::getCost)},
|
||||
{"getBasePower", LuaCallWrapper<const Spell>::createFunctor(&Spell::getBasePower)},
|
||||
{"getLevelPower", LuaCallWrapper<const Spell>::createFunctor(&Spell::getLevelPower)},
|
||||
{"getLevelDescription", LuaCallWrapper<const Spell>::createFunctor(&Spell::getLevelDescription)},
|
||||
};
|
||||
|
||||
const std::vector<SpellProxy::CustomRegType> SpellProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getIconIndex", LuaMethodWrapper<Spell, int32_t(Entity:: *)()const, &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Spell, int32_t(Entity:: *)()const, &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Spell, const std::string &(Entity:: *)()const, &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Spell, const std::string &(Entity:: *)()const, &Entity::getName>::invoke, false},
|
||||
{"getIconIndex", LuaMethodWrapper<Spell, decltype(&Entity::getIconIndex), &Entity::getIconIndex>::invoke, false},
|
||||
{"getIndex", LuaMethodWrapper<Spell, decltype(&Entity::getIndex), &Entity::getIndex>::invoke, false},
|
||||
{"getJsonKey", LuaMethodWrapper<Spell, decltype(&Entity::getJsonKey), &Entity::getJsonKey>::invoke, false},
|
||||
{"getName", LuaMethodWrapper<Spell, decltype(&Entity::getName), &Entity::getName>::invoke, false},
|
||||
|
||||
{"isAdventure", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isAdventure>::invoke, false},
|
||||
{"isCombat", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isCombat>::invoke, false},
|
||||
{"isCreatureAbility", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isCreatureAbility>::invoke, false},
|
||||
{"isPositive", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isPositive>::invoke, false},
|
||||
{"isNegative", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isNegative>::invoke, false},
|
||||
{"isNeutral", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isNeutral>::invoke, false},
|
||||
{"isDamage", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isDamage>::invoke, false},
|
||||
{"isOffensive", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isOffensive>::invoke, false},
|
||||
{"isSpecial", LuaMethodWrapper<Spell, bool(Spell:: *)()const, &Spell::isSpecial>::invoke, false},
|
||||
{"isAdventure", LuaMethodWrapper<Spell, decltype(&Spell::isAdventure), &Spell::isAdventure>::invoke, false},
|
||||
{"isCombat", LuaMethodWrapper<Spell, decltype(&Spell::isCombat), &Spell::isCombat>::invoke, false},
|
||||
{"isCreatureAbility", LuaMethodWrapper<Spell, decltype(&Spell::isCreatureAbility), &Spell::isCreatureAbility>::invoke, false},
|
||||
{"isPositive", LuaMethodWrapper<Spell, decltype(&Spell::isPositive), &Spell::isPositive>::invoke, false},
|
||||
{"isNegative", LuaMethodWrapper<Spell, decltype(&Spell::isNegative), &Spell::isNegative>::invoke, false},
|
||||
{"isNeutral", LuaMethodWrapper<Spell, decltype(&Spell::isNeutral), &Spell::isNeutral>::invoke, false},
|
||||
{"isDamage", LuaMethodWrapper<Spell, decltype(&Spell::isDamage), &Spell::isDamage>::invoke, false},
|
||||
{"isOffensive", LuaMethodWrapper<Spell, decltype(&Spell::isOffensive), &Spell::isOffensive>::invoke, false},
|
||||
{"isSpecial", LuaMethodWrapper<Spell, decltype(&Spell::isSpecial), &Spell::isSpecial>::invoke, false},
|
||||
|
||||
{"getCost", LuaMethodWrapper<Spell, decltype(&Spell::getCost), &Spell::getCost>::invoke, false},
|
||||
{"getBasePower", LuaMethodWrapper<Spell, decltype(&Spell::getBasePower), &Spell::getBasePower>::invoke, false},
|
||||
{"getLevelPower", LuaMethodWrapper<Spell, decltype(&Spell::getLevelPower), &Spell::getLevelPower>::invoke, false},
|
||||
{"getLevelDescription", LuaMethodWrapper<Spell, decltype(&Spell::getLevelDescription), &Spell::getLevelDescription>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ class SpellProxy : public OpaqueWrapper<const ::spells::Spell, SpellProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const ::spells::Spell, SpellProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -23,15 +23,10 @@ namespace api
|
||||
{
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(StackInstanceProxy, "StackInstance");
|
||||
|
||||
const std::vector<StackInstanceProxy::RegType> StackInstanceProxy::REGISTER =
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
const std::vector<StackInstanceProxy::CustomRegType> StackInstanceProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"getType", LuaMethodWrapper<CStackInstance, const Creature *(CStackBasicDescriptor:: *)()const, &CStackBasicDescriptor::getType>::invoke, false},
|
||||
{"getCount", LuaMethodWrapper<CStackInstance, TQuantity(CStackBasicDescriptor:: *)()const, &CStackBasicDescriptor::getCount>::invoke, false},
|
||||
{"getType", LuaMethodWrapper<CStackInstance, decltype(&CStackBasicDescriptor::getType), &CStackBasicDescriptor::getType>::invoke, false},
|
||||
{"getCount", LuaMethodWrapper<CStackInstance, decltype(&CStackBasicDescriptor::getCount), &CStackBasicDescriptor::getCount>::invoke, false},
|
||||
};
|
||||
|
||||
|
||||
|
@ -25,7 +25,6 @@ class StackInstanceProxy : public OpaqueWrapper<const CStackInstance, StackInsta
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const CStackInstance, StackInstanceProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -25,37 +25,14 @@ namespace battle
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(UnitProxy, "battle.Unit")
|
||||
|
||||
const std::vector<UnitProxy::RegType> UnitProxy::REGISTER =
|
||||
{
|
||||
{
|
||||
"getMinDamage",
|
||||
LuaCallWrapper<const IBonusBearer>::createFunctor(&IBonusBearer::getMinDamage)
|
||||
},
|
||||
{
|
||||
"getMaxDamage",
|
||||
LuaCallWrapper<const IBonusBearer>::createFunctor(&IBonusBearer::getMaxDamage)
|
||||
},
|
||||
{
|
||||
"getAttack",
|
||||
LuaCallWrapper<const IBonusBearer>::createFunctor(&IBonusBearer::getAttack)
|
||||
},
|
||||
{
|
||||
"getDefense",
|
||||
LuaCallWrapper<const IBonusBearer>::createFunctor(&IBonusBearer::getDefense)
|
||||
},
|
||||
{
|
||||
"isAlive",
|
||||
LuaCallWrapper<const Unit>::createFunctor(&Unit::alive)
|
||||
},
|
||||
{
|
||||
"unitId",
|
||||
LuaCallWrapper<const IUnitInfo>::createFunctor(&IUnitInfo::unitId)
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<UnitProxy::CustomRegType> UnitProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
|
||||
{"getMinDamage", LuaMethodWrapper<Unit, decltype(&IBonusBearer::getMinDamage), &IBonusBearer::getMinDamage>::invoke, false},
|
||||
{"getMaxDamage", LuaMethodWrapper<Unit, decltype(&IBonusBearer::getMaxDamage), &IBonusBearer::getMaxDamage>::invoke, false},
|
||||
{"getAttack", LuaMethodWrapper<Unit, decltype(&IBonusBearer::getAttack), &IBonusBearer::getAttack>::invoke, false},
|
||||
{"getDefense", LuaMethodWrapper<Unit, decltype(&IBonusBearer::getDefense), &IBonusBearer::getDefense>::invoke, false},
|
||||
{"isAlive", LuaMethodWrapper<Unit, decltype(&Unit::alive), &Unit::alive>::invoke, false},
|
||||
{"unitId", LuaMethodWrapper<Unit, decltype(&IUnitInfo::unitId), &IUnitInfo::unitId>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -28,8 +28,6 @@ class UnitProxy : public OpaqueWrapper<const Unit, UnitProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<const Unit, UnitProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -25,35 +25,13 @@ namespace events
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(ObjectVisitStartedProxy, "events.ObjectVisitStarted");
|
||||
|
||||
const std::vector<ObjectVisitStartedProxy::RegType> ObjectVisitStartedProxy::REGISTER = {};
|
||||
|
||||
const std::vector<ObjectVisitStartedProxy::CustomRegType> ObjectVisitStartedProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{
|
||||
"subscribeBefore",
|
||||
&SubscriptionRegistryProxy<ObjectVisitStartedProxy>::subscribeBefore,
|
||||
true
|
||||
},
|
||||
{
|
||||
"subscribeAfter",
|
||||
&SubscriptionRegistryProxy<ObjectVisitStartedProxy>::subscribeAfter,
|
||||
true
|
||||
},
|
||||
{
|
||||
"getPlayer",
|
||||
LuaMethodWrapper<ObjectVisitStarted, PlayerColor(ObjectVisitStarted:: *)()const, &ObjectVisitStarted::getPlayer>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getHero",
|
||||
LuaMethodWrapper<ObjectVisitStarted, ObjectInstanceID(ObjectVisitStarted:: *)()const, &ObjectVisitStarted::getHero>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getObject",
|
||||
LuaMethodWrapper<ObjectVisitStarted, ObjectInstanceID(ObjectVisitStarted:: *)()const, &ObjectVisitStarted::getObject>::invoke,
|
||||
false
|
||||
},
|
||||
{"subscribeBefore", &SubscriptionRegistryProxy<ObjectVisitStartedProxy>::subscribeBefore, true},
|
||||
{"subscribeAfter", &SubscriptionRegistryProxy<ObjectVisitStartedProxy>::subscribeAfter,true},
|
||||
{"getPlayer", LuaMethodWrapper<ObjectVisitStarted, decltype(&ObjectVisitStarted::getPlayer), &ObjectVisitStarted::getPlayer>::invoke, false},
|
||||
{"getHero", LuaMethodWrapper<ObjectVisitStarted, decltype(&ObjectVisitStarted::getHero), &ObjectVisitStarted::getHero>::invoke, false},
|
||||
{"getObject", LuaMethodWrapper<ObjectVisitStarted, decltype(&ObjectVisitStarted::getObject), &ObjectVisitStarted::getObject>::invoke, false},
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -29,7 +29,6 @@ class ObjectVisitStartedProxy : public OpaqueWrapper<ObjectVisitStarted, ObjectV
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<ObjectVisitStarted, ObjectVisitStartedProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -27,26 +27,6 @@ using ::events::ApplyDamage;
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(ApplyDamageProxy, "events.ApplyDamage");
|
||||
|
||||
const std::vector<ApplyDamageProxy::RegType> ApplyDamageProxy::REGISTER =
|
||||
{
|
||||
{
|
||||
"getInitalDamage",
|
||||
LuaCallWrapper<ApplyDamage>::createFunctor(&ApplyDamage::getInitalDamage)
|
||||
},
|
||||
{
|
||||
"getDamage",
|
||||
LuaCallWrapper<ApplyDamage>::createFunctor(&ApplyDamage::getDamage)
|
||||
},
|
||||
{
|
||||
"setDamage",
|
||||
LuaCallWrapper<ApplyDamage>::createFunctor(&ApplyDamage::setDamage)
|
||||
},
|
||||
{
|
||||
"getTarget",
|
||||
LuaCallWrapper<ApplyDamage>::createFunctor(&ApplyDamage::getTarget)
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<ApplyDamageProxy::CustomRegType> ApplyDamageProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{
|
||||
@ -58,7 +38,28 @@ const std::vector<ApplyDamageProxy::CustomRegType> ApplyDamageProxy::REGISTER_CU
|
||||
"subscribeAfter",
|
||||
&SubscriptionRegistryProxy<ApplyDamageProxy>::subscribeAfter,
|
||||
true
|
||||
}
|
||||
},
|
||||
{
|
||||
"getInitalDamage",
|
||||
LuaMethodWrapper<ApplyDamage, decltype(&ApplyDamage::getInitalDamage), &ApplyDamage::getInitalDamage>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getDamage",
|
||||
LuaMethodWrapper<ApplyDamage, decltype(&ApplyDamage::getDamage), &ApplyDamage::getDamage>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"setDamage",
|
||||
LuaMethodWrapper<ApplyDamage, decltype(&ApplyDamage::setDamage), &ApplyDamage::setDamage>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"getTarget",
|
||||
LuaMethodWrapper<ApplyDamage, decltype(&ApplyDamage::getTarget), &ApplyDamage::getTarget>::invoke,
|
||||
false
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ class ApplyDamageProxy : public OpaqueWrapper<::events::ApplyDamage, ApplyDamage
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<::events::ApplyDamage, ApplyDamageProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -24,7 +24,6 @@ namespace events
|
||||
{
|
||||
//No methods here, just an empty metatable for type safety.
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(EventBusProxy, "EventBus");
|
||||
const std::vector<EventBusProxy::RegType> EventBusProxy::REGISTER = {};
|
||||
const std::vector<EventBusProxy::CustomRegType> EventBusProxy::REGISTER_CUSTOM = {};
|
||||
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ class EventBusProxy : public OpaqueWrapper<::events::EventBus, EventBusProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<::events::EventBus, EventBusProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -30,8 +30,6 @@ VCMI_REGISTER_SCRIPT_API(GameResumedProxy, "events.GameResumed");
|
||||
VCMI_REGISTER_SCRIPT_API(PlayerGotTurnProxy, "events.PlayerGotTurn");
|
||||
VCMI_REGISTER_SCRIPT_API(TurnStartedProxy, "events.TurnStarted");
|
||||
|
||||
const std::vector<GameResumedProxy::RegType> GameResumedProxy::REGISTER = {};
|
||||
|
||||
const std::vector<GameResumedProxy::CustomRegType> GameResumedProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{
|
||||
@ -46,18 +44,6 @@ const std::vector<GameResumedProxy::CustomRegType> GameResumedProxy::REGISTER_CU
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<PlayerGotTurnProxy::RegType> PlayerGotTurnProxy::REGISTER =
|
||||
{
|
||||
{
|
||||
"getPlayer",
|
||||
LuaCallWrapper<PlayerGotTurn>::createFunctor(&PlayerGotTurn::getPlayerIndex)
|
||||
},
|
||||
{
|
||||
"setPlayer",
|
||||
LuaCallWrapper<PlayerGotTurn>::createFunctor(&PlayerGotTurn::setPlayerIndex)
|
||||
},
|
||||
};
|
||||
|
||||
const std::vector<PlayerGotTurnProxy::CustomRegType> PlayerGotTurnProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{
|
||||
@ -69,11 +55,19 @@ const std::vector<PlayerGotTurnProxy::CustomRegType> PlayerGotTurnProxy::REGISTE
|
||||
"subscribeAfter",
|
||||
&SubscriptionRegistryProxy<PlayerGotTurnProxy>::subscribeAfter,
|
||||
true
|
||||
}
|
||||
},
|
||||
{
|
||||
"getPlayer",
|
||||
LuaMethodWrapper<PlayerGotTurn, decltype(&PlayerGotTurn::getPlayerIndex), &PlayerGotTurn::getPlayerIndex>::invoke,
|
||||
false
|
||||
},
|
||||
{
|
||||
"setPlayer",
|
||||
LuaMethodWrapper<PlayerGotTurn, decltype(&PlayerGotTurn::setPlayerIndex), &PlayerGotTurn::setPlayerIndex>::invoke,
|
||||
false
|
||||
},
|
||||
};
|
||||
|
||||
const std::vector<TurnStartedProxy::RegType> TurnStartedProxy::REGISTER = {};
|
||||
|
||||
const std::vector<TurnStartedProxy::CustomRegType> TurnStartedProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{
|
||||
|
@ -27,7 +27,6 @@ class GameResumedProxy : public OpaqueWrapper<::events::GameResumed, GameResumed
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<::events::GameResumed, GameResumedProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -35,7 +34,6 @@ class PlayerGotTurnProxy : public OpaqueWrapper<::events::PlayerGotTurn, PlayerG
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<::events::PlayerGotTurn, PlayerGotTurnProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
@ -43,7 +41,6 @@ class TurnStartedProxy : public OpaqueWrapper<::events::TurnStarted, TurnStarted
|
||||
{
|
||||
public:
|
||||
using Wrapper = OpaqueWrapper<::events::TurnStarted, TurnStartedProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -21,7 +21,6 @@ namespace events
|
||||
{
|
||||
//No methods here, just an empty metatable for type safety.
|
||||
VCMI_REGISTER_CORE_SCRIPT_API(EventSubscriptionProxy, "EventSubscription");
|
||||
const std::vector<EventSubscriptionProxy::RegType> EventSubscriptionProxy::REGISTER = {};
|
||||
const std::vector<EventSubscriptionProxy::CustomRegType> EventSubscriptionProxy::REGISTER_CUSTOM = {};
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,6 @@ class EventSubscriptionProxy : public UniqueOpaqueWrapper<::events::EventSubscri
|
||||
{
|
||||
public:
|
||||
using Wrapper = UniqueOpaqueWrapper<::events::EventSubscription, EventSubscriptionProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
};
|
||||
|
||||
|
@ -24,34 +24,29 @@ namespace netpacks
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(BattleLogMessageProxy, "netpacks.BattleLogMessage");
|
||||
|
||||
const std::vector<BattleLogMessageProxy::RegType> BattleLogMessageProxy::REGISTER =
|
||||
{
|
||||
{
|
||||
"addText",
|
||||
&BattleLogMessageProxy::addText
|
||||
},
|
||||
{
|
||||
"toNetpackLight",
|
||||
&PackForClientProxy<BattleLogMessageProxy>::toNetpackLight
|
||||
},
|
||||
};
|
||||
|
||||
const std::vector<BattleLogMessageProxy::CustomRegType> BattleLogMessageProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"new", &Wrapper::constructor, true}
|
||||
{"new", &Wrapper::constructor, true},
|
||||
{"addText", &BattleLogMessageProxy::addText, false},
|
||||
{"toNetpackLight",&PackForClientProxy<BattleLogMessageProxy>::toNetpackLight, false}
|
||||
};
|
||||
|
||||
int BattleLogMessageProxy::addText(lua_State * L, std::shared_ptr<BattleLogMessage> object)
|
||||
int BattleLogMessageProxy::addText(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::string text;
|
||||
std::shared_ptr<BattleLogMessage> object;
|
||||
|
||||
if(S.tryGet(1, text))
|
||||
if(S.tryGet(1, object))
|
||||
{
|
||||
if(object->lines.empty())
|
||||
object->lines.emplace_back();
|
||||
object->lines.back() << text;
|
||||
std::string text;
|
||||
|
||||
if(S.tryGet(2, text))
|
||||
{
|
||||
if(object->lines.empty())
|
||||
object->lines.emplace_back();
|
||||
object->lines.back() << text;
|
||||
}
|
||||
}
|
||||
|
||||
return S.retVoid();
|
||||
|
@ -24,10 +24,9 @@ class BattleLogMessageProxy : public SharedWrapper<BattleLogMessage, BattleLogMe
|
||||
public:
|
||||
using Wrapper = SharedWrapper<BattleLogMessage, BattleLogMessageProxy>;
|
||||
|
||||
static const std::vector<Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int addText(lua_State * L, std::shared_ptr<BattleLogMessage> object);
|
||||
static int addText(lua_State * L);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -24,63 +24,58 @@ namespace netpacks
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(BattleStackMovedProxy, "netpacks.BattleStackMoved");
|
||||
|
||||
const std::vector<BattleStackMovedProxy::RegType> BattleStackMovedProxy::REGISTER =
|
||||
{
|
||||
{
|
||||
"addTileToMove",
|
||||
&BattleStackMovedProxy::addTileToMove
|
||||
},
|
||||
{
|
||||
"setUnitId",
|
||||
&BattleStackMovedProxy::setUnitId
|
||||
},
|
||||
{
|
||||
"setDistance",
|
||||
&BattleStackMovedProxy::setDistance
|
||||
},
|
||||
{
|
||||
"setTeleporting",
|
||||
&BattleStackMovedProxy::setTeleporting
|
||||
},
|
||||
{
|
||||
"toNetpackLight",
|
||||
&PackForClientProxy<BattleStackMovedProxy>::toNetpackLight
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<BattleStackMovedProxy::CustomRegType> BattleStackMovedProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"new", &Wrapper::constructor, true}
|
||||
{"new", &Wrapper::constructor, true},
|
||||
{"addTileToMove", &BattleStackMovedProxy::addTileToMove, false},
|
||||
{"setUnitId", &BattleStackMovedProxy::setUnitId, false},
|
||||
{"setDistance", &BattleStackMovedProxy::setDistance, false},
|
||||
{"setTeleporting", &BattleStackMovedProxy::setTeleporting, false},
|
||||
{"toNetpackLight", &PackForClientProxy<BattleStackMovedProxy>::toNetpackLight, false}
|
||||
};
|
||||
|
||||
int BattleStackMovedProxy::addTileToMove(lua_State * L, std::shared_ptr<BattleStackMoved> object)
|
||||
int BattleStackMovedProxy::addTileToMove(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<BattleStackMoved> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
lua_Integer hex = 0;
|
||||
if(!S.tryGetInteger(1, hex))
|
||||
if(!S.tryGetInteger(2, hex))
|
||||
return S.retVoid();
|
||||
object->tilesToMove.emplace_back(hex);
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int BattleStackMovedProxy::setUnitId(lua_State * L, std::shared_ptr<BattleStackMoved> object)
|
||||
int BattleStackMovedProxy::setUnitId(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
S.tryGet(1, object->stack);
|
||||
std::shared_ptr<BattleStackMoved> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
S.tryGet(2, object->stack);
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int BattleStackMovedProxy::setDistance(lua_State * L, std::shared_ptr<BattleStackMoved> object)
|
||||
int BattleStackMovedProxy::setDistance(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
S.tryGet(1, object->distance);
|
||||
std::shared_ptr<BattleStackMoved> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
S.tryGet(2, object->distance);
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int BattleStackMovedProxy::setTeleporting(lua_State * L, std::shared_ptr<BattleStackMoved> object)
|
||||
int BattleStackMovedProxy::setTeleporting(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
S.tryGet(1, object->teleporting);
|
||||
std::shared_ptr<BattleStackMoved> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
S.tryGet(2, object->teleporting);
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
|
@ -24,14 +24,12 @@ class BattleStackMovedProxy : public SharedWrapper<BattleStackMoved, BattleStack
|
||||
public:
|
||||
using Wrapper = SharedWrapper<BattleStackMoved, BattleStackMovedProxy>;
|
||||
|
||||
static const std::vector<Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int addTileToMove(lua_State * L, std::shared_ptr<BattleStackMoved> object);
|
||||
|
||||
static int setUnitId(lua_State * L, std::shared_ptr<BattleStackMoved> object);
|
||||
static int setDistance(lua_State * L, std::shared_ptr<BattleStackMoved> object);
|
||||
static int setTeleporting(lua_State * L, std::shared_ptr<BattleStackMoved> object);
|
||||
static int addTileToMove(lua_State * L);
|
||||
static int setUnitId(lua_State * L);
|
||||
static int setDistance(lua_State * L);
|
||||
static int setTeleporting(lua_State * L);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -24,49 +24,35 @@ namespace netpacks
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(BattleUnitsChangedProxy, "netpacks.BattleUnitsChanged");
|
||||
|
||||
const std::vector<BattleUnitsChangedProxy::RegType> BattleUnitsChangedProxy::REGISTER =
|
||||
{
|
||||
{
|
||||
"toNetpackLight",
|
||||
&PackForClientProxy<BattleUnitsChangedProxy>::toNetpackLight
|
||||
},
|
||||
{
|
||||
"add",
|
||||
&BattleUnitsChangedProxy::add
|
||||
},
|
||||
{
|
||||
"update",
|
||||
&BattleUnitsChangedProxy::update
|
||||
},
|
||||
{
|
||||
"resetState",
|
||||
&BattleUnitsChangedProxy::resetState
|
||||
},
|
||||
{
|
||||
"remove",
|
||||
&BattleUnitsChangedProxy::remove
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<BattleUnitsChangedProxy::CustomRegType> BattleUnitsChangedProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"new", &Wrapper::constructor, true}
|
||||
{"new", &Wrapper::constructor, true},
|
||||
{"add", &BattleUnitsChangedProxy::add, false},
|
||||
{"update", &BattleUnitsChangedProxy::update, false},
|
||||
{"resetState", &BattleUnitsChangedProxy::resetState, false},
|
||||
{"remove", &BattleUnitsChangedProxy::remove, false},
|
||||
{"toNetpackLight", &PackForClientProxy<BattleUnitsChangedProxy>::toNetpackLight, false}
|
||||
};
|
||||
|
||||
int BattleUnitsChangedProxy::add(lua_State * L, std::shared_ptr<BattleUnitsChanged> object)
|
||||
int BattleUnitsChangedProxy::add(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<BattleUnitsChanged> object;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
uint32_t id;
|
||||
|
||||
if(!S.tryGet(1, id))
|
||||
if(!S.tryGet(2, id))
|
||||
return S.retVoid();
|
||||
|
||||
UnitChanges changes(id, BattleChanges::EOperation::ADD);
|
||||
|
||||
if(!S.tryGet(2, changes.data))
|
||||
if(!S.tryGet(3, changes.data))
|
||||
return S.retVoid();
|
||||
|
||||
if(!S.tryGet(3, changes.healthDelta))
|
||||
if(!S.tryGet(4, changes.healthDelta))
|
||||
changes.healthDelta = 0;
|
||||
|
||||
object->changedStacks.push_back(changes);
|
||||
@ -74,21 +60,25 @@ int BattleUnitsChangedProxy::add(lua_State * L, std::shared_ptr<BattleUnitsChang
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int BattleUnitsChangedProxy::update(lua_State * L, std::shared_ptr<BattleUnitsChanged> object)
|
||||
int BattleUnitsChangedProxy::update(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<BattleUnitsChanged> object;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
uint32_t id;
|
||||
|
||||
if(!S.tryGet(1, id))
|
||||
if(!S.tryGet(2, id))
|
||||
return S.retVoid();
|
||||
|
||||
UnitChanges changes(id, BattleChanges::EOperation::UPDATE);
|
||||
|
||||
if(!S.tryGet(2, changes.data))
|
||||
if(!S.tryGet(3, changes.data))
|
||||
return S.retVoid();
|
||||
|
||||
if(!S.tryGet(3, changes.healthDelta))
|
||||
if(!S.tryGet(4, changes.healthDelta))
|
||||
changes.healthDelta = 0;
|
||||
|
||||
object->changedStacks.push_back(changes);
|
||||
@ -96,15 +86,25 @@ int BattleUnitsChangedProxy::update(lua_State * L, std::shared_ptr<BattleUnitsCh
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int BattleUnitsChangedProxy::resetState(lua_State * L, std::shared_ptr<BattleUnitsChanged> object)
|
||||
int BattleUnitsChangedProxy::resetState(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<BattleUnitsChanged> object;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
//todo
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int BattleUnitsChangedProxy::remove(lua_State * L, std::shared_ptr<BattleUnitsChanged> object)
|
||||
int BattleUnitsChangedProxy::remove(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<BattleUnitsChanged> object;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
//todo
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
|
@ -24,13 +24,12 @@ class BattleUnitsChangedProxy : public SharedWrapper<BattleUnitsChanged, BattleU
|
||||
public:
|
||||
using Wrapper = SharedWrapper<BattleUnitsChanged, BattleUnitsChangedProxy>;
|
||||
|
||||
static const std::vector<Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int add(lua_State * L, std::shared_ptr<BattleUnitsChanged> object);
|
||||
static int update(lua_State * L, std::shared_ptr<BattleUnitsChanged> object);
|
||||
static int resetState(lua_State * L, std::shared_ptr<BattleUnitsChanged> object);
|
||||
static int remove(lua_State * L, std::shared_ptr<BattleUnitsChanged> object);
|
||||
static int add(lua_State * L);
|
||||
static int update(lua_State * L);
|
||||
static int resetState(lua_State * L);
|
||||
static int remove(lua_State * L);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -24,39 +24,33 @@ namespace netpacks
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(EntitiesChangedProxy, "netpacks.EntitiesChanged");
|
||||
|
||||
const std::vector<EntitiesChangedProxy::RegType> EntitiesChangedProxy::REGISTER =
|
||||
{
|
||||
{
|
||||
"update",
|
||||
&EntitiesChangedProxy::update
|
||||
},
|
||||
{
|
||||
"toNetpackLight",
|
||||
&PackForClientProxy<EntitiesChangedProxy>::toNetpackLight
|
||||
},
|
||||
};
|
||||
|
||||
const std::vector<EntitiesChangedProxy::CustomRegType> EntitiesChangedProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"new", &Wrapper::constructor, true}
|
||||
{"new", &Wrapper::constructor, true},
|
||||
{"update", &EntitiesChangedProxy::update, false},
|
||||
{"toNetpackLight", &PackForClientProxy<EntitiesChangedProxy>::toNetpackLight, false}
|
||||
};
|
||||
|
||||
int EntitiesChangedProxy::update(lua_State * L, std::shared_ptr<EntitiesChanged> object)
|
||||
int EntitiesChangedProxy::update(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<EntitiesChanged> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
EntityChanges changes;
|
||||
|
||||
int32_t metaIndex = 0;
|
||||
|
||||
if(!S.tryGet(1, metaIndex))
|
||||
if(!S.tryGet(2, metaIndex))
|
||||
return S.retVoid();
|
||||
changes.metatype = static_cast<Metatype>(metaIndex);
|
||||
|
||||
if(!S.tryGet(2, changes.entityIndex))
|
||||
if(!S.tryGet(3, changes.entityIndex))
|
||||
return S.retVoid();
|
||||
|
||||
if(!S.tryGet(3, changes.data))
|
||||
if(!S.tryGet(4, changes.data))
|
||||
return S.retVoid();
|
||||
|
||||
object->changes.push_back(changes);
|
||||
|
@ -25,10 +25,9 @@ class EntitiesChangedProxy : public SharedWrapper<EntitiesChanged, EntitiesChang
|
||||
public:
|
||||
using Wrapper = SharedWrapper<EntitiesChanged, EntitiesChangedProxy>;
|
||||
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int update(lua_State * L, std::shared_ptr<EntitiesChanged> object);
|
||||
static int update(lua_State * L);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -27,96 +27,96 @@ namespace api
|
||||
namespace netpacks
|
||||
{
|
||||
|
||||
const std::vector<InfoWindowProxy::RegType> InfoWindowProxy::REGISTER =
|
||||
{
|
||||
{
|
||||
"addReplacement",
|
||||
&InfoWindowProxy::addReplacement
|
||||
},
|
||||
{
|
||||
"addText",
|
||||
&InfoWindowProxy::addText
|
||||
},
|
||||
{
|
||||
"setPlayer",
|
||||
&InfoWindowProxy::setPlayer
|
||||
},
|
||||
{
|
||||
"toNetpackLight",
|
||||
&PackForClientProxy<InfoWindowProxy>::toNetpackLight
|
||||
},
|
||||
};
|
||||
|
||||
const std::vector<InfoWindowProxy::CustomRegType> InfoWindowProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"new", &Wrapper::constructor, true}
|
||||
{"new", &Wrapper::constructor, true},
|
||||
{"addReplacement", &InfoWindowProxy::addReplacement, false},
|
||||
{"addText", &InfoWindowProxy::addText, false},
|
||||
{"setPlayer", &InfoWindowProxy::setPlayer, false},
|
||||
{"toNetpackLight", &PackForClientProxy<InfoWindowProxy>::toNetpackLight, false}
|
||||
};
|
||||
|
||||
int InfoWindowProxy::addReplacement(lua_State * L, std::shared_ptr<InfoWindow> object)
|
||||
int InfoWindowProxy::addReplacement(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<InfoWindow> object;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
int top = lua_gettop(L);
|
||||
|
||||
if(top == 1)
|
||||
if(top == 2)
|
||||
{
|
||||
if(lua_isstring(L, 1))
|
||||
if(lua_isstring(L, 2))
|
||||
{
|
||||
size_t len = 0;
|
||||
auto raw = lua_tolstring(L, 1, &len);
|
||||
auto raw = lua_tolstring(L, 2, &len);
|
||||
std::string text(raw, len);
|
||||
|
||||
object->text.addReplacement(text);
|
||||
}
|
||||
else if(lua_isnumber(L, 1))
|
||||
else if(lua_isnumber(L, 2))
|
||||
{
|
||||
object->text.addReplacement(lua_tointeger(L, 1));
|
||||
object->text.addReplacement(lua_tointeger(L, 2));
|
||||
}
|
||||
}
|
||||
else if(top >= 2)
|
||||
else if(top >= 3)
|
||||
{
|
||||
if(lua_isnumber(L, 1) && lua_isnumber(L, 2))
|
||||
object->text.addReplacement(lua_tointeger(L, 1), lua_tointeger(L, 2));
|
||||
if(lua_isnumber(L, 2) && lua_isnumber(L, 3))
|
||||
object->text.addReplacement(lua_tointeger(L, 2), lua_tointeger(L, 3));
|
||||
}
|
||||
|
||||
lua_settop(L, 0);
|
||||
return 0;
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int InfoWindowProxy::addText(lua_State * L, std::shared_ptr<InfoWindow> object)
|
||||
int InfoWindowProxy::addText(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<InfoWindow> object;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
int top = lua_gettop(L);
|
||||
|
||||
if(top == 1)
|
||||
if(top == 2)
|
||||
{
|
||||
if(lua_isstring(L, 1))
|
||||
if(lua_isstring(L, 2))
|
||||
{
|
||||
size_t len = 0;
|
||||
auto raw = lua_tolstring(L, 1, &len);
|
||||
auto raw = lua_tolstring(L, 2, &len);
|
||||
std::string text(raw, len);
|
||||
|
||||
object->text << text;
|
||||
}
|
||||
else if(lua_isnumber(L, 1))
|
||||
else if(lua_isnumber(L, 2))
|
||||
{
|
||||
object->text << (lua_tointeger(L, 1));
|
||||
object->text << (lua_tointeger(L, 2));
|
||||
}
|
||||
}
|
||||
|
||||
if(top >= 2)
|
||||
if(top >= 3)
|
||||
{
|
||||
if(lua_isnumber(L, 1) && lua_isnumber(L, 2))
|
||||
object->text.addTxt(lua_tointeger(L, 1), lua_tointeger(L, 2));
|
||||
if(lua_isnumber(L, 2) && lua_isnumber(L, 3))
|
||||
object->text.addTxt(lua_tointeger(L, 2), lua_tointeger(L, 3));
|
||||
}
|
||||
|
||||
lua_settop(L, 0);
|
||||
return 0;
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int InfoWindowProxy::setPlayer(lua_State * L, std::shared_ptr<InfoWindow> object)
|
||||
int InfoWindowProxy::setPlayer(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<InfoWindow> object;
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
PlayerColor value;
|
||||
|
||||
if(S.tryGet(1, value))
|
||||
if(S.tryGet(2, value))
|
||||
object->player = value;
|
||||
|
||||
return S.retVoid();
|
||||
|
@ -23,12 +23,11 @@ class InfoWindowProxy : public SharedWrapper<InfoWindow, InfoWindowProxy>
|
||||
{
|
||||
public:
|
||||
using Wrapper = SharedWrapper<InfoWindow, InfoWindowProxy>;
|
||||
static const std::vector<typename Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int addReplacement(lua_State * L, std::shared_ptr<InfoWindow> object);
|
||||
static int addText(lua_State * L, std::shared_ptr<InfoWindow> object);
|
||||
static int setPlayer(lua_State * L, std::shared_ptr<InfoWindow> object);
|
||||
static int addReplacement(lua_State * L);
|
||||
static int addText(lua_State * L);
|
||||
static int setPlayer(lua_State * L);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -25,8 +25,14 @@ template <typename Derived>
|
||||
class PackForClientProxy
|
||||
{
|
||||
public:
|
||||
static int toNetpackLight(lua_State * L, typename Derived::UDataType object)
|
||||
static int toNetpackLight(lua_State * L)
|
||||
{
|
||||
typename Derived::UDataType object;
|
||||
LuaStack S(L);
|
||||
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
lua_settop(L, 0);
|
||||
lua_pushlightuserdata(L, static_cast<CPackForClient *>(object.get()));
|
||||
return 1;
|
||||
|
@ -24,68 +24,85 @@ namespace netpacks
|
||||
|
||||
VCMI_REGISTER_SCRIPT_API(SetResourcesProxy, "netpacks.SetResources");
|
||||
|
||||
const std::vector<SetResourcesProxy::RegType> SetResourcesProxy::REGISTER =
|
||||
{
|
||||
{"getAbs",&SetResourcesProxy::getAbs},
|
||||
{"setAbs",&SetResourcesProxy::setAbs},
|
||||
{"getPlayer",&SetResourcesProxy::getPlayer},
|
||||
{"setPlayer",&SetResourcesProxy::setPlayer},
|
||||
{"setAmount",&SetResourcesProxy::setAmount},
|
||||
{"getAmount",&SetResourcesProxy::getAmount},
|
||||
{"clear",&SetResourcesProxy::clear},
|
||||
|
||||
{
|
||||
"toNetpackLight",
|
||||
&PackForClientProxy<SetResourcesProxy>::toNetpackLight
|
||||
},
|
||||
};
|
||||
|
||||
const std::vector<SetResourcesProxy::CustomRegType> SetResourcesProxy::REGISTER_CUSTOM =
|
||||
{
|
||||
{"new", &Wrapper::constructor, true}
|
||||
{"new", &Wrapper::constructor, true},
|
||||
{"getAbs", &SetResourcesProxy::getAbs, false},
|
||||
{"setAbs", &SetResourcesProxy::setAbs, false},
|
||||
{"getPlayer", &SetResourcesProxy::getPlayer, false},
|
||||
{"setPlayer", &SetResourcesProxy::setPlayer, false},
|
||||
{"setAmount", &SetResourcesProxy::setAmount, false},
|
||||
{"getAmount", &SetResourcesProxy::getAmount, false},
|
||||
{"clear", &SetResourcesProxy::clear, false},
|
||||
{"toNetpackLight", &PackForClientProxy<SetResourcesProxy>::toNetpackLight, false}
|
||||
};
|
||||
|
||||
int SetResourcesProxy::getAbs(lua_State * L, std::shared_ptr<SetResources> object)
|
||||
int SetResourcesProxy::getAbs(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
std::shared_ptr<SetResources> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
return LuaStack::quickRetBool(L, object->abs);
|
||||
}
|
||||
|
||||
int SetResourcesProxy::setAbs(lua_State * L, std::shared_ptr<SetResources> object)
|
||||
int SetResourcesProxy::setAbs(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<SetResources> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
|
||||
bool value = false;
|
||||
if(S.tryGet(1, value))
|
||||
if(S.tryGet(2, value))
|
||||
object->abs = value;
|
||||
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int SetResourcesProxy::getPlayer(lua_State * L, std::shared_ptr<SetResources> object)
|
||||
int SetResourcesProxy::getPlayer(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<SetResources> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
S.clear();
|
||||
S.push(object->player);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int SetResourcesProxy::setPlayer(lua_State * L, std::shared_ptr<SetResources> object)
|
||||
int SetResourcesProxy::setPlayer(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<SetResources> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
PlayerColor value;
|
||||
|
||||
if(S.tryGet(1, value))
|
||||
if(S.tryGet(2, value))
|
||||
object->player = value;
|
||||
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int SetResourcesProxy::getAmount(lua_State * L, std::shared_ptr<SetResources> object)
|
||||
int SetResourcesProxy::getAmount(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<SetResources> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
Res::ERes type = Res::ERes::INVALID;
|
||||
|
||||
if(!S.tryGet(1, type))
|
||||
if(!S.tryGet(2, type))
|
||||
return S.retVoid();
|
||||
|
||||
S.clear();
|
||||
@ -95,13 +112,17 @@ int SetResourcesProxy::getAmount(lua_State * L, std::shared_ptr<SetResources> ob
|
||||
return 1;
|
||||
}
|
||||
|
||||
int SetResourcesProxy::setAmount(lua_State * L, std::shared_ptr<SetResources> object)
|
||||
int SetResourcesProxy::setAmount(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<SetResources> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
Res::ERes type = Res::ERes::INVALID;
|
||||
|
||||
if(!S.tryGet(1, type))
|
||||
if(!S.tryGet(2, type))
|
||||
return S.retVoid();
|
||||
|
||||
int typeIdx = static_cast<int>(type);
|
||||
@ -111,7 +132,7 @@ int SetResourcesProxy::setAmount(lua_State * L, std::shared_ptr<SetResources> ob
|
||||
|
||||
TQuantity amount = 0;
|
||||
|
||||
if(!S.tryGet(2, amount))
|
||||
if(!S.tryGet(3, amount))
|
||||
return S.retVoid();
|
||||
|
||||
object->res.at(typeIdx) = amount;
|
||||
@ -119,9 +140,14 @@ int SetResourcesProxy::setAmount(lua_State * L, std::shared_ptr<SetResources> ob
|
||||
return S.retVoid();
|
||||
}
|
||||
|
||||
int SetResourcesProxy::clear(lua_State * L, std::shared_ptr<SetResources> object)
|
||||
int SetResourcesProxy::clear(lua_State * L)
|
||||
{
|
||||
LuaStack S(L);
|
||||
|
||||
std::shared_ptr<SetResources> object;
|
||||
if(!S.tryGet(1, object))
|
||||
return S.retVoid();
|
||||
|
||||
object->res.amin(0);
|
||||
object->res.positive();
|
||||
return S.retVoid();
|
||||
|
@ -24,16 +24,15 @@ class SetResourcesProxy : public SharedWrapper<SetResources, SetResourcesProxy>
|
||||
public:
|
||||
using Wrapper = SharedWrapper<SetResources, SetResourcesProxy>;
|
||||
|
||||
static const std::vector<Wrapper::RegType> REGISTER;
|
||||
static const std::vector<typename Wrapper::CustomRegType> REGISTER_CUSTOM;
|
||||
|
||||
static int getAbs(lua_State * L, std::shared_ptr<SetResources> object);
|
||||
static int setAbs(lua_State * L, std::shared_ptr<SetResources> object);
|
||||
static int getPlayer(lua_State * L, std::shared_ptr<SetResources> object);
|
||||
static int setPlayer(lua_State * L, std::shared_ptr<SetResources> object);
|
||||
static int getAmount(lua_State * L, std::shared_ptr<SetResources> object);
|
||||
static int setAmount(lua_State * L, std::shared_ptr<SetResources> object);
|
||||
static int clear(lua_State * L, std::shared_ptr<SetResources> object);
|
||||
static int getAbs(lua_State * L);
|
||||
static int setAbs(lua_State * L);
|
||||
static int getPlayer(lua_State * L);
|
||||
static int setPlayer(lua_State * L);
|
||||
static int getAmount(lua_State * L);
|
||||
static int setAmount(lua_State * L);
|
||||
static int clear(lua_State * L);
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user