summaryrefslogtreecommitdiff
path: root/UserInput.cpp
diff options
context:
space:
mode:
authorCaldfir2012-05-01 04:34:35 -0700
committerCaldfir2012-05-01 04:34:35 -0700
commit70890ad5883972a9e810745da4f6a193944ed4d4 (patch)
treec82f39209f70544e6dcf2804dac432103c6030c7 /UserInput.cpp
parente8b469af0a3245b25414398a4ea2d163822f2ce6 (diff)
downloadstonesense-70890ad5883972a9e810745da4f6a193944ed4d4.tar.gz
stonesense-70890ad5883972a9e810745da4f6a193944ed4d4.tar.bz2
stonesense-70890ad5883972a9e810745da4f6a193944ed4d4.tar.xz
Moved bounds checking into movement code from segment loading code. Added keypress 'Z' to 'zero' the current offset/coordinates. Added quiet logging function for printing non-essential updates to the dfhack console. All ties in to newly revamped large screenshot code.
Diffstat (limited to 'UserInput.cpp')
-rw-r--r--UserInput.cpp27
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;