From 71f90b5d59e78de54a3e7cedb7ae9607ab1f26ee Mon Sep 17 00:00:00 2001 From: jacob1 Date: Thu, 20 Feb 2014 16:02:32 -0500 Subject: [PATCH] new function: sim.deleteStamp mostly for use in tpt multiplayer --- src/lua/LuaScriptInterface.cpp | 31 ++++++++++++++++++++++++++++++- src/lua/LuaScriptInterface.h | 1 + 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/lua/LuaScriptInterface.cpp b/src/lua/LuaScriptInterface.cpp index a8fbda0a5..c358859cb 100644 --- a/src/lua/LuaScriptInterface.cpp +++ b/src/lua/LuaScriptInterface.cpp @@ -475,6 +475,7 @@ void LuaScriptInterface::initSimulationAPI() {"resetPressure", simulation_resetPressure}, {"saveStamp", simulation_saveStamp}, {"loadStamp", simulation_loadStamp}, + {"deleteStamp", simulation_deleteStamp}, {"loadSave", simulation_loadSave}, {"getSaveID", simulation_getSaveID}, {"adjustCoords", simulation_adjustCoords}, @@ -1344,7 +1345,7 @@ int LuaScriptInterface::simulation_saveStamp(lua_State * l) int LuaScriptInterface::simulation_loadStamp(lua_State * l) { - int stamp_size, i = -1, j, x, y, ret; + int i = -1, j, x, y; SaveFile * tempfile; x = luaL_optint(l,2,0); y = luaL_optint(l,3,0); @@ -1377,6 +1378,34 @@ int LuaScriptInterface::simulation_loadStamp(lua_State * l) return 1; } +int LuaScriptInterface::simulation_deleteStamp(lua_State * l) +{ + int stampCount = Client::Ref().GetStampsCount(); + std::vector stamps = Client::Ref().GetStamps(0, stampCount); + + if (lua_isnumber(l, 1)) //Load from stamp ID + { + int i = luaL_optint(l, 1, 0); + if (i < 0 || i >= stampCount) + return luaL_error(l, "Invalid stamp ID: %d", i); + Client::Ref().DeleteStamp(stamps[i]); + return 0; + } + else //Load from 10 char name, or full filename + { + char * filename = (char*)luaL_optstring(l, 1, ""); + for (std::vector::const_iterator iterator = stamps.begin(), end = stamps.end(); iterator != end; ++iterator) + { + if (*iterator == filename) + { + Client::Ref().DeleteStamp(*iterator); + return 0; + } + } + return luaL_error(l, "Invalid stamp Name: %s", filename); + } +} + int LuaScriptInterface::simulation_loadSave(lua_State * l) { int saveID = luaL_optint(l,1,0); diff --git a/src/lua/LuaScriptInterface.h b/src/lua/LuaScriptInterface.h index b99d18cc9..648d0b5bb 100644 --- a/src/lua/LuaScriptInterface.h +++ b/src/lua/LuaScriptInterface.h @@ -86,6 +86,7 @@ class LuaScriptInterface: public CommandInterface static int simulation_resetPressure(lua_State * l); static int simulation_saveStamp(lua_State * l); static int simulation_loadStamp(lua_State * l); + static int simulation_deleteStamp(lua_State * l); static int simulation_loadSave(lua_State * l); static int simulation_getSaveID(lua_State * l); static int simulation_adjustCoords(lua_State * l);