/* * BonusSystem.h, part of VCMI engine * * Authors: listed in file AUTHORS in main folder * * License: GNU General Public License v2.0 or later * Full text of license available in license.txt file, in main folder * */ #pragma once #include "../LuaWrapper.h" class Bonus; class BonusList; class IBonusBearer; namespace scripting { namespace api { class BonusProxy : public SharedWrapper { public: using Wrapper = SharedWrapper; static const std::vector REGISTER; static const std::vector REGISTER_CUSTOM; static int getType(lua_State * L, std::shared_ptr object); static int getSubtype(lua_State * L, std::shared_ptr object); static int getDuration(lua_State * L, std::shared_ptr object); static int getTurns(lua_State * L, std::shared_ptr object); static int getValueType(lua_State * L, std::shared_ptr object); static int getVal(lua_State * L, std::shared_ptr object); static int getSource(lua_State * L, std::shared_ptr object); static int getSourceID(lua_State * L, std::shared_ptr object); static int getDescription(lua_State * L, std::shared_ptr object); static int getEffectRange(lua_State * L, std::shared_ptr object); static int getStacking(lua_State * L, std::shared_ptr object); static int toJsonNode(lua_State * L, std::shared_ptr object); protected: virtual void adjustStaticTable(lua_State * L) const override; }; class BonusListProxy : public SharedWrapper { public: using Wrapper = SharedWrapper; static const std::vector REGISTER; static const std::vector REGISTER_CUSTOM; static int index(lua_State * L); protected: virtual void adjustMetatable(lua_State * L) const override; }; class BonusBearerProxy : public OpaqueWrapper { public: using Wrapper = OpaqueWrapper; static int getBonuses(lua_State * L, const IBonusBearer * object); static const std::vector REGISTER; static const std::vector REGISTER_CUSTOM; }; } }