From 7d9329ecfe84733cdefa34eab25ee3d124c94c59 Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Thu, 28 Mar 2013 21:40:44 +0100 Subject: New damage system, add damageGroups to ToolCapabilities, bump protocol version --- src/scriptapi_common.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/scriptapi_common.cpp') diff --git a/src/scriptapi_common.cpp b/src/scriptapi_common.cpp index 8ee8d6a84..2d6f6c72b 100644 --- a/src/scriptapi_common.cpp +++ b/src/scriptapi_common.cpp @@ -117,6 +117,20 @@ ToolCapabilities read_tool_capabilities( } } lua_pop(L, 1); + lua_getfield(L, table, "damage_groups"); + if(lua_istable(L, -1)){ + int table_damage_groups = lua_gettop(L); + lua_pushnil(L); + while(lua_next(L, table_damage_groups) != 0){ + // key at index -2 and value at index -1 + std::string groupname = luaL_checkstring(L, -2); + u16 value = luaL_checkinteger(L, -1); + toolcap.damageGroups[groupname] = value; + // removes value, keeps key for next iteration + lua_pop(L, 1); + } + } + lua_pop(L, 1); return toolcap; } @@ -154,6 +168,16 @@ void set_tool_capabilities(lua_State *L, int table, } // Set groupcaps table lua_setfield(L, -2, "groupcaps"); + //Create damage_groups table + lua_newtable(L); + // For each damage group + for(std::map::const_iterator + i = toolcap.damageGroups.begin(); i != toolcap.damageGroups.end(); i++){ + // Create damage group table + lua_pushinteger(L, i->second); + lua_setfield(L, -2, i->first.c_str()); + } + lua_setfield(L, -2, "damage_groups"); } void push_tool_capabilities(lua_State *L, -- cgit v1.2.3