rnd-20021027-1-src
[rocksndiamonds.git] / src / main.h
index 0afb5dbbe0c27b02c537939d9e217cc3b6697798..af0b57cfd3ecf6ca0e297993b43ff2a5b9110401 100644 (file)
@@ -32,6 +32,7 @@
 
 #define IMG_EMPTY      IMG_EMPTY_SPACE
 #define IMG_SP_EMPTY   IMG_SP_EMPTY_SPACE
+#define IMG_CHAR_START IMG_CHAR_SPACE
 
 #define WIN_XSIZE      672
 #define WIN_YSIZE      560
 #define TAPE_IS_STOPPED(x)     (!(x).recording && !(x).playing)
 
 #define PLAYERINFO(x,y)                (&stored_player[StorePlayer[x][y]-EL_PLAYER1])
-#define SHIELD_ON(p)           ((p)->shield_passive_time_left > 0)
+#define SHIELD_ON(p)           ((p)->shield_normal_time_left > 0)
 #define PROTECTED_FIELD(x,y)   (IS_TUBE(Feld[x][y]))
 #define PLAYER_PROTECTED(x,y)  (SHIELD_ON(PLAYERINFO(x, y)) ||         \
                                 PROTECTED_FIELD(x, y))
 
+#define PLAYER_NR_GFX(g,i)     ((g) + i * (IMG_PLAYER2 - IMG_PLAYER1))
+
+
+#if 0
+
+/* Bitmaps with graphic file */
+#define PIX_BACK               0
+#define PIX_DOOR               1
+#define PIX_TOONS              2
+#define PIX_FONT_BIG           3
+#define PIX_FONT_SMALL         4
+#define PIX_FONT_MEDIUM                5
+#define PIX_FONT_EM            6
+/* Bitmaps without graphic file */
+#define PIX_DB_DOOR            7
+#define PIX_DB_FIELD           8
+
+#define NUM_PICTURES           7
+#define NUM_BITMAPS            9
+
+#else
+
 /* Bitmaps with graphic file */
 #define PIX_BACK               0
 #define PIX_ELEMENTS           1
 #define NUM_PICTURES           12
 #define NUM_BITMAPS            14
 
+#endif
+
 /* boundaries of arrays etc. */
 #define MAX_LEVEL_NAME_LEN     32
 #define MAX_LEVEL_AUTHOR_LEN   32
 #define MICRO_GFX_PER_LINE     16
 
 #define MINI_FONT_STARTX       0
-#define MINI_FONT_STARTY       128
-#define MICRO_FONT_STARTX      408
-#define MICRO_FONT_STARTY      128
+#define MINI_FONT_STARTY       160
+#define MICRO_FONT_STARTX      384
+#define MICRO_FONT_STARTY      160
 
 #define HEROES_PER_LINE                16
 
 #define EL_EM_KEY1_FILE                        119
 
 #define EL_CHAR_START                  120
