diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-02-12 15:09:25 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-02-12 15:09:25 (GMT) |
| commit | 5546f7d01e87a8fcbd8ea5c9e13162ccd474d7e8 (patch) | |
| tree | e9f70416adf08092eee325ca0d3f2e6bca38e936 /src/game | |
| parent | ec6d1012b263049241984dfc96fae37f4280e7eb (diff) | |
| download | powder-5546f7d01e87a8fcbd8ea5c9e13162ccd474d7e8.zip powder-5546f7d01e87a8fcbd8ea5c9e13162ccd474d7e8.tar.gz | |
Fixed some lua methods, set decorations enabled by default, allow toggling of decorations with ctrl+b, saving and loading of render, display and colour modes for the renderer
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/GameController.cpp | 10 | ||||
| -rw-r--r-- | src/game/GameController.h | 2 | ||||
| -rw-r--r-- | src/game/GameModel.cpp | 81 | ||||
| -rw-r--r-- | src/game/GameModel.h | 3 | ||||
| -rw-r--r-- | src/game/GameView.cpp | 4 |
5 files changed, 100 insertions, 0 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 7f6addd..e6baa5e 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -282,6 +282,16 @@ void GameController::SetPaused() gameModel->SetPaused(!gameModel->GetPaused()); } +void GameController::SetDecoration(bool decorationState) +{ + gameModel->SetDecoration(decorationState); +} + +void GameController::SetDecoration() +{ + gameModel->SetDecoration(!gameModel->GetDecoration()); +} + void GameController::SetActiveMenu(Menu * menu) { gameModel->SetActiveMenu(menu); diff --git a/src/game/GameController.h b/src/game/GameController.h index 559f0c1..16bf47c 100644 --- a/src/game/GameController.h +++ b/src/game/GameController.h @@ -52,6 +52,8 @@ public: void Update(); void SetPaused(bool pauseState); void SetPaused(); + void SetDecoration(bool decorationState); + void SetDecoration(); void SetActiveMenu(Menu * menu); void SetActiveTool(int toolSelection, Tool * tool); void OpenSearch(); diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index 6fc9dea..80b56f8 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -19,6 +19,44 @@ GameModel::GameModel(): sim = new Simulation(); ren = new Renderer(ui::Engine::Ref().g, sim); + //Load config into renderer + try + { + json::Number tempNumber = Client::Ref().configDocument["Renderer"]["ColourMode"]; + if(tempNumber.Value()) + ren->SetColourMode(tempNumber.Value()); + + json::Array tempArray = Client::Ref().configDocument["Renderer"]["DisplayModes"]; + if(tempArray.Size()) + { + std::vector<unsigned int> displayModes; + json::Array::const_iterator itDisplayModes(tempArray.Begin()), itDisplayModesEnd(tempArray.End()); + for (; itDisplayModes != itDisplayModesEnd; ++itDisplayModes) + { + json::Number tempNumberI = *itDisplayModes; + displayModes.push_back(tempNumberI.Value()); + } + ren->SetDisplayMode(displayModes); + } + + tempArray = Client::Ref().configDocument["Renderer"]["RenderModes"]; + if(tempArray.Size()) + { + std::vector<unsigned int> renderModes; + json::Array::const_iterator itRenderModes(tempArray.Begin()), itRenderModesEnd(tempArray.End()); + for (; itRenderModes != itRenderModesEnd; ++itRenderModes) + { + json::Number tempNumberI = *itRenderModes; + renderModes.push_back(tempNumberI.Value()); + } + ren->SetRenderMode(renderModes); + } + } + catch(json::Exception & e) + { + + } + menuList.clear(); for(int i = 0; i < 12; i++) { @@ -71,6 +109,30 @@ GameModel::GameModel(): GameModel::~GameModel() { + //Save to config: + try + { + Client::Ref().configDocument["Renderer"]["ColourMode"] = json::Number(ren->GetColourMode()); + + ((json::Array)Client::Ref().configDocument["Renderer"]["DisplayModes"]).Clear(); + std::vector<unsigned int> displayModes = ren->GetDisplayMode(); + for (int i = 0; i < displayModes.size(); i++) + { + Client::Ref().configDocument["Renderer"]["DisplayModes"][i] = json::Number(displayModes[i]); + } + + ((json::Array)Client::Ref().configDocument["Renderer"]["RenderModes"]).Clear(); + std::vector<unsigned int> renderModes = ren->GetRenderMode(); + for (int i = 0; i < renderModes.size(); i++) + { + Client::Ref().configDocument["Renderer"]["RenderModes"][i] = json::Number(renderModes[i]); + } + } + catch(json::Exception & e) + { + + } + for(int i = 0; i < menuList.size(); i++) { for(int j = 0; i < menuList[i]->GetToolList().size(); i++) @@ -277,6 +339,17 @@ bool GameModel::GetPaused() return sim->sys_pause?true:false; } +void GameModel::SetDecoration(bool decorationState) +{ + ren->decorations_enable = decorationState?1:0; + notifyDecorationChanged(); +} + +bool GameModel::GetDecoration() +{ + return ren->decorations_enable?true:false; +} + void GameModel::FrameStep(int frames) { sim->framerender += frames; @@ -319,6 +392,14 @@ void GameModel::notifyPausedChanged() } } +void GameModel::notifyDecorationChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + //observers[i]->NotifyPausedChanged(this); + } +} + void GameModel::notifyBrushChanged() { for(int i = 0; i < observers.size(); i++) diff --git a/src/game/GameModel.h b/src/game/GameModel.h index 170d1ed..e77b62e 100644 --- a/src/game/GameModel.h +++ b/src/game/GameModel.h @@ -45,6 +45,7 @@ private: void notifyRendererChanged(); void notifySimulationChanged(); void notifyPausedChanged(); + void notifyDecorationChanged(); void notifySaveChanged(); void notifyBrushChanged(); void notifyMenuListChanged(); @@ -65,6 +66,8 @@ public: void SetActiveTool(int selection, Tool * tool); bool GetPaused(); void SetPaused(bool pauseState); + bool GetDecoration(); + void SetDecoration(bool decorationState); void ClearSimulation(); vector<Menu*> GetMenuList(); vector<Tool*> GetToolList(); diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp index 1336552..faf973e 100644 --- a/src/game/GameView.cpp +++ b/src/game/GameView.cpp @@ -516,6 +516,10 @@ void GameView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool case 'f': c->FrameStep(); break; + case 'b': + if(ctrl) + c->SetDecoration(); + break; } } |
