summaryrefslogtreecommitdiff
path: root/UserInput.cpp
diff options
context:
space:
mode:
authorKris Parker2009-11-17 14:24:22 +0000
committerKris Parker2009-11-17 14:24:22 +0000
commit02b3ccce7dcb624e0f5ba791fd7c029ca6f14261 (patch)
treed55c9f74e1b19e759101049f04338ab74800b8a9 /UserInput.cpp
parentb7741b35746ea36c2e8588b5ba8fd9cb07346a36 (diff)
downloadstonesense-02b3ccce7dcb624e0f5ba791fd7c029ca6f14261.tar.gz
stonesense-02b3ccce7dcb624e0f5ba791fd7c029ca6f14261.tar.bz2
stonesense-02b3ccce7dcb624e0f5ba791fd7c029ca6f14261.tar.xz
Another pass at follow mode
Diffstat (limited to 'UserInput.cpp')
-rw-r--r--UserInput.cpp55
1 files changed, 31 insertions, 24 deletions
diff --git a/UserInput.cpp b/UserInput.cpp
index 0323a8d..3e950e5 100644
--- a/UserInput.cpp
+++ b/UserInput.cpp
@@ -18,50 +18,53 @@ void automaticReloadProc(){
timeToReloadSegment = true;
}
-
-void moveViewRelativeToRotation( int stepx, int stepy ){
+void changeRelativeToRotation( int &inputx, int &inputy, int stepx, int stepy ){
switch(DisplayedRotation){
case 0:
- DisplayedSegmentX += stepx;
- DisplayedSegmentY += stepy;
+ inputx += stepx;
+ inputy += stepy;
break;
case 1:
- DisplayedSegmentX += stepy;
- DisplayedSegmentY -= stepx;
+ inputx += stepy;
+ inputy -= stepx;
break;
case 2:
- DisplayedSegmentX -= stepx;
- DisplayedSegmentY -= stepy;
+ inputx -= stepx;
+ inputy -= stepy;
break;
case 3:
- DisplayedSegmentX -= stepy;
- DisplayedSegmentY += stepx;
+ inputx -= stepy;
+ inputy += stepx;
break;
};
}
+void moveViewRelativeToRotation( int stepx, int stepy )
+{
+ if (config.follow_DFscreen)
+ changeRelativeToRotation(config.viewXoffset, config.viewYoffset, stepx, stepy );
+ else
+ changeRelativeToRotation(DisplayedSegmentX, DisplayedSegmentY, stepx, stepy );
+}
+
void doKeys(){
//mouse_callback = mouseProc;
char stepsize = (key[KEY_LSHIFT] || key[KEY_RSHIFT] ? MAPNAVIGATIONSTEPBIG : MAPNAVIGATIONSTEP);
if(key[KEY_UP]){
- config.follow_DFscreen = false;
- moveViewRelativeToRotation( 0, -stepsize );
+ moveViewRelativeToRotation( 0, -stepsize );
timeToReloadSegment = true;
}
if(key[KEY_DOWN]){
- config.follow_DFscreen = false;
- moveViewRelativeToRotation( 0, stepsize );
+ moveViewRelativeToRotation( 0, stepsize );
timeToReloadSegment = true;
}
if(key[KEY_LEFT]){
- config.follow_DFscreen = false;
- moveViewRelativeToRotation( -stepsize, 0 );
+ moveViewRelativeToRotation( -stepsize, 0 );
timeToReloadSegment = true;
}
if(key[KEY_RIGHT]){
- config.follow_DFscreen = false;
- moveViewRelativeToRotation( stepsize, 0 );
+ moveViewRelativeToRotation( stepsize, 0 );
timeToReloadSegment = true;
}
if(key[KEY_ENTER]){
@@ -70,14 +73,18 @@ void doKeys(){
timeToReloadSegment = true;
}
if(key[KEY_PGDN] || key[KEY_9]){
- config.follow_DFscreen = false;
- DisplayedSegmentZ -= stepsize;
- if(DisplayedSegmentZ<0) DisplayedSegmentZ = 0;
+ if (config.follow_DFscreen)
+ config.viewZoffset -= stepsize;
+ else
+ DisplayedSegmentZ -= stepsize;
+ if(DisplayedSegmentZ<0) DisplayedSegmentZ = 0;
timeToReloadSegment = true;
}
if(key[KEY_PGUP] || key[KEY_0]){
- config.follow_DFscreen = false;
- DisplayedSegmentZ += stepsize;
+ if (config.follow_DFscreen)
+ config.viewZoffset += stepsize;
+ else
+ DisplayedSegmentZ += stepsize;
timeToReloadSegment = true;
}
if(key[KEY_R]){
@@ -111,7 +118,7 @@ void doKeys(){
timeToReloadSegment = true;
}
if(key[KEY_F]){
- config.follow_DFscreen = !config.follow_DFscreen;
+ config.follow_DFscreen = !config.follow_DFscreen;
timeToReloadSegment = true;
}
if(key[KEY_1]){