From 3c1651d0849c9eac7f53428f2521402624592df7 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Mon, 13 Aug 2012 23:29:59 +0000 Subject: [PATCH] - bugfix when moving camera and entering chat mode --- source/glest_game/game/game.cpp | 35 +++++++++++++++++++++++++++- source/glest_game/game/game_camera.h | 9 +++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/source/glest_game/game/game.cpp b/source/glest_game/game/game.cpp index 0c8e310b..a62b82ce 100644 --- a/source/glest_game/game/game.cpp +++ b/source/glest_game/game/game.cpp @@ -2722,6 +2722,17 @@ void Game::mouseMove(int x, int y, const MouseState *ms) { } else { //main window + if(isInSpecialKeyCaptureEvent() == true && + gameCamera.isMoving() == true) { + + camUpButtonDown= false; + camDownButtonDown = false; + camLeftButtonDown = false; + camRightButtonDown = false; + + gameCamera.stopMove(); + } + //if(Window::isKeyDown() == false) if(!camLeftButtonDown && !camRightButtonDown && !camUpButtonDown && !camDownButtonDown) { @@ -2747,7 +2758,7 @@ void Game::mouseMove(int x, int y, const MouseState *ms) { } else { bool mouseMoveScrollsWorld = Config::getInstance().getBool("MouseMoveScrollsWorld","true"); - if(mouseMoveScrollsWorld == true) { + if(mouseMoveScrollsWorld == true && isInSpecialKeyCaptureEvent() == false) { if (y < 10) { gameCamera.setMoveZ(-scrollSpeed); } @@ -3105,6 +3116,17 @@ void Game::keyDown(SDL_KeyboardEvent key) { saveGame(); } } + else if(isInSpecialKeyCaptureEvent() == true && + gameCamera.isMoving() == true) { + + camUpButtonDown= false; + camDownButtonDown = false; + camLeftButtonDown = false; + camRightButtonDown = false; + + gameCamera.stopMove(); + } + //throw megaglest_runtime_error("Test Error!"); } @@ -3141,6 +3163,17 @@ void Game::keyUp(SDL_KeyboardEvent key) { } if(chatManager.getEditEnabled()) { + if(isInSpecialKeyCaptureEvent() == true && + gameCamera.isMoving() == true) { + + camUpButtonDown= false; + camDownButtonDown = false; + camLeftButtonDown = false; + camRightButtonDown = false; + + gameCamera.stopMove(); + } + //send key to the chat manager chatManager.keyUp(key); } diff --git a/source/glest_game/game/game_camera.h b/source/glest_game/game/game_camera.h index 10154719..c0b7d573 100644 --- a/source/glest_game/game/game_camera.h +++ b/source/glest_game/game/game_camera.h @@ -113,6 +113,15 @@ public: void setMoveY(float f) {this->move.y= f;} void setMoveZ(float f) {this->move.z= f;} + inline bool isMoving() const { + return (this->move.x != 0.0 || this->move.y != 0.0 || this->move.z != 0.0); + } + inline void stopMove() { + this->move.x = 0.0; + this->move.y = 0.0; + this->move.z = 0.0; + } + void stop() { destPos = pos; destAng.x = vAng;