summaryrefslogtreecommitdiff
path: root/src/cat
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2013-05-15 17:51:45 (GMT)
committer jacob1 <jfu614@gmail.com>2013-05-15 17:51:45 (GMT)
commitdfc33aaeeaa066ff0107b4ed68ec7756fbc5acb3 (patch)
tree51d5c2e1fd34f26d862b6eee80e3960c3243d7c1 /src/cat
parent94d21a1679749df49342903545192254a27f8ffc (diff)
downloadpowder-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.cpp25
-rw-r--r--src/cat/LuaScriptInterface.cpp43
-rw-r--r--src/cat/LuaScriptInterface.h2
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();