diff options
| author | Alexander Gavrilov | 2012-04-26 12:03:56 +0400 |
|---|---|---|
| committer | Alexander Gavrilov | 2012-04-26 12:03:56 +0400 |
| commit | 6ab270d129e098f0200824a798ad2117a6ec33c8 (patch) | |
| tree | 810653df30a44eb8054587e85da91b1a2eb72883 /library/LuaApi.cpp | |
| parent | 9489c6ed1afd33790adc2e0b4e3c0152da8203e0 (diff) | |
| download | dfhack-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.cpp | 31 |
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 } }; |
