summaryrefslogtreecommitdiff
path: root/library/LuaApi.cpp
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-04-26 12:03:56 +0400
committerAlexander Gavrilov2012-04-26 12:03:56 +0400
commit6ab270d129e098f0200824a798ad2117a6ec33c8 (patch)
tree810653df30a44eb8054587e85da91b1a2eb72883 /library/LuaApi.cpp
parent9489c6ed1afd33790adc2e0b4e3c0152da8203e0 (diff)
downloaddfhack-6ab270d129e098f0200824a798ad2117a6ec33c8.tar.gz
dfhack-6ab270d129e098f0200824a798ad2117a6ec33c8.tar.bz2
dfhack-6ab270d129e098f0200824a798ad2117a6ec33c8.tar.xz
Retrieve unit noble position info, and use it in getProfessionName.
Diffstat (limited to 'library/LuaApi.cpp')
-rw-r--r--library/LuaApi.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/library/LuaApi.cpp b/library/LuaApi.cpp
index 71df50e2..8c56379a 100644
--- a/library/LuaApi.cpp
+++ b/library/LuaApi.cpp
@@ -61,6 +61,10 @@ distribution.
#include "df/assumed_identity.h"
#include "df/nemesis_record.h"
#include "df/historical_figure.h"
+#include "df/historical_entity.h"
+#include "df/entity_position.h"
+#include "df/entity_position_assignment.h"
+#include "df/histfig_entity_link_positionst.h"
#include "df/plant_raw.h"
#include "df/creature_raw.h"
#include "df/inorganic_raw.h"
@@ -628,8 +632,35 @@ static int units_getPosition(lua_State *state)
return Lua::PushPosXYZ(state, Units::getPosition(Lua::CheckDFObject<df::unit>(state,1)));
}
+static int units_getNoblePositions(lua_State *state)
+{
+ std::vector<Units::NoblePosition> np;
+
+ if (Units::getNoblePositions(&np, Lua::CheckDFObject<df::unit>(state,1)))
+ {
+ lua_createtable(state, np.size(), 0);
+
+ for (size_t i = 0; i < np.size(); i++)
+ {
+ lua_createtable(state, 0, 3);
+ Lua::PushDFObject(state, np[i].entity);
+ lua_setfield(state, -2, "entity");
+ Lua::PushDFObject(state, np[i].assignment);
+ lua_setfield(state, -2, "assignment");
+ Lua::PushDFObject(state, np[i].position);
+ lua_setfield(state, -2, "position");
+ lua_rawseti(state, -2, i+1);
+ }
+ }
+ else
+ lua_pushnil(state);
+
+ return 1;
+}
+
static const luaL_Reg dfhack_units_funcs[] = {
{ "getPosition", units_getPosition },
+ { "getNoblePositions", units_getNoblePositions },
{ NULL, NULL }
};