From 0f25276e6fd96d93e29ee87e488e34e3e87a9cee Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Mon, 21 May 2012 20:15:37 +0000 Subject: [PATCH] - applied patch from MuwuM --- source/glest_game/game/script_manager.cpp | 12 ++++++++++++ source/glest_game/game/script_manager.h | 2 ++ source/glest_game/world/world.cpp | 7 +++++++ source/glest_game/world/world.h | 1 + 4 files changed, 22 insertions(+) diff --git a/source/glest_game/game/script_manager.cpp b/source/glest_game/game/script_manager.cpp index d86af571..1bf00c25 100644 --- a/source/glest_game/game/script_manager.cpp +++ b/source/glest_game/game/script_manager.cpp @@ -309,6 +309,7 @@ void ScriptManager::init(World* world, GameCamera *gameCamera, const XmlNode *ro luaScript.registerFunction(setUnitPosition, "setUnitPosition"); luaScript.registerFunction(getUnitFaction, "unitFaction"); + luaScript.registerFunction(getUnitName, "unitName"); luaScript.registerFunction(getResourceAmount, "resourceAmount"); luaScript.registerFunction(getLastCreatedUnitName, "lastCreatedUnitName"); @@ -1258,6 +1259,11 @@ int ScriptManager::getUnitFaction(int unitId) { ScriptManager_STREFLOP_Wrapper streflopWrapper; return world->getUnitFactionIndex(unitId); } +const string ScriptManager::getUnitName(int unitId) { + if(SystemFlags::getSystemSettingType(SystemFlags::debugLUA).enabled) SystemFlags::OutputDebug(SystemFlags::debugLUA,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + ScriptManager_STREFLOP_Wrapper streflopWrapper; + return world->getUnitName(unitId); +} int ScriptManager::getResourceAmount(const string &resourceName, int factionIndex) { if(SystemFlags::getSystemSettingType(SystemFlags::debugLUA).enabled) SystemFlags::OutputDebug(SystemFlags::debugLUA,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); @@ -1781,6 +1787,12 @@ int ScriptManager::getUnitFaction(LuaHandle* luaHandle){ luaArguments.returnInt(factionIndex); return luaArguments.getReturnCount(); } +int ScriptManager::getUnitName(LuaHandle* luaHandle){ + LuaArguments luaArguments(luaHandle); + const string unitname = thisScriptManager->getUnitName(luaArguments.getInt(-1)); + luaArguments.returnString(unitname); + return luaArguments.getReturnCount(); +} int ScriptManager::getResourceAmount(LuaHandle* luaHandle){ LuaArguments luaArguments(luaHandle); diff --git a/source/glest_game/game/script_manager.h b/source/glest_game/game/script_manager.h index 8d0d78ea..b17f12fd 100644 --- a/source/glest_game/game/script_manager.h +++ b/source/glest_game/game/script_manager.h @@ -304,6 +304,7 @@ private: Vec2i getStartLocation(int factionIndex); Vec2i getUnitPosition(int unitId); int getUnitFaction(int unitId); + const string getUnitName(int unitId); int getResourceAmount(const string &resourceName, int factionIndex); const string &getLastCreatedUnitName(); int getLastCreatedUnitId(); @@ -410,6 +411,7 @@ private: static int getStartLocation(LuaHandle* luaHandle); static int getUnitPosition(LuaHandle* luaHandle); static int getUnitFaction(LuaHandle* luaHandle); + static int getUnitName(LuaHandle* luaHandle); static int getResourceAmount(LuaHandle* luaHandle); static int getLastCreatedUnitName(LuaHandle* luaHandle); static int getLastCreatedUnitId(LuaHandle* luaHandle); diff --git a/source/glest_game/world/world.cpp b/source/glest_game/world/world.cpp index 2d6f4842..82738ed7 100644 --- a/source/glest_game/world/world.cpp +++ b/source/glest_game/world/world.cpp @@ -1285,6 +1285,13 @@ int World::getUnitFactionIndex(int unitId) { } return unit->getFactionIndex(); } +const string World::getUnitName(int unitId) { + Unit* unit= findUnitById(unitId); + if(unit == NULL) { + throw megaglest_runtime_error("Can not find Faction unit to get position unitId = " + intToStr(unitId)); + } + return unit->getFullName(); +} int World::getUnitCount(int factionIndex) { if(factionIndex < factions.size()) { diff --git a/source/glest_game/world/world.h b/source/glest_game/world/world.h index 9497ae8f..1c9db8fe 100644 --- a/source/glest_game/world/world.h +++ b/source/glest_game/world/world.h @@ -248,6 +248,7 @@ public: void setUnitPosition(int unitId, Vec2i pos); int getUnitFactionIndex(int unitId); + const string getUnitName(int unitId); int getUnitCount(int factionIndex); int getUnitCountOfType(int factionIndex, const string &typeName);