added grid buttons to virtual buttons setup screen
[rocksndiamonds.git] / src / libgame / system.h
index f3da4ad15bf6d0b5a771638b78b0785a88578c86..06a47c3c685fe17fc7eda1692843d7d8c51fa080 100644 (file)
 #define SCREEN_KEYBOARD_POS(h)         ((h) / 2)
 #endif
 
-
 /* default input keys */
 #define DEFAULT_KEY_LEFT               KSYM_Left
 #define DEFAULT_KEY_RIGHT              KSYM_Right
 #define MAX_GLOBAL_ANIMS               32
 #define MAX_GLOBAL_ANIM_PARTS          32
 
+/* minimum/maximum/default x/y grid size for virtual buttons */
+#define MIN_GRID_XSIZE                 3
+#define MIN_GRID_YSIZE                 3
+#define MAX_GRID_XSIZE                 32
+#define MAX_GRID_YSIZE                 32
+#define DEFAULT_GRID_XSIZE             18
+#define DEFAULT_GRID_YSIZE             MIN(MAX(MIN_GRID_YSIZE,         \
+                                               DEFAULT_GRID_XSIZE *    \
+                                               video.screen_height /   \
+                                               video.screen_width),    \
+                                           MAX_GRID_YSIZE)
+
+/* values for grid button characters for virtual buttons */
+#define CHAR_GRID_BUTTON_NONE          ' '
+#define CHAR_GRID_BUTTON_LEFT          '<'
+#define CHAR_GRID_BUTTON_RIGHT         '>'
+#define CHAR_GRID_BUTTON_UP            '^'
+#define CHAR_GRID_BUTTON_DOWN          'v'
+#define CHAR_GRID_BUTTON_SNAP          '1'
+#define CHAR_GRID_BUTTON_DROP          '2'
+
 /* default name for empty highscore entry */
 #define EMPTY_PLAYER_NAME      "no name"
 
 
 
 /* macros for version handling */
-#define VERSION_MAJOR(x)       ((x) / 1000000)
-#define VERSION_MINOR(x)       (((x) % 1000000) / 10000)
-#define VERSION_PATCH(x)       (((x) % 10000) / 100)
-#define VERSION_BUILD(x)       ((x) % 100)
+#define VERSION_PART_1(x)      ((x) / 1000000)
+#define VERSION_PART_2(x)      (((x) % 1000000) / 10000)
+#define VERSION_PART_3(x)      (((x) % 10000) / 100)
+#define VERSION_PART_4(x)      ((x) % 100)
+
+#define VERSION_SUPER(x)       VERSION_PART_1(x)
+#define VERSION_MAJOR(x)       VERSION_PART_2(x)
+#define VERSION_MINOR(x)       VERSION_PART_3(x)
+#define VERSION_PATCH(x)       VERSION_PART_4(x)
 #define VERSION_IDENT(a,b,c,d) ((a) * 1000000 + (b) * 10000 + (c) * 100 + (d))
 
 
@@ -780,10 +805,10 @@ struct ProgramInfo
   FILE *log_file[NUM_LOGS];            /* log file handles for out/err files */
   FILE *log_file_default[NUM_LOGS];    /* default log file handles (out/err) */
 
+  int version_super;
   int version_major;
   int version_minor;
   int version_patch;
-  int version_build;
   int version_ident;
 
   char *version_string;
@@ -971,6 +996,15 @@ struct OverlayInfo
 {
   boolean enabled;             /* overlay generally enabled or disabled */
   boolean active;              /* overlay activated (depending on game mode) */
+
+  boolean show_grid;
+  boolean show_grid_buttons;
+
+  int grid_xsize;
+  int grid_ysize;
+
+  char grid_button[MAX_GRID_XSIZE][MAX_GRID_YSIZE];
+  char grid_button_highlight;
 };
 
 struct JoystickInfo
@@ -1539,6 +1573,7 @@ void SetTileCursorXY(int, int);
 void SetTileCursorSXSY(int, int);
 void SetOverlayEnabled(boolean);
 void SetOverlayActive(boolean);
+void SetOverlayShowGrid(boolean);
 boolean GetOverlayActive();
 void SetDrawDeactivationMask(int);
 int GetDrawDeactivationMask(void);