diff options
| author | jacob1 <jfu614@gmail.com> | 2013-05-15 17:51:45 (GMT) |
|---|---|---|
| committer | jacob1 <jfu614@gmail.com> | 2013-05-15 17:51:45 (GMT) |
| commit | dfc33aaeeaa066ff0107b4ed68ec7756fbc5acb3 (patch) | |
| tree | 51d5c2e1fd34f26d862b6eee80e3960c3243d7c1 /src/cat | |
| parent | 94d21a1679749df49342903545192254a27f8ffc (diff) | |
| download | powder-dfc33aaeeaa066ff0107b4ed68ec7756fbc5acb3.zip powder-dfc33aaeeaa066ff0107b4ed68ec7756fbc5acb3.tar.gz | |
finish return values for the legacy api, add sim.saveStamp and sim.loadStamp
Diffstat (limited to 'src/cat')
| -rw-r--r-- | src/cat/LegacyLuaAPI.cpp | 25 | ||||
| -rw-r--r-- | src/cat/LuaScriptInterface.cpp | 43 | ||||
| -rw-r--r-- | src/cat/LuaScriptInterface.h | 2 |
3 files changed, 65 insertions, 5 deletions
diff --git a/src/cat/LegacyLuaAPI.cpp b/src/cat/LegacyLuaAPI.cpp index e2dba35..b9afd7e 100644 --- a/src/cat/LegacyLuaAPI.cpp +++ b/src/cat/LegacyLuaAPI.cpp @@ -1854,7 +1854,12 @@ int luatpt_active_menu(lua_State* l) int luatpt_decorations_enable(lua_State* l) { int decostate; - decostate = luaL_optint(l, 1, 0); + decostate = luaL_optint(l, 1, -1); + if (decostate == -1) + { + lua_pushinteger(l, luacon_model->GetDecoration()); + return 1; + } luacon_model->SetDecoration(decostate==0?false:true); luacon_model->UpdateQuickOptions(); return 0; @@ -1863,14 +1868,19 @@ int luatpt_decorations_enable(lua_State* l) int luatpt_heat(lua_State* l) { int heatstate; - heatstate = luaL_optint(l, 1, 0); + heatstate = luaL_optint(l, 1, -1); + if (heatstate == -1) + { + lua_pushinteger(l, luacon_sim->legacy_enable); + return 1; + } luacon_sim->legacy_enable = (heatstate==1?0:1); return 0; } int luatpt_cmode_set(lua_State* l) { - int cmode = luaL_optint(l, 1, 0)+1; + int cmode = luaL_optint(l, 1, 3)+1; if (cmode == 11) cmode = 0; if (cmode >= 0 && cmode <= 10) @@ -1893,8 +1903,13 @@ int luatpt_setdebug(lua_State* l) } int luatpt_setfpscap(lua_State* l) { - int fpscap = luaL_optint(l, 1, 0); - if (fpscap < 2) + int fpscap = luaL_optint(l, 1, -1); + if (fpscap == -1) + { + lua_pushinteger(l, ui::Engine::Ref().FpsLimit); + return 1; + } + else if (fpscap < 2) return luaL_error(l, "fps cap too small"); ui::Engine::Ref().FpsLimit = fpscap; return 0; diff --git a/src/cat/LuaScriptInterface.cpp b/src/cat/LuaScriptInterface.cpp index da03be5..1a600ef 100644 --- a/src/cat/LuaScriptInterface.cpp +++ b/src/cat/LuaScriptInterface.cpp @@ -456,6 +456,8 @@ void LuaScriptInterface::initSimulationAPI() {"createWallBox", simulation_createWallBox}, {"floodWalls", simulation_floodWalls}, {"clearSim", simulation_clearSim}, + {"saveStamp", simulation_saveStamp}, + {"loadStamp", simulation_loadStamp}, {NULL, NULL} }; luaL_register(l, "simulation", simulationAPIMethods); @@ -1094,6 +1096,47 @@ int LuaScriptInterface::simulation_clearSim(lua_State * l) return 0; } +int LuaScriptInterface::simulation_saveStamp(lua_State * l) +{ + int x = luaL_optint(l,1,0); + int y = luaL_optint(l,2,0); + int w = luaL_optint(l,3,XRES); + int h = luaL_optint(l,4,YRES); + std::string name = luacon_controller->StampRegion(ui::Point(x, y), ui::Point(x+w, y+h)); + lua_pushstring(l, name.c_str()); + return 1; +} + +int LuaScriptInterface::simulation_loadStamp(lua_State * l) +{ + int stamp_size, i = -1, j, x, y, ret; + SaveFile * tempfile; + x = luaL_optint(l,2,0); + y = luaL_optint(l,3,0); + if (lua_isnumber(l, 1)) //Load from stamp ID + { + i = luaL_optint(l, 1, 0); + int stampCount = Client::Ref().GetStampsCount(); + if (i < 0 || i >= stampCount) + return luaL_error(l, "Invalid stamp ID: %d", i); + tempfile = Client::Ref().GetStamp(Client::Ref().GetStamps(0, stampCount)[i]); + } + else //Load from 10 char name, or full filename + { + char * filename = (char*)luaL_optstring(l, 1, ""); + tempfile = Client::Ref().GetStamp(filename); + } + if (tempfile) + { + luacon_sim->Load(x, y, tempfile->GetGameSave()); + //luacon_sim->sys_pause = (tempfile->GetGameSave()->paused | luacon_model->GetPaused())?1:0; + lua_pushinteger(l, 1); + } + else + lua_pushnil(l); + return 1; +} + //// Begin Renderer API diff --git a/src/cat/LuaScriptInterface.h b/src/cat/LuaScriptInterface.h index 9b54688..c002f41 100644 --- a/src/cat/LuaScriptInterface.h +++ b/src/cat/LuaScriptInterface.h @@ -73,6 +73,8 @@ class LuaScriptInterface: public CommandInterface static int simulation_createWallBox(lua_State * l); static int simulation_floodWalls(lua_State * l); static int simulation_clearSim(lua_State * l); + static int simulation_saveStamp(lua_State * l); + static int simulation_loadStamp(lua_State * l); //Renderer void initRendererAPI(); |
