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/GameModel.cpp | |
| 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/GameModel.cpp')
| -rw-r--r-- | src/game/GameModel.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
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++) |
