rnd-20020322-1-src
[rocksndiamonds.git] / src / libgame / system.h
index e65cd99abb63de6177b7041add397f3964cefb63..bf0f58b1497448f3d3ef1c8924dedddbf3bd9c4a 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Artsoft Retro-Game Library                               *
 *----------------------------------------------------------*
-* (c) 1994-2000 Artsoft Entertainment                      *
+* (c) 1994-2001 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
 
 /* contant definitions */
 
-#define DEFAULT_DEPTH                  0
+/* the additional 'b' is needed for Win32 to open files in binary mode */
+#define MODE_READ              "rb"
+#define MODE_WRITE             "wb"
+#define MODE_APPEND            "ab"
 
-#define FULLSCREEN_NOT_AVAILABLE       FALSE
-#define FULLSCREEN_AVAILABLE           TRUE
+#define DEFAULT_DEPTH          0
+
+#define FULLSCREEN_NOT_AVAILABLE FALSE
+#define FULLSCREEN_AVAILABLE    TRUE
 
 /* values for button_status */
 #define MB_NOT_PRESSED         FALSE
+#define MB_NOT_RELEASED                TRUE
 #define MB_RELEASED            FALSE
 #define MB_PRESSED             TRUE
 #define MB_MENU_CHOICE         FALSE
 #define RW_BASE_PATH           RW_GAME_DIR
 
 #define GRAPHICS_DIRECTORY     "graphics"
+#define MUSIC_DIRECTORY                "music"
 #define SOUNDS_DIRECTORY       "sounds"
 #define LEVELS_DIRECTORY       "levels"
 #define TAPES_DIRECTORY                "tapes"
@@ -149,6 +156,9 @@ struct OptionInfo
   char *ro_base_directory;
   char *rw_base_directory;
   char *level_directory;
+  char *graphics_directory;
+  char *sounds_directory;
+  char *music_directory;
   boolean serveronly;
   boolean network;
   boolean verbose;
@@ -166,12 +176,19 @@ struct VideoSystemInfo
 struct AudioSystemInfo
 {
   boolean sound_available;
+  boolean music_available;
   boolean loops_available;
+  boolean mods_available;
   boolean sound_enabled;
+
   int soundserver_pipe[2];
   int soundserver_pid;
   char *device_name;
   int device_fd;
+
+  int channels;
+  int music_channel;
+  int music_nr;
 };
 
 struct GfxInfo
@@ -255,6 +272,7 @@ extern int          FrameCounter;
 void InitCommandName(char *);
 void InitExitFunction(void (*exit_function)(int));
 void InitPlatformDependantStuff(void);
+void ClosePlatformDependantStuff(void);
 
 void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *);
 
@@ -264,6 +282,7 @@ void InitGfxDoor2Info(int, int, int, int);
 void InitGfxScrollbufferInfo(int, int);
 
 inline void InitVideoDisplay(void);
+inline void CloseVideoDisplay(void);
 inline void InitVideoBuffer(DrawBuffer **,DrawWindow **, int,int,int, boolean);
 inline Bitmap *CreateBitmapStruct(void);
 inline Bitmap *CreateBitmap(int, int, int);
@@ -275,6 +294,7 @@ inline void SetClipOrigin(Bitmap *, GC, int, int);
 inline void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int);
 inline void DrawSimpleWhiteLine(Bitmap *, int, int, int, int);
 inline void DrawLines(Bitmap *, struct XY *, int, Pixel);
+inline Pixel GetPixel(Bitmap *, int, int);
 inline Pixel GetPixelFromRGB(Bitmap *, unsigned int,unsigned int,unsigned int);
 inline Pixel GetPixelFromRGBcompact(Bitmap *, unsigned int);
 
@@ -288,8 +308,8 @@ inline boolean ChangeVideoModeIfNeeded(boolean);
 
 Bitmap *LoadImage(char *);
 
-inline boolean OpenAudio(struct AudioSystemInfo *);
-inline void CloseAudio(struct AudioSystemInfo *);
+inline void OpenAudio(void);
+inline void CloseAudio(void);
 inline void SetAudioMode(boolean);
 
 inline void InitEventFilter(EventFilter);