rnd-20020803-1-src
[rocksndiamonds.git] / src / libgame / system.h
index 71582633110a9483e0b0dc76659682f308253400..0f6d5e2b897b9387ce753301b57ca8e2d5025ef9 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Artsoft Retro-Game Library                               *
 *----------------------------------------------------------*
-* (c) 1994-2001 Artsoft Entertainment                      *
+* (c) 1994-2002 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
 #include "x11.h"
 #endif
 
+#if defined(PLATFORM_MACOSX)
+/* some symbols are already defined on Mac OS X */
+#define Delay Delay_internal
+#define DrawLine DrawLine_internal
+#define DrawText DrawText_internal
+#define GetPixel GetPixel_internal
+#endif
+
 
 /* the additional 'b' is needed for Win32 to open files in binary mode */
 #define MODE_READ              "rb"
@@ -51,6 +59,7 @@
 /* default shortcut keys */
 #define DEFAULT_KEY_SAVE_GAME  KSYM_F1
 #define DEFAULT_KEY_LOAD_GAME  KSYM_F2
+#define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space
 
 /* values for move directions and special "button" keys */
 #define MV_NO_MOVING           0
 #define MV_RIGHT               (1 << 1)
 #define MV_UP                  (1 << 2)
 #define MV_DOWN                        (1 << 3)
-#define MV_BUTTON_1            (1 << 4)
-#define MV_BUTTON_2            (1 << 5)
-#define MV_MOTION              (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN)
-#define MV_BUTTON              (MV_BUTTON_1 | MV_BUTTON_2)
+#define KEY_BUTTON_1           (1 << 4)
+#define KEY_BUTTON_2           (1 << 5)
+#define KEY_MOTION             (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN)
+#define KEY_BUTTON             (KEY_BUTTON_1 | KEY_BUTTON_2)
+#define KEY_ACTION             (KEY_MOTION | KEY_BUTTON)
 
 /* values for button status */
 #define MB_NOT_PRESSED         FALSE
 /* default name for unknown player names */
 #define ANONYMOUS_NAME         "anonymous"
 
+/* default text for non-existant artwork */
+#define NOT_AVAILABLE          "(not available)"
+
 /* default name for new levels */
 #define NAMELESS_LEVEL_NAME    "nameless level"
 
 #define VERSION_MINOR(x)       (((x) % 10000) / 100)
 #define VERSION_PATCH(x)       ((x) % 100)
 
+/* functions for parent/child process identification */
+#define IS_PARENT_PROCESS(pid) ((pid) > 0)
+#define IS_CHILD_PROCESS(pid)  ((pid) == 0)
+
 
 /* type definitions */
 typedef int (*EventFilter)(const Event *);
@@ -215,6 +232,7 @@ struct OptionInfo
   boolean network;
   boolean verbose;
   boolean debug;
+  char *debug_command;
 };
 
 struct VideoSystemInfo
@@ -228,21 +246,20 @@ struct VideoSystemInfo
 struct AudioSystemInfo
 {
   boolean sound_available;
-  boolean music_available;
   boolean loops_available;
-  boolean mods_available;
-  boolean sound_enabled;
+  boolean music_available;
 
+  boolean sound_enabled;
   boolean sound_deactivated;   /* for temporarily disabling sound */
 
-  int soundserver_pipe[2];
-  int soundserver_pid;
+  int mixer_pipe[2];
+  int mixer_pid;
   char *device_name;
   int device_fd;
 
-  int channels;
+  int num_channels;
   int music_channel;
-  int music_nr;
+  int first_sound_channel;
 };
 
 struct GfxInfo
@@ -299,6 +316,7 @@ struct SetupShortcutInfo
 {
   Key save_game;
   Key load_game;
+  Key toggle_pause;
 };
 
 struct SetupInfo
@@ -326,6 +344,9 @@ struct SetupInfo
   char *graphics_set;
   char *sounds_set;
   char *music_set;
+  boolean override_level_graphics;
+  boolean override_level_sounds;
+  boolean override_level_music;
 
   struct SetupShortcutInfo shortcut;
   struct SetupInputInfo input[MAX_PLAYERS];
@@ -374,6 +395,7 @@ struct TreeInfo
 
 typedef struct TreeInfo TreeInfo;
 typedef struct TreeInfo LevelDirTree;
+typedef struct TreeInfo ArtworkDirTree;
 typedef struct TreeInfo GraphicsDirTree;
 typedef struct TreeInfo SoundsDirTree;
 typedef struct TreeInfo MusicDirTree;
@@ -387,9 +409,9 @@ struct ArtworkInfo
   MusicDirTree *mus_first;
   MusicDirTree *mus_current;
 
-  char *graphics_set_current;
-  char *sounds_set_current;
-  char *music_set_current;
+  char *graphics_set_current_name;
+  char *sounds_set_current_name;
+  char *music_set_current_name;
 };