A technically more simple way to set the camera mode

This commit is contained in:
Titus Tscharntke 2012-09-27 21:10:28 +00:00
parent 5e57921fef
commit b65ff48d29
3 changed files with 27 additions and 26 deletions

View File

@ -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")) {

View File

@ -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;

View File

@ -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;}