summaryrefslogtreecommitdiff
path: root/src/scripting/luautil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/scripting/luautil.cpp')
-rw-r--r--src/scripting/luautil.cpp66
1 files changed, 19 insertions, 47 deletions
diff --git a/src/scripting/luautil.cpp b/src/scripting/luautil.cpp
index 261acd16..ea0e3ddc 100644
--- a/src/scripting/luautil.cpp
+++ b/src/scripting/luautil.cpp
@@ -121,23 +121,6 @@ Script *getScript(lua_State *s)
valid in the map.
TODO: do it. */
-Entity *getBeing(lua_State *s, int p)
-{
- if (!lua_islightuserdata(s, p))
- return 0;
- return static_cast<Entity *>(lua_touserdata(s, p));
-}
-
-Entity *getCharacter(lua_State *s, int p)
-{
- if (!lua_islightuserdata(s, p))
- return 0;
- Entity *t = static_cast<Entity *>(lua_touserdata(s, p));
- if (t->getType() != OBJECT_CHARACTER)
- return 0;
- return static_cast<Entity *>(t);
-}
-
ItemClass *getItemClass(lua_State *s, int p)
{
ItemClass *itemClass = 0;
@@ -158,16 +141,6 @@ ItemClass *getItemClass(lua_State *s, int p)
return itemClass;
}
-Entity *getMonster(lua_State *s, int p)
-{
- if (!lua_islightuserdata(s, p))
- return 0;
- Entity *t = static_cast<Entity *>(lua_touserdata(s, p));
- if (t->getType() != OBJECT_MONSTER)
- return 0;
- return t;
-}
-
MonsterClass *getMonsterClass(lua_State *s, int p)
{
MonsterClass *monsterClass = 0;
@@ -188,29 +161,28 @@ MonsterClass *getMonsterClass(lua_State *s, int p)
return monsterClass;
}
-Entity *getNpc(lua_State *s, int p)
+
+Entity *checkActor(lua_State *s, int p)
{
- if (!lua_islightuserdata(s, p))
- return 0;
- Entity *t = static_cast<Entity *>(lua_touserdata(s, p));
- if (t->getType() != OBJECT_NPC)
- return 0;
- return t;
+ Entity *entity = LuaEntity::check(s, p);
+ luaL_argcheck(s, entity->hasComponent<ActorComponent>(), p,
+ "entity has no actor component");
+ return entity;
}
-
Entity *checkBeing(lua_State *s, int p)
{
- Entity *being = getBeing(s, p);
- luaL_argcheck(s, being, p, "being expected");
- return being;
+ Entity *entity = LuaEntity::check(s, p);
+ luaL_argcheck(s, entity->hasComponent<BeingComponent>(), p,
+ "entity has no being component");
+ return entity;
}
Entity *checkCharacter(lua_State *s, int p)
{
- Entity *character = getCharacter(s, p);
- luaL_argcheck(s, character, p, "character expected");
- return character;
+ Entity *entity = LuaEntity::check(s, p);
+ luaL_argcheck(s, entity->getType() == OBJECT_CHARACTER, p, "character expected");
+ return entity;
}
ItemClass *checkItemClass(lua_State *s, int p)
@@ -222,9 +194,9 @@ ItemClass *checkItemClass(lua_State *s, int p)
Entity *checkMonster(lua_State *s, int p)
{
- Entity *monster = getMonster(s, p);
- luaL_argcheck(s, monster, p, "monster expected");
- return monster;
+ Entity *entity = LuaEntity::check(s, p);
+ luaL_argcheck(s, entity->getType() == OBJECT_MONSTER, p, "monster expected");
+ return entity;
}
MonsterClass *checkMonsterClass(lua_State *s, int p)
@@ -236,9 +208,9 @@ MonsterClass *checkMonsterClass(lua_State *s, int p)
Entity *checkNpc(lua_State *s, int p)
{
- Entity *npc = getNpc(s, p);
- luaL_argcheck(s, npc, p, "npc expected");
- return npc;
+ Entity *entity = LuaEntity::check(s, p);
+ luaL_argcheck(s, entity->getType() == OBJECT_NPC, p, "npc expected");
+ return entity;
}
int checkSkill(lua_State *s, int p)