rnd-20060730-2-src
[rocksndiamonds.git] / src / libgame / system.h
index 21068dbc417c8a3b2c47fdc94db895e337593957..74917b2141ad0caf5df4a9fa675144b86e5893c6 100644 (file)
 #define MB_LEFTBUTTON                  1
 #define MB_MIDDLEBUTTON                        2
 #define MB_RIGHTBUTTON                 3
-
+#define MB_WHEEL_UP                    4
+#define MB_WHEEL_DOWN                  5
+#define MB_WHEEL_LEFT                  6
+#define MB_WHEEL_RIGHT                 7
+#define IS_WHEEL_BUTTON_VERTICAL(b)    ((b) >= MB_WHEEL_UP &&          \
+                                        (b) <= MB_WHEEL_DOWN)
+#define IS_WHEEL_BUTTON_HORIZONTAL(b)  ((b) >= MB_WHEEL_LEFT &&        \
+                                        (b) <= MB_WHEEL_RIGHT)
+#define IS_WHEEL_BUTTON(b)             ((b) >= MB_WHEEL_UP &&          \
+                                        (b) <= MB_WHEEL_DOWN)
+#define DEFAULT_WHEEL_STEPS            3
 
 /* values for move directions */
 #define MV_BIT_LEFT                    0
 #define ANIM_RANDOM            (1 << 4)
 #define ANIM_CE_VALUE          (1 << 5)
 #define ANIM_CE_SCORE          (1 << 6)
-#define ANIM_REVERSE           (1 << 7)
-#define ANIM_OPAQUE_PLAYER     (1 << 8)
+#define ANIM_CE_DELAY          (1 << 7)
+#define ANIM_REVERSE           (1 << 8)
+#define ANIM_OPAQUE_PLAYER     (1 << 9)
 
 /* values for special (non game element) animation modes */
-#define ANIM_HORIZONTAL                (1 << 9)
-#define ANIM_VERTICAL          (1 << 10)
-#define ANIM_STATIC_PANEL      (1 << 11)
+#define ANIM_HORIZONTAL                (1 << 10)
+#define ANIM_VERTICAL          (1 << 11)
+#define ANIM_STATIC_PANEL      (1 << 12)
 
 #define ANIM_DEFAULT           ANIM_LOOP
 
 #define SCOREFILE_EXTENSION    "sco"
 #endif
 
+#define ERROR_BASENAME         "stderr.txt"
+
+#define CHAR_PATH_SEPARATOR_UNIX       '/'
+#define CHAR_PATH_SEPARATOR_DOS                '\\'
+
+#define STRING_PATH_SEPARATOR_UNIX     "/"
+#define STRING_PATH_SEPARATOR_DOS      "\\"
+
+#define STRING_NEWLINE_UNIX            "\n"
+#define STRING_NEWLINE_DOS             "\r\n"
+
+#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS)
+#define CHAR_PATH_SEPARATOR    CHAR_PATH_SEPARATOR_DOS
+#define STRING_PATH_SEPARATOR  STRING_PATH_SEPARATOR_DOS
+#define STRING_NEWLINE         STRING_NEWLINE_DOS
+#else
+#define CHAR_PATH_SEPARATOR    CHAR_PATH_SEPARATOR_UNIX
+#define STRING_PATH_SEPARATOR  STRING_PATH_SEPARATOR_UNIX
+#define STRING_NEWLINE         STRING_NEWLINE_UNIX
+#endif
+
 
 /* areas in bitmap PIX_DOOR */
 /* meaning in PIX_DB_DOOR: (3 PAGEs)
@@ -494,7 +526,10 @@ struct ProgramInfo
 {
   char *command_basepath;      /* directory that contains the program */
   char *command_basename;      /* base filename of the program binary */
-  char *userdata_directory;    /* personal user data directory */
+
+  char *userdata_subdir;       /* personal user game data directory */
+  char *userdata_subdir_unix;  /* personal user game data directory (Unix) */
+  char *userdata_path;         /* resulting full path to game data directory */
 
   char *program_title;
   char *window_title;
@@ -507,6 +542,9 @@ struct ProgramInfo
   char *cookie_prefix;
   char *filename_prefix;       /* prefix to cut off from DOS filenames */
 
+  char *error_filename;                /* filename where to write error messages to */
+  FILE *error_file;            /* (used instead of 'stderr' on some systems) */
+
   int version_major;
   int version_minor;
   int version_patch;
@@ -654,6 +692,9 @@ struct SetupEditorInfo
 
   boolean el_headlines;
 
+  boolean el_by_game;
+  boolean el_by_type;
+
   boolean show_element_token;
 };
 
@@ -670,6 +711,7 @@ struct SetupEditorCascadeInfo
   boolean el_chars;
   boolean el_ce;
   boolean el_ge;
+  boolean el_ref;
   boolean el_user;
   boolean el_dynamic;
 };
@@ -951,7 +993,7 @@ extern int                  FrameCounter;
 /* function definitions */
 
 void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *,
-                    char *, char *, char *, int);
+                    char *, char *, char *, char *, int);
 
 void InitExitFunction(void (*exit_function)(int));
 void InitPlatformDependentStuff(void);