some new sim and ren lua api functions

This commit is contained in:
jacob1
2013-05-29 20:35:46 -04:00
parent d29b001d82
commit cbc80de652
6 changed files with 152 additions and 10 deletions

View File

@@ -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

View File

@@ -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];

View File

@@ -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);

View File

@@ -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<Menu*> GetMenuList();
void SetActiveTool(int toolSelection, Tool * tool);

View File

@@ -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;

View File

@@ -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();