rnd-20030119-1-src
[rocksndiamonds.git] / src / libgame / system.h
index d393bfc00fd6c5f057410c14786db7774c6e92fd..fa722636b27c57679d7628e3f2b6777bb4525836 100644 (file)
@@ -71,7 +71,7 @@
 #define MV_BIT_RIGHT           1
 #define MV_BIT_UP              2
 #define MV_BIT_DOWN            3
-#define NUM_MV_DIRECTIONS      4
+#define NUM_DIRECTIONS         4
 
 #define MV_NO_MOVING           0
 #define MV_LEFT                        (1 << MV_BIT_LEFT)
 /* default name for unknown player names */
 #define ANONYMOUS_NAME         "anonymous"
 
+/* default name for new levels */
+#define NAMELESS_LEVEL_NAME    "nameless level"
+
 /* default text for non-existant artwork */
 #define NOT_AVAILABLE          "(not available)"
 
 /* default value for undefined filename */
 #define UNDEFINED_FILENAME     "[NONE]"
 
-/* default name for new levels */
-#define NAMELESS_LEVEL_NAME    "nameless level"
+/* default values for undefined configuration file parameters */
+#define ARG_UNDEFINED          "-1000000"
+#define ARG_UNDEFINED_VALUE    (atoi(ARG_UNDEFINED))
 
 /* definitions for game sub-directories */
 #ifndef RO_GAME_DIR
@@ -296,7 +300,20 @@ struct GfxInfo
   int vx, vy;
   int vxsize, vysize;
 
-  boolean draw_deactivation_mask;
+  int draw_deactivation_mask;
+  int draw_background_mask;
+
+  Bitmap *background_bitmap;
+  int background_bitmap_mask;
+};
+
+struct FontInfo
+{
+  Bitmap *bitmap_initial;
+  Bitmap *bitmap_big;
+  Bitmap *bitmap_medium;
+  Bitmap *bitmap_small;
+  Bitmap *bitmap_tile;
 };
 
 struct JoystickInfo
@@ -466,6 +483,7 @@ struct ConfigInfo
 {
   char *token;
   char *value;
+  int type;
 };
 
 struct FileInfo
@@ -479,6 +497,14 @@ struct FileInfo
   int *parameter;                              /* array of file parameters */
 };
 
+struct SetupFileList
+{
+  char *token;
+  char *value;
+
+  struct SetupFileList *next;
+};
+
 struct ListNodeInfo
 {
   char *source_filename;                       /* primary key for node list */
@@ -491,9 +517,14 @@ struct ArtworkListInfo
 
   int num_file_list_entries;
   int num_suffix_list_entries;
+  int num_ext1_suffix_list_entries;
+  int num_ext2_suffix_list_entries;
 
   struct FileInfo *file_list;                  /* static artwork file array */
   struct ConfigInfo *suffix_list;              /* parameter suffixes array */
+  struct ConfigInfo *ext1_suffix_list;         /* property suffixes array 1 */
+  struct ConfigInfo *ext2_suffix_list;         /* property suffixes array 2 */
+  struct SetupFileList *custom_setup_list;     /* additional definitions */
 
   struct ListNodeInfo **artwork_list;          /* static artwork node array */
 
@@ -513,6 +544,7 @@ extern struct OptionInfo    options;
 extern struct VideoSystemInfo  video;
 extern struct AudioSystemInfo  audio;
 extern struct GfxInfo          gfx;
+extern struct FontInfo         font;
 extern struct ArtworkInfo      artwork;
 extern struct JoystickInfo     joystick;
 extern struct SetupInfo                setup;
@@ -553,7 +585,10 @@ void InitGfxFieldInfo(int, int, int, int, int, int, int, int);
 void InitGfxDoor1Info(int, int, int, int);
 void InitGfxDoor2Info(int, int, int, int);
 void InitGfxScrollbufferInfo(int, int);
-void SetDrawDeactivationMask(int );
+void SetDrawDeactivationMask(int);
+void SetDrawBackgroundMask(int);
+void SetMainBackgroundBitmap(Bitmap *);
+void SetDoorBackgroundBitmap(Bitmap *);
 
 inline void InitVideoDisplay(void);
 inline void CloseVideoDisplay(void);
@@ -563,9 +598,13 @@ inline Bitmap *CreateBitmap(int, int, int);
 inline void FreeBitmap(Bitmap *);
 inline void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int);
 inline void ClearRectangle(Bitmap *, int, int, int, int);
+inline void ClearRectangleOnBackground(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 boolean DrawingOnBackground(int, int);
+inline void BlitBitmapOnBackground(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);