From e4b08c88cfbc0c6db2860474f9324ae6018007f0 Mon Sep 17 00:00:00 2001 From: jacob1 Date: Tue, 5 Aug 2014 19:25:11 -0400 Subject: [PATCH] fix link signs preventing you from using quickoption buttons, fix being unable to place zoom window on link signs. Fixes #222 --- src/gui/game/GameController.cpp | 26 +++++++++++++++----------- src/gui/game/GameController.h | 2 ++ src/gui/game/GameView.cpp | 5 +++++ src/gui/game/GameView.h | 1 + 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp index 07ca6d0fe7..fe8278883c 100644 --- a/src/gui/game/GameController.cpp +++ b/src/gui/game/GameController.cpp @@ -126,6 +126,7 @@ GameController::GameController(): options(NULL), activePreview(NULL), localBrowser(NULL), + foundSign(NULL), HasDone(false), firstTick(true) { @@ -554,34 +555,36 @@ bool GameController::BrushChanged(int brushType, int rx, int ry) bool GameController::MouseDown(int x, int y, unsigned button) { bool ret = commandInterface->OnMouseDown(x, y, button); - ui::Point point = PointTranslate(ui::Point(x, y)); - x = point.X; - y = point.Y; - if (ret && yGetPlacingSave()) + if (ret && yGetPlacingSave() && !gameView->GetPlacingZoom()) + { + ui::Point point = gameModel->AdjustZoomCoords(ui::Point(x, y)); + x = point.X; + y = point.Y; if (gameModel->GetActiveTool(0) && gameModel->GetActiveTool(0)->GetIdentifier() != "DEFAULT_UI_SIGN" || button != BUTTON_LEFT) //If it's not a sign tool or you are right/middle clicking { - sign * foundSign = GetSignAt(x, y); + foundSign = GetSignAt(x, y); if(foundSign && splitsign(foundSign->text.c_str())) return false; } + } return ret; } bool GameController::MouseUp(int x, int y, unsigned button) { bool ret = commandInterface->OnMouseUp(x, y, button); - ui::Point point = PointTranslate(ui::Point(x, y)); - x = point.X; - y = point.Y; - if (ret && yGetPlacingSave()) + if (ret && foundSign && yGetPlacingSave()) { + ui::Point point = gameModel->AdjustZoomCoords(ui::Point(x, y)); + x = point.X; + y = point.Y; if (gameModel->GetActiveTool(0) && gameModel->GetActiveTool(0)->GetIdentifier() != "DEFAULT_UI_SIGN" || button != BUTTON_LEFT) //If it's not a sign tool or you are right/middle clicking { sign * foundSign = GetSignAt(x, y); if(foundSign) { - const char* str=foundSign->text.c_str(); + const char* str = foundSign->text.c_str(); char type; - int pos=splitsign(str, &type); + int pos = splitsign(str, &type); if (pos) { ret = false; @@ -609,6 +612,7 @@ bool GameController::MouseUp(int x, int y, unsigned button) } } } + foundSign = NULL; return ret; } diff --git a/src/gui/game/GameController.h b/src/gui/game/GameController.h index 9fe3624584..88337a03e3 100644 --- a/src/gui/game/GameController.h +++ b/src/gui/game/GameController.h @@ -32,6 +32,8 @@ class GameController: public ClientListener //Simulation * sim; bool firstTick; int screenshotIndex; + sign * foundSign; + PreviewController * activePreview; GameView * gameView; GameModel * gameModel; diff --git a/src/gui/game/GameView.cpp b/src/gui/game/GameView.cpp index a447318578..52a0f31e64 100644 --- a/src/gui/game/GameView.cpp +++ b/src/gui/game/GameView.cpp @@ -623,6 +623,11 @@ bool GameView::GetPlacingSave() return selectMode != SelectNone; } +bool GameView::GetPlacingZoom() +{ + return !zoomCursorFixed; +} + void GameView::NotifyActiveToolsChanged(GameModel * sender) { for(int i = 0; i < toolButtons.size(); i++) diff --git a/src/gui/game/GameView.h b/src/gui/game/GameView.h index 26781c16aa..90fae7db25 100644 --- a/src/gui/game/GameView.h +++ b/src/gui/game/GameView.h @@ -137,6 +137,7 @@ class GameView: public ui::Window void SetDebugHUD(bool mode); bool GetDebugHUD(); bool GetPlacingSave(); + bool GetPlacingZoom(); bool CtrlBehaviour(){ return ctrlBehaviour; } bool ShiftBehaviour(){ return shiftBehaviour; } bool AltBehaviour(){ return altBehaviour; }