fixed tile selection cursor position for levels smaller than the playfield
[rocksndiamonds.git] / src / libgame / system.c
index dea7258d009e5cef1816ed53fd17742a5e98035b..139ee57a562d6c2a046d7397c9df6e4d6c445e0e 100644 (file)
@@ -310,6 +310,7 @@ void InitTileCursorInfo()
 {
   tile_cursor.enabled = FALSE;
   tile_cursor.active = FALSE;
+  tile_cursor.moving = FALSE;
 
   tile_cursor.xpos = 0;
   tile_cursor.ypos = 0;
@@ -317,6 +318,9 @@ void InitTileCursorInfo()
   tile_cursor.y = 0;
   tile_cursor.target_x = 0;
   tile_cursor.target_y = 0;
+
+  tile_cursor.sx = 0;
+  tile_cursor.sy = 0;
 }
 
 void InitOverlayInfo()
@@ -347,8 +351,10 @@ void SetTileCursorTargetXY(int x, int y)
 
   tile_cursor.xpos = x;
   tile_cursor.ypos = y;
-  tile_cursor.target_x = gfx.sx + x * gfx.game_tile_size;
-  tile_cursor.target_y = gfx.sy + y * gfx.game_tile_size;
+  tile_cursor.target_x = tile_cursor.sx + x * gfx.game_tile_size;
+  tile_cursor.target_y = tile_cursor.sy + y * gfx.game_tile_size;
+
+  tile_cursor.moving = TRUE;
 }
 
 void SetTileCursorXY(int x, int y)
@@ -359,6 +365,14 @@ void SetTileCursorXY(int x, int y)
 
   tile_cursor.x = tile_cursor.target_x;
   tile_cursor.y = tile_cursor.target_y;
+
+  tile_cursor.moving = FALSE;
+}
+
+void SetTileCursorSXSY(int sx, int sy)
+{
+  tile_cursor.sx = sx;
+  tile_cursor.sy = sy;
 }
 
 void SetOverlayEnabled(boolean enabled)