rnd-20001203-1-src
[rocksndiamonds.git] / src / libgame / system.h
index 5b9a1ef5cc3f342a86cc49a44742612df161edde..25eb0c66c485d83b157228f48dd009e1cb59d2b8 100644 (file)
@@ -15,7 +15,9 @@
 #ifndef SYSTEM_H
 #define SYSTEM_H
 
+/*
 #include "libgame.h"
+*/
 
 #if defined(PLATFORM_MSDOS)
 #include "msdos.h"
 #define FULLSCREEN_AVAILABLE           TRUE
 
 
+/* values for redraw_mask */
+#define REDRAW_ALL             (1 << 0)
+#define REDRAW_FIELD           (1 << 1)
+#define REDRAW_TILES           (1 << 2)
+#define REDRAW_DOOR_1          (1 << 3)
+#define REDRAW_VIDEO_1         (1 << 4)
+#define REDRAW_VIDEO_2         (1 << 5)
+#define REDRAW_VIDEO_3         (1 << 6)
+#define REDRAW_MICROLEVEL      (1 << 7)
+#define REDRAW_FROM_BACKBUFFER (1 << 8)
+#define REDRAW_DOOR_2          (REDRAW_VIDEO_1 | \
+                                REDRAW_VIDEO_2 | \
+                                REDRAW_VIDEO_3)
+#define REDRAW_DOOR_3          (1 << 9)
+#define REDRAW_DOORS           (REDRAW_DOOR_1 | \
+                                REDRAW_DOOR_2 | \
+                                REDRAW_DOOR_3)
+#define REDRAW_MAIN            (REDRAW_FIELD | \
+                                REDRAW_TILES | \
+                                REDRAW_MICROLEVEL)
+#define REDRAW_FPS             (1 << 10)
+#define REDRAWTILES_THRESHOLD  (SCR_FIELDX * SCR_FIELDY / 2)
+
+
 /* type definitions */
 
 typedef int (*EventFilter)(const Event *);
@@ -51,6 +77,21 @@ struct ProgramInfo
   char *icon_title;
   char *x11_icon_filename;
   char *x11_iconmask_filename;
+  char *msdos_pointer_filename;
+};
+
+struct OptionInfo
+{
+  char *display_name;
+  char *server_host;
+  int server_port;
+  char *ro_base_directory;
+  char *rw_base_directory;
+  char *level_directory;
+  boolean serveronly;
+  boolean network;
+  boolean verbose;
+  boolean debug;
 };
 
 struct VideoSystemInfo
@@ -71,18 +112,19 @@ struct AudioSystemInfo
   int device_fd;
 };
 
-struct OptionInfo
+struct PlayfieldInfo
 {
-  char *display_name;
-  char *server_host;
-  int server_port;
-  char *ro_base_directory;
-  char *rw_base_directory;
-  char *level_directory;
-  boolean serveronly;
-  boolean network;
-  boolean verbose;
-  boolean debug;
+  int sx, sy;
+  int sxsize, sysize;
+  int real_sx, real_sy;
+  int full_sxsize, full_sysize;
+  int scrollbuffer_width, scrollbuffer_height;
+
+  int dx, dy;
+  int dxsize, dysize;
+
+  int vx, vy;
+  int vxsize, vysize;
 };
 
 
@@ -91,12 +133,10 @@ struct OptionInfo
 /* ========================================================================= */
 
 extern struct ProgramInfo      program;
+extern struct OptionInfo       options;
 extern struct VideoSystemInfo  video;
 extern struct AudioSystemInfo  audio;
-extern struct OptionInfo       options;
-
-
-/* declarations of internal variables */
+extern struct PlayfieldInfo    playfield;
 
 extern Display        *display;
 extern Visual         *visual;
@@ -104,22 +144,34 @@ extern int                screen;
 extern Colormap                cmap;
 
 extern DrawWindow      window;
-extern GC              gc;
+extern DrawBuffer      backbuffer;
+extern DrawBuffer      drawto;
+
+extern int             redraw_mask;
+extern int             redraw_tiles;
 
 extern int             FrameCounter;
 
 
 /* function definitions */
 
-inline void InitProgramInfo(char *, char *, char *, char *, char *, char *);
+inline void InitProgramInfo(char *, char *, char *, char *, char *, char *,
+                           char *);
+
+inline void InitPlayfieldInfo(int, int, int, int, int, int, int, int);
+inline void InitDoor1Info(int, int, int, int);
+inline void InitDoor2Info(int, int, int, int);
+inline void InitScrollbufferInfo(int, int);
+
 inline void InitVideoDisplay(void);
 inline void InitVideoBuffer(DrawBuffer *,DrawWindow *, int, int, int, boolean);
+inline Bitmap CreateBitmapStruct(void);
 inline Bitmap CreateBitmap(int, int, int);
 inline void FreeBitmap(Bitmap);
-inline void ClearRectangle(Bitmap, int, int, int, int);
 inline void BlitBitmap(Bitmap, Bitmap, int, int, int, int, int, int);
-inline void SetClipMask(GC, Pixmap);
-inline void SetClipOrigin(GC, int, int);
+inline void ClearRectangle(Bitmap, int, int, int, int);
+inline void SetClipMask(Bitmap, GC, Pixmap);
+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 FlushDisplay(void);