From a1f9da2d0cedd4733102f1c1831cab5b51955ac2 Mon Sep 17 00:00:00 2001 From: jacob1 Date: Sat, 8 Jun 2013 00:23:06 -0400 Subject: [PATCH] fix tpt.selectedl not changing sometimes when using the element search or sample tool. Assume that new saves will get the auto-vote, so set that too. --- src/gui/elementsearch/ElementSearchActivity.cpp | 16 ++++++++-------- src/gui/elementsearch/ElementSearchActivity.h | 6 +++--- src/gui/game/GameController.cpp | 14 ++++++++------ src/gui/game/GameController.h | 1 + src/gui/game/GameView.cpp | 7 ++++--- 5 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/gui/elementsearch/ElementSearchActivity.cpp b/src/gui/elementsearch/ElementSearchActivity.cpp index 624f0ff3c..2a277dbed 100644 --- a/src/gui/elementsearch/ElementSearchActivity.cpp +++ b/src/gui/elementsearch/ElementSearchActivity.cpp @@ -5,7 +5,7 @@ #include "gui/interface/Keys.h" #include "gui/game/Tool.h" #include "gui/Style.h" -#include "gui/game/GameModel.h" +#include "gui/game/GameController.h" class ElementSearchActivity::ToolAction: public ui::ButtonAction { @@ -21,9 +21,9 @@ public: } }; -ElementSearchActivity::ElementSearchActivity(GameModel * gameModel, std::vector tools) : +ElementSearchActivity::ElementSearchActivity(GameController * gameController, std::vector tools) : WindowActivity(ui::Point(-1, -1), ui::Point(236, 302)), - gameModel(gameModel), + gameController(gameController), tools(tools), firstResult(NULL) { @@ -121,15 +121,15 @@ void ElementSearchActivity::searchTools(std::string query) tempButton->Appearance.BackgroundInactive = ui::Colour(tool->colRed, tool->colGreen, tool->colBlue); tempButton->SetActionCallback(new ToolAction(this, tool)); - if(gameModel->GetActiveTool(0) == tool) + if(gameController->GetActiveTool(0) == tool) { tempButton->SetSelectionState(0); //Primary } - else if(gameModel->GetActiveTool(1) == tool) + else if(gameController->GetActiveTool(1) == tool) { tempButton->SetSelectionState(1); //Secondary } - else if(gameModel->GetActiveTool(2) == tool) + else if(gameController->GetActiveTool(2) == tool) { tempButton->SetSelectionState(2); //Tertiary } @@ -152,7 +152,7 @@ void ElementSearchActivity::searchTools(std::string query) void ElementSearchActivity::SetActiveTool(int selectionState, Tool * tool) { - gameModel->SetActiveTool(selectionState, tool); + gameController->SetActiveTool(selectionState, tool); Exit(); } @@ -170,7 +170,7 @@ void ElementSearchActivity::OnKeyPress(int key, Uint16 character, bool shift, bo if(key == KEY_ENTER || key == KEY_RETURN) { if(firstResult) - gameModel->SetActiveTool(0, firstResult); + gameController->SetActiveTool(0, firstResult); Exit(); } if(key == KEY_ESCAPE) diff --git a/src/gui/elementsearch/ElementSearchActivity.h b/src/gui/elementsearch/ElementSearchActivity.h index dec37e537..74bb898d8 100644 --- a/src/gui/elementsearch/ElementSearchActivity.h +++ b/src/gui/elementsearch/ElementSearchActivity.h @@ -10,11 +10,11 @@ class Tool; -class GameModel; +class GameController; class ElementSearchActivity: public WindowActivity { Tool * firstResult; - GameModel * gameModel; + GameController * gameController; std::vector tools; ui::Textbox * searchField; std::vector toolButtons; @@ -22,7 +22,7 @@ class ElementSearchActivity: public WindowActivity { public: class ToolAction; Tool * GetFirstResult() { return firstResult; } - ElementSearchActivity(GameModel * gameModel, std::vector tools); + ElementSearchActivity(GameController * gameController, std::vector tools); void SetActiveTool(int selectionState, Tool * tool); virtual ~ElementSearchActivity(); virtual void OnDraw(); diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp index 6ae9ae234..b8733606c 100644 --- a/src/gui/game/GameController.cpp +++ b/src/gui/game/GameController.cpp @@ -965,12 +965,7 @@ void GameController::SetActiveMenu(int menuID) if(menuID == SC_DECO) gameModel->SetColourSelectorVisibility(true); else - { gameModel->SetColourSelectorVisibility(false); - ActiveToolChanged(0, gameModel->GetActiveTool(0)); - ActiveToolChanged(1, gameModel->GetActiveTool(1)); - ActiveToolChanged(2, gameModel->GetActiveTool(2)); - } } std::vector GameController::GetMenuList() @@ -983,6 +978,11 @@ void GameController::ActiveToolChanged(int toolSelection, Tool *tool) commandInterface->OnActiveToolChanged(toolSelection, tool); } +Tool * GameController::GetActiveTool(int selection) +{ + return gameModel->GetActiveTool(selection); +} + void GameController::SetActiveTool(int toolSelection, Tool * tool) { gameModel->SetActiveTool(toolSelection, tool); @@ -1126,7 +1126,7 @@ void GameController::OpenElementSearch() } vector hiddenTools = gameModel->GetUnlistedTools(); toolList.insert(toolList.end(), hiddenTools.begin(), hiddenTools.end()); - new ElementSearchActivity(gameModel, toolList); + new ElementSearchActivity(this, toolList); } void GameController::OpenColourPicker() @@ -1210,6 +1210,8 @@ void GameController::OpenSaveWindow() virtual ~SaveUploadedCallback() {}; virtual void SaveUploaded(SaveInfo save) { + save.SetVote(1); + save.SetVotesUp(1); c->LoadSave(&save); } }; diff --git a/src/gui/game/GameController.h b/src/gui/game/GameController.h index 32755dfb7..09a371301 100644 --- a/src/gui/game/GameController.h +++ b/src/gui/game/GameController.h @@ -100,6 +100,7 @@ public: bool GetDebugHUD(); void SetActiveMenu(int menuID); std::vector GetMenuList(); + Tool * GetActiveTool(int selection); void SetActiveTool(int toolSelection, Tool * tool); void ActiveToolChanged(int toolSelection, Tool *tool); void SetActiveColourPreset(int preset); diff --git a/src/gui/game/GameView.cpp b/src/gui/game/GameView.cpp index 08387e757..735728f9d 100644 --- a/src/gui/game/GameView.cpp +++ b/src/gui/game/GameView.cpp @@ -617,7 +617,6 @@ void GameView::NotifyActiveToolsChanged(GameModel * sender) if(sender->GetActiveTool(0) == tool) { toolButtons[i]->SetSelectionState(0); //Primary - c->ActiveToolChanged(0, tool); if (tool->GetIdentifier().find("DEFAULT_UI_WIND") != tool->GetIdentifier().npos) windTool = true; else @@ -626,18 +625,20 @@ void GameView::NotifyActiveToolsChanged(GameModel * sender) else if(sender->GetActiveTool(1) == tool) { toolButtons[i]->SetSelectionState(1); //Secondary - c->ActiveToolChanged(1, tool); } else if(sender->GetActiveTool(2) == tool) { toolButtons[i]->SetSelectionState(2); //Tertiary - c->ActiveToolChanged(2, tool); } else { toolButtons[i]->SetSelectionState(-1); } } + //need to do this for all tools every time just in case it wasn't caught if you weren't in the menu a tool was changed to + c->ActiveToolChanged(0, sender->GetActiveTool(0)); + c->ActiveToolChanged(1, sender->GetActiveTool(1)); + c->ActiveToolChanged(2, sender->GetActiveTool(2)); } void GameView::NotifyLastToolChanged(GameModel * sender)