-#define EL_CHAR_ASCII0                 (EL_CHAR_START-32)
-#define EL_CHAR_EXCLAM                 (EL_CHAR_ASCII0+33)
-#define EL_CHAR_QUOTEDBL               (EL_CHAR_ASCII0+34)
-#define EL_CHAR_NUMBERSIGN             (EL_CHAR_ASCII0+35)
-#define EL_CHAR_DOLLAR                 (EL_CHAR_ASCII0+36)
-#define EL_CHAR_PROCENT                        (EL_CHAR_ASCII0+37)
-#define EL_CHAR_AMPERSAND              (EL_CHAR_ASCII0+38)
-#define EL_CHAR_APOSTROPHE             (EL_CHAR_ASCII0+39)
-#define EL_CHAR_PARENLEFT              (EL_CHAR_ASCII0+40)
-#define EL_CHAR_PARENRIGHT             (EL_CHAR_ASCII0+41)
-#define EL_CHAR_ASTERISK               (EL_CHAR_ASCII0+42)
-#define EL_CHAR_PLUS                   (EL_CHAR_ASCII0+43)
-#define EL_CHAR_COMMA                  (EL_CHAR_ASCII0+44)
-#define EL_CHAR_MINUS                  (EL_CHAR_ASCII0+45)
-#define EL_CHAR_PERIOD                 (EL_CHAR_ASCII0+46)
-#define EL_CHAR_SLASH                  (EL_CHAR_ASCII0+47)
-#define EL_CHAR_0                      (EL_CHAR_ASCII0+48)
-#define EL_CHAR_9                      (EL_CHAR_ASCII0+57)
-#define EL_CHAR_COLON                  (EL_CHAR_ASCII0+58)
-#define EL_CHAR_SEMICOLON              (EL_CHAR_ASCII0+59)
-#define EL_CHAR_LESS                   (EL_CHAR_ASCII0+60)
-#define EL_CHAR_EQUAL                  (EL_CHAR_ASCII0+61)
-#define EL_CHAR_GREATER                        (EL_CHAR_ASCII0+62)
-#define EL_CHAR_QUESTION               (EL_CHAR_ASCII0+63)
-#define EL_CHAR_AT                     (EL_CHAR_ASCII0+64)
-#define EL_CHAR_A                      (EL_CHAR_ASCII0+65)
-#define EL_CHAR_Z                      (EL_CHAR_ASCII0+90)
-#define EL_CHAR_AE                     (EL_CHAR_ASCII0+91)
-#define EL_CHAR_OE                     (EL_CHAR_ASCII0+92)
-#define EL_CHAR_UE                     (EL_CHAR_ASCII0+93)
-#define EL_CHAR_COPYRIGHT              (EL_CHAR_ASCII0+94)
-#define EL_CHAR_END                    (EL_CHAR_START+79)
+#define EL_CHAR_ASCII0                 (EL_CHAR_START  - 32)
+#define EL_CHAR_EXCLAM                 (EL_CHAR_ASCII0 + 33)
+#define EL_CHAR_QUOTEDBL               (EL_CHAR_ASCII0 + 34)
+#define EL_CHAR_NUMBERSIGN             (EL_CHAR_ASCII0 + 35)
+#define EL_CHAR_DOLLAR                 (EL_CHAR_ASCII0 + 36)
+#define EL_CHAR_PROCENT                        (EL_CHAR_ASCII0 + 37)
+#define EL_CHAR_AMPERSAND              (EL_CHAR_ASCII0 + 38)
+#define EL_CHAR_APOSTROPHE             (EL_CHAR_ASCII0 + 39)
+#define EL_CHAR_PARENLEFT              (EL_CHAR_ASCII0 + 40)
+#define EL_CHAR_PARENRIGHT             (EL_CHAR_ASCII0 + 41)
+#define EL_CHAR_ASTERISK               (EL_CHAR_ASCII0 + 42)
+#define EL_CHAR_PLUS                   (EL_CHAR_ASCII0 + 43)
+#define EL_CHAR_COMMA                  (EL_CHAR_ASCII0 + 44)
+#define EL_CHAR_MINUS                  (EL_CHAR_ASCII0 + 45)
+#define EL_CHAR_PERIOD                 (EL_CHAR_ASCII0 + 46)
+#define EL_CHAR_SLASH                  (EL_CHAR_ASCII0 + 47)
+#define EL_CHAR_0                      (EL_CHAR_ASCII0 + 48)
+#define EL_CHAR_9                      (EL_CHAR_ASCII0 + 57)
+#define EL_CHAR_COLON                  (EL_CHAR_ASCII0 + 58)
+#define EL_CHAR_SEMICOLON              (EL_CHAR_ASCII0 + 59)
+#define EL_CHAR_LESS                   (EL_CHAR_ASCII0 + 60)
+#define EL_CHAR_EQUAL                  (EL_CHAR_ASCII0 + 61)
+#define EL_CHAR_GREATER                        (EL_CHAR_ASCII0 + 62)
+#define EL_CHAR_QUESTION               (EL_CHAR_ASCII0 + 63)
+#define EL_CHAR_AT                     (EL_CHAR_ASCII0 + 64)
+#define EL_CHAR_A                      (EL_CHAR_ASCII0 + 65)
+#define EL_CHAR_Z                      (EL_CHAR_ASCII0 + 90)
+#define EL_CHAR_AE                     (EL_CHAR_ASCII0 + 91)
+#define EL_CHAR_OE                     (EL_CHAR_ASCII0 + 92)
+#define EL_CHAR_UE                     (EL_CHAR_ASCII0 + 93)
+#define EL_CHAR_COPYRIGHT              (EL_CHAR_ASCII0 + 94)
+#define EL_CHAR_END                    (EL_CHAR_START  + 79)
 
 #define EL_CHAR(x)                     ((x) == 'Ä' ? EL_CHAR_AE : \
                                         (x) == 'Ö' ? EL_CHAR_OE : \
 
 #define EL_BLOCKED                     (EL_FIRST_RUNTIME_UNREAL + 0)
 #define EL_EXPLOSION                   (EL_FIRST_RUNTIME_UNREAL + 1)
-#define EL_CRACKINGNUT                 (EL_FIRST_RUNTIME_UNREAL + 2)
-#define EL_ACID_SPLASHING_LEFT         (EL_FIRST_RUNTIME_UNREAL + 3)
-#define EL_ACID_SPLASHING_RIGHT                (EL_FIRST_RUNTIME_UNREAL + 4)
+#define EL_NUT_CRACKING                        (EL_FIRST_RUNTIME_UNREAL + 2)
+#define EL_ACID_SPLASH_LEFT            (EL_FIRST_RUNTIME_UNREAL + 3)
+#define EL_ACID_SPLASH_RIGHT           (EL_FIRST_RUNTIME_UNREAL + 4)
 #define EL_AMOEBA_CREATING             (EL_FIRST_RUNTIME_UNREAL + 5)
 #define EL_AMOEBA_SHRINKING            (EL_FIRST_RUNTIME_UNREAL + 6)
 #define EL_WALL_GROWING_ACTIVE         (EL_FIRST_RUNTIME_UNREAL + 7)
 #define EL_BD_AMOEBA_PART2                     (EL_FIRST_DUMMY + 14)
 #define EL_BD_AMOEBA_PART3                     (EL_FIRST_DUMMY + 15)
 #define EL_BD_AMOEBA_PART4                     (EL_FIRST_DUMMY + 16)
