Files
WickedEngine/WickedEngine/wiSprite_BindLua.cpp
T
2015-10-24 15:55:16 +02:00

134 lines
2.6 KiB
C++

#include "wiSprite_BindLua.h"
#include "wiImageEffects_BindLua.h"
#include "SpriteAnim_BindLua.h"
const char wiSprite_BindLua::className[] = "Sprite";
Luna<wiSprite_BindLua>::FunctionType wiSprite_BindLua::methods[] = {
lunamethod(wiSprite_BindLua, SetEffects),
lunamethod(wiSprite_BindLua, GetEffects),
lunamethod(wiSprite_BindLua, SetAnim),
lunamethod(wiSprite_BindLua, GetAnim),
lunamethod(wiSprite_BindLua, Destroy),
{ NULL, NULL }
};
Luna<wiSprite_BindLua>::PropertyType wiSprite_BindLua::properties[] = {
{ NULL, NULL }
};
wiSprite_BindLua::wiSprite_BindLua(wiSprite* sprite) :sprite(sprite)
{
}
wiSprite_BindLua::wiSprite_BindLua(lua_State *L)
{
string name = "", mask = "", normal = "";
int argc = wiLua::SGetArgCount(L);
if (argc > 0)
{
name = wiLua::SGetString(L, 1);
if (argc > 1)
{
mask = wiLua::SGetString(L, 2);
if (argc > 2)
{
normal = wiLua::SGetString(L, 3);
}
}
}
sprite = new wiSprite(name, mask, normal);
}
wiSprite_BindLua::~wiSprite_BindLua()
{
}
int wiSprite_BindLua::SetEffects(lua_State *L)
{
if (sprite == nullptr)
{
wiLua::SError(L, "GetEffects() sprite is null!");
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 0)
{
wiImageEffects_BindLua* effects = Luna<wiImageEffects_BindLua>::check(L, 1);
if (effects != nullptr)
{
sprite->effects = effects->effects;
}
}
else
{
wiLua::SError(L, "SetEffects(ImageEffects effects) not enough arguments!");
}
return 0;
}
int wiSprite_BindLua::GetEffects(lua_State *L)
{
if (sprite == nullptr)
{
wiLua::SError(L, "GetEffects() sprite is null!");
return 0;
}
Luna<wiImageEffects_BindLua>::push(L, new wiImageEffects_BindLua(sprite->effects));
return 1;
}
int wiSprite_BindLua::SetAnim(lua_State *L)
{
if (sprite == nullptr)
{
wiLua::SError(L, "SetAnim() sprite is null!");
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 0)
{
SpriteAnim_BindLua* anim = Luna<SpriteAnim_BindLua>::check(L, 1);
if (anim != nullptr)
{
sprite->anim = anim->anim;
}
}
else
{
wiLua::SError(L, "SetAnim(SpriteAnim anim) not enough arguments!");
}
return 0;
}
int wiSprite_BindLua::GetAnim(lua_State *L)
{
if (sprite == nullptr)
{
wiLua::SError(L, "GetAnim() sprite is null!");
return 0;
}
Luna<SpriteAnim_BindLua>::push(L, new SpriteAnim_BindLua(sprite->anim));
return 1;
}
int wiSprite_BindLua::Destroy(lua_State* L)
{
if (sprite != nullptr)
{
sprite->CleanUp();
delete sprite;
sprite = nullptr;
}
return 0;
}
void wiSprite_BindLua::Bind()
{
static bool initialized = false;
if (!initialized)
{
initialized = true;
Luna<wiSprite_BindLua>::Register(wiLua::GetGlobal()->GetLuaState());
}
}