From cbc80de6522b5562f9490b0cdb620371f25be2f9 Mon Sep 17 00:00:00 2001 From: jacob1 Date: Wed, 29 May 2013 20:35:46 -0400 Subject: [PATCH] some new sim and ren lua api functions --- src/cat/LuaScriptInterface.cpp | 118 +++++++++++++++++++++++++++++++- src/cat/LuaScriptInterface.h | 8 +++ src/gui/game/GameController.cpp | 12 +++- src/gui/game/GameController.h | 2 + src/gui/game/GameView.cpp | 19 +++-- src/gui/game/GameView.h | 3 +- 6 files changed, 152 insertions(+), 10 deletions(-) diff --git a/src/cat/LuaScriptInterface.cpp b/src/cat/LuaScriptInterface.cpp index bce6012ee..fcfa1254d 100644 --- a/src/cat/LuaScriptInterface.cpp +++ b/src/cat/LuaScriptInterface.cpp @@ -15,6 +15,7 @@ #include "gui/dialogues/TextPrompt.h" #include "gui/dialogues/ConfirmPrompt.h" #include "simulation/Simulation.h" +#include "simulation/Air.h" #include "ToolClasses.h" #include "gui/game/GameModel.h" #include "gui/game/Tool.h" @@ -469,6 +470,13 @@ void LuaScriptInterface::initSimulationAPI() {"loadStamp", simulation_loadStamp}, {"loadSave", simulation_loadSave}, {"adjustCoords", simulation_adjustCoords}, + {"prettyPowders", simulation_prettyPowders}, + {"gravityGrid", simulation_gravityGrid}, + {"edgeMode", simulation_edgeMode}, + {"gravityMode", simulation_gravityMode}, + {"airMode", simulation_airMode}, + {"waterEqualisation", simulation_waterEqualisation}, + {"waterEqualization", simulation_waterEqualisation}, {NULL, NULL} }; luaL_register(l, "simulation", simulationAPIMethods); @@ -1317,6 +1325,86 @@ int LuaScriptInterface::simulation_adjustCoords(lua_State * l) return 2; } +int LuaScriptInterface::simulation_prettyPowders(lua_State * l) +{ + int acount = lua_gettop(l); + if (acount == 0) + { + lua_pushnumber(l, luacon_sim->pretty_powder); + return 1; + } + int prettyPowder = luaL_optint(l, 1, 0); + luacon_sim->pretty_powder = prettyPowder; + luacon_model->UpdateQuickOptions(); + return 0; +} + +int LuaScriptInterface::simulation_gravityGrid(lua_State * l) +{ + int acount = lua_gettop(l); + if (acount == 0) + { + lua_pushnumber(l, luacon_model->GetGravityGrid()); + return 1; + } + int gravityGrid = luaL_optint(l, 1, -1); + luacon_model->ShowGravityGrid(gravityGrid); + luacon_model->UpdateQuickOptions(); + return 0; +} + +int LuaScriptInterface::simulation_edgeMode(lua_State * l) +{ + int acount = lua_gettop(l); + if (acount == 0) + { + lua_pushnumber(l, luacon_model->GetEdgeMode()); + return 1; + } + int edgeMode = luaL_optint(l, 1, -1); + luacon_model->SetEdgeMode(edgeMode); + return 0; +} + +int LuaScriptInterface::simulation_gravityMode(lua_State * l) +{ + int acount = lua_gettop(l); + if (acount == 0) + { + lua_pushnumber(l, luacon_sim->gravityMode); + return 1; + } + int gravityMode = luaL_optint(l, 1, -1); + luacon_sim->gravityMode = gravityMode; + return 0; +} + +int LuaScriptInterface::simulation_airMode(lua_State * l) +{ + int acount = lua_gettop(l); + if (acount == 0) + { + lua_pushnumber(l, luacon_sim->air->airMode); + return 1; + } + int airMode = luaL_optint(l, 1, -1); + luacon_sim->air->airMode = airMode; + return 0; +} + +int LuaScriptInterface::simulation_waterEqualisation(lua_State * l) +{ + int acount = lua_gettop(l); + if (acount == 0) + { + lua_pushnumber(l, luacon_sim->water_equal_test); + return 1; + } + int waterMode = luaL_optint(l, 1, -1); + luacon_sim->water_equal_test = waterMode; + return 0; +} + //// Begin Renderer API @@ -1328,7 +1416,9 @@ void LuaScriptInterface::initRendererAPI() {"displayModes", renderer_displayModes}, {"colourMode", renderer_colourMode}, {"colorMode", renderer_colourMode}, //Duplicate of above to make Americans happy - {"decorations", renderer_decorations}, + {"decorations", renderer_decorations}, //renderer_debugHUD + {"grid", renderer_grid}, + {"debugHUD", renderer_debugHUD}, {NULL, NULL} }; luaL_register(l, "renderer", rendererAPIMethods); @@ -1486,6 +1576,32 @@ int LuaScriptInterface::renderer_decorations(lua_State * l) } } +int LuaScriptInterface::renderer_grid(lua_State * l) +{ + int acount = lua_gettop(l); + if (acount == 0) + { + lua_pushnumber(l, luacon_ren->GetGridSize()); + return 1; + } + int grid = luaL_optint(l, 1, -1); + luacon_ren->SetGridSize(grid); + return 0; +} + +int LuaScriptInterface::renderer_debugHUD(lua_State * l) +{ + int acount = lua_gettop(l); + if (acount == 0) + { + lua_pushnumber(l, luacon_controller->GetDebugHUD()); + return 1; + } + int debug = luaL_optint(l, 1, -1); + luacon_controller->SetDebugHUD(debug); + return 0; +} + void LuaScriptInterface::initElementsAPI() { //Methods diff --git a/src/cat/LuaScriptInterface.h b/src/cat/LuaScriptInterface.h index 0c868d382..899ceb647 100644 --- a/src/cat/LuaScriptInterface.h +++ b/src/cat/LuaScriptInterface.h @@ -84,6 +84,12 @@ class LuaScriptInterface: public CommandInterface static int simulation_loadStamp(lua_State * l); static int simulation_loadSave(lua_State * l); static int simulation_adjustCoords(lua_State * l); + static int simulation_prettyPowders(lua_State * l); + static int simulation_gravityGrid(lua_State * l); + static int simulation_edgeMode(lua_State * l); + static int simulation_gravityMode(lua_State * l); + static int simulation_airMode(lua_State * l); + static int simulation_waterEqualisation(lua_State * l); //Renderer void initRendererAPI(); @@ -91,6 +97,8 @@ class LuaScriptInterface: public CommandInterface static int renderer_displayModes(lua_State * l); static int renderer_colourMode(lua_State * l); static int renderer_decorations(lua_State * l); + static int renderer_grid(lua_State * l); + static int renderer_debugHUD(lua_State * l); //Elements static pim::VirtualMachine * updateVirtualMachines[PT_NUM]; diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp index d8ff3c6f5..f4992b294 100644 --- a/src/gui/game/GameController.cpp +++ b/src/gui/game/GameController.cpp @@ -661,7 +661,7 @@ bool GameController::KeyPress(int key, Uint16 character, bool shift, bool ctrl, SwitchGravity(); break; case 'd': - gameView->ToggleDebug(); + gameView->SetDebugHUD(!gameView->GetDebugHUD()); break; case 's': gameView->BeginStampSelection(); @@ -932,6 +932,16 @@ bool GameController::GetHudEnable() return gameView->GetHudEnable(); } +void GameController::SetDebugHUD(bool hudState) +{ + gameView->SetDebugHUD(hudState); +} + +bool GameController::GetDebugHUD() +{ + return gameView->GetDebugHUD(); +} + void GameController::SetActiveColourPreset(int preset) { gameModel->SetActiveColourPreset(preset); diff --git a/src/gui/game/GameController.h b/src/gui/game/GameController.h index b67df411b..cc49f3b15 100644 --- a/src/gui/game/GameController.h +++ b/src/gui/game/GameController.h @@ -101,6 +101,8 @@ public: void ShowGravityGrid(); void SetHudEnable(bool hudState); bool GetHudEnable(); + void SetDebugHUD(bool hudState); + bool GetDebugHUD(); void SetActiveMenu(int menuID); std::vector GetMenuList(); void SetActiveTool(int toolSelection, Tool * tool); diff --git a/src/gui/game/GameView.cpp b/src/gui/game/GameView.cpp index 12414c71f..a3b1fe705 100644 --- a/src/gui/game/GameView.cpp +++ b/src/gui/game/GameView.cpp @@ -595,6 +595,18 @@ bool GameView::GetHudEnable() return showHud; } +void GameView::SetDebugHUD(bool mode) +{ + showDebug = mode; + if (ren) + ren->debugLines = showDebug; +} + +bool GameView::GetDebugHUD() +{ + return showDebug; +} + ui::Point GameView::GetMousePosition() { return mousePosition; @@ -1201,13 +1213,6 @@ void GameView::OnMouseWheel(int x, int y, int d) } } -void GameView::ToggleDebug() -{ - showDebug = !showDebug; - if (ren) - ren->debugLines = showDebug; -} - void GameView::BeginStampSelection() { selectMode = SelectStamp; diff --git a/src/gui/game/GameView.h b/src/gui/game/GameView.h index 328b67cfd..08709df2e 100644 --- a/src/gui/game/GameView.h +++ b/src/gui/game/GameView.h @@ -131,10 +131,11 @@ public: void SetSample(SimulationSample sample); void SetHudEnable(bool hudState); bool GetHudEnable(); + void SetDebugHUD(bool mode); + bool GetDebugHUD(); bool CtrlBehaviour(){ return ctrlBehaviour; } bool ShiftBehaviour(){ return shiftBehaviour; } void ExitPrompt(); - void ToggleDebug(); SelectMode GetSelectMode() { return selectMode; } void BeginStampSelection();