diff options
| author | jacob1 <jfu614@gmail.com> | 2013-05-15 03:50:26 (GMT) |
|---|---|---|
| committer | jacob1 <jfu614@gmail.com> | 2013-05-15 03:50:26 (GMT) |
| commit | 94d21a1679749df49342903545192254a27f8ffc (patch) | |
| tree | 81d4f9771b4821ad29b0dee0240febcb4e08280e /src/gui | |
| parent | ab3675d6eea1ce6eeeac713ed44f5cb591ff820f (diff) | |
| download | powder-94d21a1679749df49342903545192254a27f8ffc.zip powder-94d21a1679749df49342903545192254a27f8ffc.tar.gz | |
when called with no arguments, some tpt. functions will act as get functions (unfinished)
Also, redo some menu stuff to use int's instead of Menu *s, and fix bug with toggleable buttons being toggled without triggering their actions
Diffstat (limited to 'src/gui')
| -rw-r--r-- | src/gui/game/GameController.cpp | 18 | ||||
| -rw-r--r-- | src/gui/game/GameController.h | 3 | ||||
| -rw-r--r-- | src/gui/game/GameModel.cpp | 64 | ||||
| -rw-r--r-- | src/gui/game/GameModel.h | 6 | ||||
| -rw-r--r-- | src/gui/game/GameView.cpp | 35 | ||||
| -rw-r--r-- | src/gui/game/GameView.h | 3 | ||||
| -rw-r--r-- | src/gui/interface/Button.cpp | 8 |
7 files changed, 67 insertions, 70 deletions
diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp index 09e1a1c..ad48f66 100644 --- a/src/gui/game/GameController.cpp +++ b/src/gui/game/GameController.cpp @@ -924,6 +924,11 @@ void GameController::SetHudEnable(bool hudState) gameView->SetHudEnable(hudState); } +bool GameController::GetHudEnable() +{ + return gameView->GetHudEnable(); +} + void GameController::SetActiveColourPreset(int preset) { gameModel->SetActiveColourPreset(preset); @@ -935,18 +940,15 @@ void GameController::SetColour(ui::Colour colour) gameModel->SetPresetColour(colour); } -void GameController::SetActiveMenu(Menu * menu) +void GameController::SetActiveMenu(int menuID) { - gameModel->SetActiveMenu(menu); + gameModel->SetActiveMenu(menuID); vector<Menu*> menuList = gameModel->GetMenuList(); bool set = false; - for(int i = 0; i < menuList.size(); i++) + if(menuID == SC_DECO) { - if(menuList[i]==menu && i == SC_DECO) - { - gameModel->SetColourSelectorVisibility(true); - set = true; - } + gameModel->SetColourSelectorVisibility(true); + set = true; } if(!set) gameModel->SetColourSelectorVisibility(false); diff --git a/src/gui/game/GameController.h b/src/gui/game/GameController.h index f2cf26b..59fd4c8 100644 --- a/src/gui/game/GameController.h +++ b/src/gui/game/GameController.h @@ -100,7 +100,8 @@ public: void SetDecoration(); void ShowGravityGrid(); void SetHudEnable(bool hudState); - void SetActiveMenu(Menu * menu); + bool GetHudEnable(); + void SetActiveMenu(int menuID); std::vector<Menu*> GetMenuList(); void SetActiveTool(int toolSelection, Tool * tool); void ActiveToolChanged(int toolSelection, Tool *tool); diff --git a/src/gui/game/GameModel.cpp b/src/gui/game/GameModel.cpp index 18276d0..960f45a 100644 --- a/src/gui/game/GameModel.cpp +++ b/src/gui/game/GameModel.cpp @@ -31,7 +31,7 @@ GameModel::GameModel(): colour(255, 0, 0, 255), toolStrength(1.0f), activeColourPreset(-1), - activeMenu(NULL), + activeMenu(-1), edgeMode(0) { sim = new Simulation(); @@ -221,9 +221,9 @@ void GameModel::BuildQuickOptionMenu(GameController * controller) void GameModel::BuildMenus() { - char lastMenu = 0; - if(activeMenu) - lastMenu = activeMenu->GetIcon(); + int lastMenu = -1; + if(activeMenu != -1) + lastMenu = activeMenu; std::string activeToolIdentifiers[3]; if(regularToolset[0]) @@ -346,19 +346,15 @@ void GameModel::BuildMenus() lastTool = activeTools[0]; //Set default menu - activeMenu = menuList[SC_POWDERS]; + activeMenu = SC_POWDERS; - if(lastMenu) + if(lastMenu != -1) //What is this? ... { - for(std::vector<Menu*>::iterator iter = menuList.begin(), end = menuList.end(); iter != end; ++iter) - { - if((*iter)->GetIcon() == lastMenu) - activeMenu = *iter; - } + activeMenu = lastMenu; } - if(activeMenu) - toolList = activeMenu->GetToolList(); + if(activeMenu != -1) + toolList = menuList[activeMenu]->GetToolList(); else toolList = std::vector<Tool*>(); @@ -471,32 +467,26 @@ float GameModel::GetToolStrength() return toolStrength; } -void GameModel::SetActiveMenu(Menu * menu) +void GameModel::SetActiveMenu(int menuID) { - for(int i = 0; i < menuList.size(); i++) + activeMenu = menuID; + toolList = menuList[menuID]->GetToolList(); + notifyToolListChanged(); + + if(menuID == SC_DECO) { - if(menuList[i]==menu) + if(activeTools != decoToolset) { - activeMenu = menu; - toolList = menu->GetToolList(); - notifyToolListChanged(); - - if(menu == menuList[SC_DECO]) - { - if(activeTools != decoToolset) - { - activeTools = decoToolset; - notifyActiveToolsChanged(); - } - } - else - { - if(activeTools != regularToolset) - { - activeTools = regularToolset; - notifyActiveToolsChanged(); - } - } + activeTools = decoToolset; + notifyActiveToolsChanged(); + } + } + else + { + if(activeTools != regularToolset) + { + activeTools = regularToolset; + notifyActiveToolsChanged(); } } } @@ -511,7 +501,7 @@ vector<Tool*> GameModel::GetToolList() return toolList; } -Menu * GameModel::GetActiveMenu() +int GameModel::GetActiveMenu() { return activeMenu; } diff --git a/src/gui/game/GameModel.h b/src/gui/game/GameModel.h index f8ccfb5..dd54d91 100644 --- a/src/gui/game/GameModel.h +++ b/src/gui/game/GameModel.h @@ -53,7 +53,7 @@ private: vector<Menu*> menuList; vector<QuickOption*> quickOptions; - Menu * activeMenu; + int activeMenu; int currentBrush; vector<Brush *> brushList; SaveInfo * currentSave; @@ -168,8 +168,8 @@ public: void ClearSimulation(); vector<Menu*> GetMenuList(); vector<QuickOption*> GetQuickOptions(); - void SetActiveMenu(Menu * menu); - Menu * GetActiveMenu(); + void SetActiveMenu(int menuID); + int GetActiveMenu(); void FrameStep(int frames); User GetUser(); void SetUser(User user); diff --git a/src/gui/game/GameView.cpp b/src/gui/game/GameView.cpp index 925ff2c..f054793 100644 --- a/src/gui/game/GameView.cpp +++ b/src/gui/game/GameView.cpp @@ -189,7 +189,7 @@ GameView::GameView(): toolTipPresence(0), currentSaveType(0), lastLogEntry(0.0f), - lastMenu(NULL) + lastMenu(-1) { int currentX = 1; @@ -403,7 +403,6 @@ GameView::GameView(): }; pauseButton = new ui::Button(ui::Point(Size.X-16, Size.Y-16), ui::Point(15, 15), "", "Pause/Resume the simulation"); //Pause pauseButton->SetIcon(IconPause); - pauseButton->SetTogglable(true); pauseButton->SetActionCallback(new PauseAction(this)); AddComponent(pauseButton); @@ -459,13 +458,13 @@ class GameView::MenuAction: public ui::ButtonAction { GameView * v; public: - Menu * menu; + int menuID; bool needsClick; - MenuAction(GameView * _v, Menu * menu_) + MenuAction(GameView * _v, int menuID_) { v = _v; - menu = menu_; - if (v->c->GetMenuList()[SC_DECO] == menu) + menuID = menuID_; + if (menuID == SC_DECO) needsClick = true; else needsClick = false; @@ -473,12 +472,12 @@ public: void MouseEnterCallback(ui::Button * sender) { if(!needsClick && !ui::Engine::Ref().GetMouseButton()) - v->c->SetActiveMenu(menu); + v->c->SetActiveMenu(menuID); } void ActionCallback(ui::Button * sender) { if (needsClick) - v->c->SetActiveMenu(menu); + v->c->SetActiveMenu(menuID); else MouseEnterCallback(sender); } @@ -566,15 +565,14 @@ void GameView::NotifyMenuListChanged(GameModel * sender) } toolButtons.clear(); vector<Menu*> menuList = sender->GetMenuList(); - for(vector<Menu*>::reverse_iterator iter = menuList.rbegin(), end = menuList.rend(); iter != end; ++iter) + for (int i = menuList.size()-1; i >= 0; i--) { std::string tempString = ""; - Menu * item = *iter; - tempString += item->GetIcon(); - ui::Button * tempButton = new ui::Button(ui::Point(XRES+BARSIZE-16, currentY), ui::Point(15, 15), tempString, item->GetDescription()); + tempString += menuList[i]->GetIcon(); + ui::Button * tempButton = new ui::Button(ui::Point(XRES+BARSIZE-16, currentY), ui::Point(15, 15), tempString, menuList[i]->GetDescription()); tempButton->Appearance.Margin = ui::Border(0, 2, 3, 2); tempButton->SetTogglable(true); - tempButton->SetActionCallback(new MenuAction(this, item)); + tempButton->SetActionCallback(new MenuAction(this, i)); currentY-=16; AddComponent(tempButton); menuButtons.push_back(tempButton); @@ -591,6 +589,11 @@ void GameView::SetHudEnable(bool hudState) showHud = hudState; } +bool GameView::GetHudEnable() +{ + return showHud; +} + ui::Point GameView::GetMousePosition() { return mousePosition; @@ -643,7 +646,7 @@ void GameView::NotifyToolListChanged(GameModel * sender) int totalColour; for(int i = 0; i < menuButtons.size(); i++) { - if(((MenuAction*)menuButtons[i]->GetActionCallback())->menu==sender->GetActiveMenu()) + if(((MenuAction*)menuButtons[i]->GetActionCallback())->menuID==sender->GetActiveMenu()) { menuButtons[i]->SetToggleState(true); } @@ -698,7 +701,7 @@ void GameView::NotifyToolListChanged(GameModel * sender) AddComponent(tempButton); toolButtons.push_back(tempButton); } - if (sender->GetActiveMenu() != sender->GetMenuList()[SC_DECO]) + if (sender->GetActiveMenu() != SC_DECO) lastMenu = sender->GetActiveMenu(); } @@ -1364,7 +1367,7 @@ void GameView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool { c->SetDecoration(true); c->SetPaused(true); - c->SetActiveMenu(c->GetMenuList()[SC_DECO]); + c->SetActiveMenu(SC_DECO); } break; case 'y': diff --git a/src/gui/game/GameView.h b/src/gui/game/GameView.h index 8d5c57b..328b67c 100644 --- a/src/gui/game/GameView.h +++ b/src/gui/game/GameView.h @@ -54,7 +54,7 @@ private: std::string introTextMessage; int toolIndex; int currentSaveType; - Menu * lastMenu; + int lastMenu; int toolTipPresence; std::string toolTip; @@ -130,6 +130,7 @@ public: ui::Point GetMousePosition(); void SetSample(SimulationSample sample); void SetHudEnable(bool hudState); + bool GetHudEnable(); bool CtrlBehaviour(){ return ctrlBehaviour; } bool ShiftBehaviour(){ return shiftBehaviour; } void ExitPrompt(); diff --git a/src/gui/interface/Button.cpp b/src/gui/interface/Button.cpp index 37ef22d..71ec499 100644 --- a/src/gui/interface/Button.cpp +++ b/src/gui/interface/Button.cpp @@ -153,6 +153,10 @@ void Button::OnMouseUnclick(int x, int y, unsigned int button) { if(isButtonDown) { + if(isTogglable) + { + toggle = !toggle; + } isButtonDown = false; DoAction(); } @@ -173,10 +177,6 @@ void Button::OnMouseClick(int x, int y, unsigned int button) return; if(button == 1) { - if(isTogglable) - { - toggle = !toggle; - } isButtonDown = true; } else if(button == 3) |