-#define EL_AMOEBA_PART1                                (EL_FIRST_DUMMY + 17)
-#define EL_AMOEBA_PART2                                (EL_FIRST_DUMMY + 18)
-#define EL_AMOEBA_PART3                                (EL_FIRST_DUMMY + 19)
-#define EL_AMOEBA_PART4                                (EL_FIRST_DUMMY + 20)
-#define EL_AMOEBA_DEAD_PART1                   (EL_FIRST_DUMMY + 21)
-#define EL_AMOEBA_DEAD_PART2                   (EL_FIRST_DUMMY + 22)
-#define EL_AMOEBA_DEAD_PART3                   (EL_FIRST_DUMMY + 23)
-#define EL_AMOEBA_DEAD_PART4                   (EL_FIRST_DUMMY + 24)
-#define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 25)
-#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 26)
-#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 27)
-#define EL_ARROW_RED_LEFT                      (EL_FIRST_DUMMY + 28)
-#define EL_ARROW_RED_RIGHT                     (EL_FIRST_DUMMY + 29)
-#define EL_ARROW_RED_UP                                (EL_FIRST_DUMMY + 30)
-#define EL_ARROW_RED_DOWN                      (EL_FIRST_DUMMY + 31)
-
-#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 32)
+#define EL_AMOEBA_WET_PART1                    (EL_FIRST_DUMMY + 17)
+#define EL_AMOEBA_WET_PART2                    (EL_FIRST_DUMMY + 18)
+#define EL_AMOEBA_WET_PART3                    (EL_FIRST_DUMMY + 19)
+#define EL_AMOEBA_WET_PART4                    (EL_FIRST_DUMMY + 20)
+#define EL_AMOEBA_DRY_PART1                    (EL_FIRST_DUMMY + 21)
+#define EL_AMOEBA_DRY_PART2                    (EL_FIRST_DUMMY + 22)
+#define EL_AMOEBA_DRY_PART3                    (EL_FIRST_DUMMY + 23)
+#define EL_AMOEBA_DRY_PART4                    (EL_FIRST_DUMMY + 24)
+#define EL_AMOEBA_DEAD_PART1                   (EL_FIRST_DUMMY + 25)
+#define EL_AMOEBA_DEAD_PART2                   (EL_FIRST_DUMMY + 26)
+#define EL_AMOEBA_DEAD_PART3                   (EL_FIRST_DUMMY + 27)
+#define EL_AMOEBA_DEAD_PART4                   (EL_FIRST_DUMMY + 28)
+#define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 29)
+#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 30)
+#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 31)
+#define EL_ARROW_RED_LEFT                      (EL_FIRST_DUMMY + 32)
+#define EL_ARROW_RED_RIGHT                     (EL_FIRST_DUMMY + 33)
+#define EL_ARROW_RED_UP                                (EL_FIRST_DUMMY + 34)
+#define EL_ARROW_RED_DOWN                      (EL_FIRST_DUMMY + 35)
+
+#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 36)
 
 
 /* game graphics:
 #define GFX_ARG_OFFSET                         2
 #define GFX_ARG_VERTICAL                       3
 #define GFX_ARG_FRAMES                         4
-#define GFX_ARG_DELAY                          5
-#define GFX_ARG_MODE_LOOP                      6
-#define GFX_ARG_MODE_LINEAR                    7
-#define GFX_ARG_MODE_PINGPONG                  8
-#define GFX_ARG_MODE_PINGPONG2                 9
-#define GFX_ARG_MODE_REVERSE                   10
-#define GFX_ARG_GLOBAL_SYNC                    11
+#define GFX_ARG_START_FRAME                    5
+#define GFX_ARG_DELAY                          6
+#define GFX_ARG_MODE_LOOP                      7
+#define GFX_ARG_MODE_LINEAR                    8
+#define GFX_ARG_MODE_PINGPONG                  9
+#define GFX_ARG_MODE_PINGPONG2                 10
+#define GFX_ARG_MODE_REVERSE                   11
+#define GFX_ARG_GLOBAL_SYNC                    12
 
 /* values for sound configuration suffixes */
 /* (currently none) */
@@ -1466,8 +1496,8 @@ struct PlayerInfo
   int key[4];
   int dynamite;
   int dynabomb_count, dynabomb_size, dynabombs_left, dynabomb_xl;
-  int shield_passive_time_left;
-  int shield_active_time_left;
+  int shield_normal_time_left;
+  int shield_deadly_time_left;
 };
 
 struct LevelInfo
@@ -1581,6 +1611,7 @@ struct NewGraphicInfo
   int src_x, src_y;            /* derived from (tile sized) .xpos/.ypos */
   int offset_x, offset_y;      /* x/y offset to next animation frame */
   int anim_frames;
+  int anim_start_frame;
   int anim_delay;              /* important: delay of 1 means "no delay"! */
   int anim_mode;
   boolean anim_global_sync;