diff options
Diffstat (limited to 'UserInput.cpp')
| -rw-r--r-- | UserInput.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/UserInput.cpp b/UserInput.cpp index 90e9a24..7ba60d8 100644 --- a/UserInput.cpp +++ b/UserInput.cpp @@ -67,10 +67,22 @@ void changeRelativeToRotation( int &inputx, int &inputy, int stepx, int stepy ){ void moveViewRelativeToRotation( int stepx, int stepy )
{
+
if (config.follow_DFscreen)
changeRelativeToRotation(config.viewXoffset, config.viewYoffset, stepx, stepy );
- else
+ //if we're following the DF screen, we DO NOT bound the view, since we have a simple way to get back
+ else{
changeRelativeToRotation(DisplayedSegmentX, DisplayedSegmentY, stepx, stepy );
+ //bound view to world
+ if((int)DisplayedSegmentX > (int)config.cellDimX -(int)config.segmentSize.x/2)
+ DisplayedSegmentX = config.cellDimX -config.segmentSize.x/2;
+ if((int)DisplayedSegmentY > (int)config.cellDimY -(int)config.segmentSize.y/2)
+ DisplayedSegmentY = config.cellDimY -config.segmentSize.y/2;
+ if((int)DisplayedSegmentX < -(int)config.segmentSize.x/2)
+ DisplayedSegmentX = -config.segmentSize.x/2;
+ if((int)DisplayedSegmentY < -(int)config.segmentSize.y/2)
+ DisplayedSegmentY = -config.segmentSize.y/2;
+ }
}
@@ -252,6 +264,19 @@ void doKeys(int Key) config.follow_DFscreen = !config.follow_DFscreen;
timeToReloadSegment = true;
}
+ if(Key == ALLEGRO_KEY_Z){
+ if (config.follow_DFscreen)
+ {
+ config.viewXoffset = 0;
+ config.viewYoffset = 0;
+ config.viewZoffset = 0;
+ }
+ else
+ {
+ DisplayedSegmentX = (config.cellDimX -config.segmentSize.x)/2;
+ DisplayedSegmentY = (config.cellDimY -config.segmentSize.y)/2;
+ }
+ }
if(Key == ALLEGRO_KEY_1){
config.segmentSize.z--;
if(config.segmentSize.z <= 0) config.segmentSize.z = 1;
|
