rnd-20030406-1-src
[rocksndiamonds.git] / src / main.h
index 991d0eca677e8daaa8c0f7d0fe8d370d27ad5f3f..a3ce361adbe422a512545977d6e7bad967a7e627 100644 (file)
 #define EP_BIT_BELT_SWITCH     (1 << 2)
 #define EP_BIT_TUBE            (1 << 3)
 #define EP_BIT_EM_SLIPPERY_WALL        (1 << 4)
+#define EP_BIT_CAN_BE_CRUMBLED (1 << 5)
 
 #define EP_BITMASK_DEFAULT     0
 
 #define IS_BELT_SWITCH(e)      (Properties2[e] & EP_BIT_BELT_SWITCH)
 #define IS_TUBE(e)             (Properties2[e] & EP_BIT_TUBE)
 #define IS_EM_SLIPPERY_WALL(e) (Properties2[e] & EP_BIT_EM_SLIPPERY_WALL)
+#define CAN_BE_CRUMBLED(e)     (Properties2[e] & EP_BIT_CAN_BE_CRUMBLED)
 
 #define IS_CUSTOM_ELEMENT(e)   ((e) >= EL_CUSTOM_START &&      \
                                 (e) <= EL_CUSTOM_END)
 #define EL_CHAR_ASCII0_END             (EL_CHAR_ASCII0 + 111)
 #define EL_CHAR_END                    (EL_CHAR_START  + 79)
 
+#define EL_CHAR(c)                     (EL_CHAR_ASCII0 + MAP_FONT_ASCII(c))
+
+#if 0
 #define EL_CHAR(x)                     ((x) == 'Ä' ? EL_CHAR_AE         : \
                                         (x) == 'Ö' ? EL_CHAR_OE         : \
                                         (x) == 'Ü' ? EL_CHAR_UE         : \
-                                        (x) == '^' ? EL_CHAR_COPYRIGHT  : \
+                                        (x) == 'ä' ? EL_CHAR_AE         : \
+                                        (x) == 'ö' ? EL_CHAR_OE         : \
+                                        (x) == 'ü' ? EL_CHAR_UE         : \
+                                        (x) == '©' ? EL_CHAR_COPYRIGHT  : \
                                         (x) == '_' ? EL_CHAR_UNDERSCORE : \
                                         (x) == '°' ? EL_CHAR_DEGREE     : \
                                         (x) == '´' ? EL_CHAR_TM         : \
                                         (x) == '|' ? EL_CHAR_CURSOR     : \
                                         EL_CHAR_A + (x) - 'A')
+#endif
 
 #define EL_EXPANDABLE_WALL_HORIZONTAL  200
 #define EL_EXPANDABLE_WALL_VERTICAL    201
 #define GFX_ARG_POSITION                       19
 #define GFX_ARG_DRAW_XOFFSET                   20
 #define GFX_ARG_DRAW_YOFFSET                   21
-#define GFX_ARG_FORMAT                         22
-#define GFX_ARG_NAME                           23
+#define GFX_ARG_NAME                           22
 
-#define NUM_GFX_ARGS                           24
+#define NUM_GFX_ARGS                           23
 
 
 /* values for sound configuration suffixes */
 #define NUM_FONTS                              21
 #define NUM_INITIAL_FONTS                      4
 
-
 /* values for game_status */
 #define EXITGAME               0
 #define MAINMENU               1
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
-#define PROGRAM_RIGHTS_STRING  "Copyright ^1995-2003 by"
+#define PROGRAM_RIGHTS_STRING  "Copyright ©1995-2003 by"
 #define PROGRAM_DOS_PORT_STRING        "DOS port done by Guido Schulz"
 #define PROGRAM_IDENT_STRING   PROGRAM_VERSION_STRING " " TARGET_STRING
 #define WINDOW_TITLE_STRING    PROGRAM_TITLE_STRING " " PROGRAM_IDENT_STRING
 #define WINDOW_SUBTITLE_STRING PROGRAM_RIGHTS_STRING " " PROGRAM_AUTHOR_STRING
 #define ICON_TITLE_STRING      PROGRAM_TITLE_STRING
-#define UNIX_USERDATA_DIRECTORY        ".rocksndiamonds"
 #define COOKIE_PREFIX          "ROCKSNDIAMONDS"
 #define FILENAME_PREFIX                "Rocks"
 
+#if defined(PLATFORM_UNIX)
+#define USERDATA_DIRECTORY     ".rocksndiamonds"
+#elif defined(PLATFORM_WIN32)
+#define USERDATA_DIRECTORY     PROGRAM_TITLE_STRING
+#else
+#define USERDATA_DIRECTORY     "userdata"
+#endif
+
 #define X11_ICON_FILENAME      "rocks_icon.xbm"
 #define X11_ICONMASK_FILENAME  "rocks_iconmask.xbm"
 #define MSDOS_POINTER_FILENAME "mouse.pcx"
@@ -920,8 +934,8 @@ struct PlayerInfo
                                   through doors); overrides other actions */
 
   int jx,jy, last_jx,last_jy;
-  int MovDir, MovPos, GfxPos;
-  int Frame;
+  int MovDir, MovPos, GfxDir, GfxPos;
+  int Frame, StepFrame;
 
   int GfxAction;
 
@@ -935,9 +949,9 @@ struct PlayerInfo
 
   int last_move_dir;
   boolean is_moving;
-
-  boolean is_digging;
   boolean is_waiting;
+  boolean is_digging;
+  boolean is_collecting;
 
   unsigned long move_delay;
   int move_delay_value;
@@ -996,6 +1010,7 @@ struct TapeInfo
   int game_version;    /* game release version the tape was created with */
   int engine_version;  /* game engine version the tape was recorded with */
 
+  char *level_identifier;
   int level_nr;
   unsigned long random_seed;
   unsigned long date;
@@ -1050,6 +1065,14 @@ struct GlobalInfo
 
   int num_toons;
 
+  int menu_draw_xoffset;
+  int menu_draw_yoffset;
+  int menu_draw_xoffset_MAIN;
+  int menu_draw_yoffset_MAIN;
+
+  int door_step_offset;
+  int door_step_delay;
+
   float frames_per_second;
   boolean fps_slowdown;
   int fps_slowdown_factor;
@@ -1089,6 +1112,7 @@ struct GraphicInfo
   int width, height;           /* width/height of each animation frame */
   int offset_x, offset_y;      /* x/y offset to next animation frame */
   int anim_frames;
+  int anim_frames_per_line;
   int anim_start_frame;
   int anim_delay;              /* important: delay of 1 means "no delay"! */
   int anim_mode;
@@ -1170,6 +1194,7 @@ extern unsigned long              Properties2[MAX_NUM_ELEMENTS];
 extern int                     GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int                     GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 
 extern int                     lev_fieldx, lev_fieldy;
 extern int                     scroll_x, scroll_y;