rnd-20050202-1-src
[rocksndiamonds.git] / src / libgame / system.h
index abed03f0096cd0e639b365e8896e0293ff7a7655..c0fc43600c3cec35618f05c17ba64fae3c7eefee 100644 (file)
 #define BUTTON_1               4
 #define BUTTON_2               5
 
-/* values for move direction and special "button" key bitmasks */
+/* values for move directions and special "button" key bitmasks */
 #define MV_NO_MOVING           0
 #define MV_LEFT                        (1 << MV_BIT_LEFT)
 #define MV_RIGHT               (1 << MV_BIT_RIGHT)
 #define MV_UP                  (1 << MV_BIT_UP)
 #define MV_DOWN                        (1 << MV_BIT_DOWN)
 
+#define MV_HORIZONTAL          (MV_LEFT | MV_RIGHT)
+#define MV_VERTICAL            (MV_UP   | MV_DOWN)
+#define MV_ALL_DIRECTIONS      (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN)
+#define MV_ANY_DIRECTION       (MV_ALL_DIRECTIONS)
+
 #define KEY_BUTTON_1           (1 << BUTTON_1)
 #define KEY_BUTTON_2           (1 << BUTTON_2)
 #define KEY_MOTION             (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN)
                                 (x) == MV_RIGHT ? MV_BIT_RIGHT :       \
                                 (x) == MV_UP    ? MV_BIT_UP    : MV_BIT_DOWN)
 
+#define MV_DIR_OPPOSITE(x)     ((x) == MV_LEFT  ? MV_RIGHT :           \
+                                (x) == MV_RIGHT ? MV_LEFT  :           \
+                                (x) == MV_UP    ? MV_DOWN  :           \
+                                (x) == MV_DOWN  ? MV_UP    : MV_NO_MOVING)
+
 
 /* values for animation mode (frame order and direction) */
 #define ANIM_NONE              0
 #define SETUP_FILENAME         "setup.cnf"
 #define LEVELSETUP_FILENAME    "lvlsetup.cnf"
 #define EDITORSETUP_FILENAME   "edsetup.cnf"
-#define HELPANIM_FILENAME      "helpanim.conf"
-#define HELPTEXT_FILENAME      "helptext.conf"
+#define HELPANIM_FILENAME      "helpanim.cnf"
+#define HELPTEXT_FILENAME      "helptext.cnf"
 #define LEVELINFO_FILENAME     "lvlinfo.cnf"
 #define GRAPHICSINFO_FILENAME  "gfxinfo.cnf"
 #define SOUNDSINFO_FILENAME    "sndinfo.cnf"
    PAGEX3: buffer for animations
 */
 
-#define DOOR_GFX_PAGESIZE      (gfx.dxsize)
+/* these values are hard-coded to be able to use them in initialization */
+#define DOOR_GFX_PAGE_WIDTH    100     /* should be set to "gfx.dxsize" */
+#define DOOR_GFX_PAGE_HEIGHT   280     /* should be set to "gfx.dysize" */
+
+#define DOOR_GFX_PAGESIZE      (DOOR_GFX_PAGE_WIDTH)
 #define DOOR_GFX_PAGEX1                (0 * DOOR_GFX_PAGESIZE)
 #define DOOR_GFX_PAGEX2                (1 * DOOR_GFX_PAGESIZE)
 #define DOOR_GFX_PAGEX3                (2 * DOOR_GFX_PAGESIZE)
 #define DOOR_GFX_PAGEX7                (6 * DOOR_GFX_PAGESIZE)
 #define DOOR_GFX_PAGEX8                (7 * DOOR_GFX_PAGESIZE)
 #define DOOR_GFX_PAGEY1                (0)
-#define DOOR_GFX_PAGEY2                (gfx.dysize)
+#define DOOR_GFX_PAGEY2                (DOOR_GFX_PAGE_HEIGHT)
 
 
 /* macros for version handling */
@@ -541,6 +555,7 @@ struct SetupEditorInfo
 {
   boolean el_boulderdash;
   boolean el_emerald_mine;
+  boolean el_emerald_mine_club;
   boolean el_more;
   boolean el_sokoban;
   boolean el_supaplex;
@@ -617,7 +632,7 @@ struct TreeInfo
 
   /* fields for "type == TREE_TYPE_LEVEL_DIR" */
 
-  char *filename;      /* tree info sub-directory basename (may be ".") */
+  char *subdir;                /* tree info sub-directory basename (may be ".") */
   char *fullpath;      /* complete path relative to tree base directory */
   char *basepath;      /* absolute base path of tree base directory */
   char *identifier;    /* identifier string for configuration files */
@@ -625,6 +640,7 @@ struct TreeInfo
   char *name_sorting;  /* optional sorting name for correct name sorting */
   char *author;                /* level or artwork author name */
   char *imported_from; /* optional comment for imported levels or artwork */
+  char *imported_by;   /* optional comment for imported levels or artwork */
 
   char *graphics_set;  /* optional custom graphics set (level tree only) */
   char *sounds_set;    /* optional custom sounds set (level tree only) */
@@ -633,6 +649,9 @@ struct TreeInfo
   char *sounds_path;   /* path to optional custom sounds set (level only) */
   char *music_path;    /* path to optional custom music set (level only) */
 
+  char *level_filename;        /* filename of level file (for packed level file) */
+  char *level_filetype;        /* type of levels in level directory or level file */
+
   int levels;          /* number of levels in level series */
   int first_level;     /* first level number (to allow start with 0 or 1) */
   int last_level;      /* last level number (automatically calculated) */
@@ -644,6 +663,7 @@ struct TreeInfo
   boolean parent_link; /* entry links back to parent directory */
   boolean user_defined;        /* user defined levels are stored in home directory */
   boolean readonly;    /* readonly levels can not be changed with editor */
+  boolean handicap;    /* level set has no handicap when set to "false" */
 
   int color;           /* color to use on selection screen for this level */
   char *class_desc;    /* description of level series class */
@@ -678,6 +698,12 @@ struct ValueTextInfo
 };
 
 struct ConfigInfo
+{
+  char *token;
+  char *value;
+};
+
+struct ConfigTypeInfo
 {
   char *token;
   char *value;
@@ -737,7 +763,7 @@ struct ArtworkListInfo
   struct FileInfo *dynamic_file_list;          /* dynamic artwrk file array */
 
   int num_suffix_list_entries;
-  struct ConfigInfo *suffix_list;              /* parameter suffixes array */
+  struct ConfigTypeInfo *suffix_list;          /* parameter suffixes array */
 
   int num_base_prefixes;
   int num_ext1_suffixes;
@@ -854,7 +880,7 @@ Bitmap *LoadCustomImage(char *);
 void ReloadCustomImage(Bitmap *, char *);
 
 Bitmap *ZoomBitmap(Bitmap *, int, int);
-void CreateBitmapWithSmallBitmaps(Bitmap *);
+void CreateBitmapWithSmallBitmaps(Bitmap *, int);
 
 void SetMouseCursor(int);