From b65ff48d2988f8d50fa48fb6b033f51ba3eff54e Mon Sep 17 00:00:00 2001 From: Titus Tscharntke Date: Thu, 27 Sep 2012 21:10:28 +0000 Subject: [PATCH] A technically more simple way to set the camera mode --- source/glest_game/game/game.cpp | 14 +++++------ source/glest_game/game/game_camera.cpp | 33 ++++++++++++++------------ source/glest_game/game/game_camera.h | 6 ++--- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/source/glest_game/game/game.cpp b/source/glest_game/game/game.cpp index 07202fc92..f85c2b18e 100644 --- a/source/glest_game/game/game.cpp +++ b/source/glest_game/game/game.cpp @@ -1526,7 +1526,7 @@ void Game::update() { if(currentCameraFollowUnit->isAlive()==false){ currentCameraFollowUnit=NULL; - getGameCameraPtr()->setGameState(); + getGameCameraPtr()->setState(GameCamera::sGame); } } @@ -1941,7 +1941,7 @@ void Game::render() { isFirstRender = false; if(this->loadGameNode == NULL) { - gameCamera.setGameState(); + gameCamera.setState(GameCamera::sGame); this->restoreToStartXY(); } } @@ -2891,7 +2891,7 @@ void Game::mouseDownRight(int x, int y) { } if(mouseMoved == false) { - gameCamera.setGameState(); + gameCamera.setState(GameCamera::sGame); } else { mouseMoved = false; @@ -3179,7 +3179,7 @@ void Game::startCameraFollowUnit() { Unit *currentUnit = selection->getUnitPtr(0); if(currentUnit != NULL) { currentCameraFollowUnit = currentUnit; - getGameCameraPtr()->setUnitState(); + getGameCameraPtr()->setState(GameCamera::sUnit); getGameCameraPtr()->setPos(currentCameraFollowUnit->getCurrVector()); int rotation=currentCameraFollowUnit->getRotation(); @@ -3314,11 +3314,11 @@ void Game::keyDown(SDL_KeyboardEvent key) { else if(isKeyPressed(configKeys.getSDLKey("FreeCameraMode"),key, false) == true) { if(gameCamera.getState()==GameCamera::sFree) { - gameCamera.setGameState(); + gameCamera.setState(GameCamera::sGame); } else if(gameCamera.getState()==GameCamera::sGame) { - gameCamera.setFreeState(); + gameCamera.setState(GameCamera::sFree); } //else ignore! @@ -3331,7 +3331,7 @@ void Game::keyDown(SDL_KeyboardEvent key) { if(currentCameraFollowUnit != NULL) { currentCameraFollowUnit = NULL; } - gameCamera.setGameState(); + gameCamera.setState(GameCamera::sGame); } //pause //else if(key == configKeys.getCharKey("PauseGame")) { diff --git a/source/glest_game/game/game_camera.cpp b/source/glest_game/game/game_camera.cpp index dd9147c63..403980fa5 100644 --- a/source/glest_game/game/game_camera.cpp +++ b/source/glest_game/game/game_camera.cpp @@ -287,22 +287,25 @@ Quad2i GameCamera::computeVisibleQuad() { return result; } -void GameCamera::setGameState() { - state = sGame; - setClampDisabled(false); - resetPosition(); +void GameCamera::setState(State s){ + if(s==sGame){ + state = sGame; + setClampDisabled(false); + resetPosition(); + } + else if(s==sUnit){ + state = sUnit; + setClampDisabled(true); + } + else if(s==sFree){ + state = sFree; + setClampDisabled(false); + resetPosition(); + } + else { + abort();//"unknown camera state" + } } -void GameCamera::setUnitState() { - state = sUnit; - setClampDisabled(true); -} -void GameCamera::setFreeState() { - state = sFree; - setClampDisabled(false); - resetPosition(); -} - - void GameCamera::resetPosition(){ destAng.x = startingVAng; diff --git a/source/glest_game/game/game_camera.h b/source/glest_game/game/game_camera.h index e41e3d1b9..b881c78ea 100644 --- a/source/glest_game/game/game_camera.h +++ b/source/glest_game/game/game_camera.h @@ -105,10 +105,8 @@ public: float getHAng() const {return hAng;}; float getVAng() const {return vAng;} State getState() const {return state;} - - void setGameState(); - void setUnitState(); - void setFreeState(); + void setState(State s); + void resetCamera() {setState(sGame);} const Vec3f &getPos() const {return pos;} float getFov() const {return fov;}