rnd-20020803-1-src
[rocksndiamonds.git] / src / main.h
index e51f115752395cde726553c1de75a0e2a9c737ae..17136765340ef86cc56b8c5368f4a9af4452b3cd 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Rocks'n'Diamonds -- McDuffin Strikes Back!               *
 *----------------------------------------------------------*
-* (c) 1995-2001 Artsoft Entertainment                      *
+* (c) 1995-2002 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
@@ -254,7 +254,8 @@ struct PlayerInfo
 struct LevelInfo
 {
   int file_version;    /* file format version the level is stored with    */
-  int game_version;    /* game engine version the level was created with  */
+  int game_version;    /* game release version the level was created with */
+
   boolean encoding_16bit_field;                /* level contains 16-bit elements  */
   boolean encoding_16bit_yamyam;       /* yamyam contains 16-bit elements */
   boolean encoding_16bit_amoeba;       /* amoeba contains 16-bit elements */
@@ -281,9 +282,10 @@ struct LevelInfo
 
 struct TapeInfo
 {
-  int file_version;    /* file format version the tape is stored with   */
-  int game_version;    /* game engine version the tape was created with */
-  int version;
+  int file_version;    /* file format version the tape is stored with    */
+  int game_version;    /* game release version the tape was created with */
+  int engine_version;  /* game engine version the tape was recorded with */
+
   int level_nr;
   unsigned long random_seed;
   unsigned long date;
@@ -310,8 +312,13 @@ struct TapeInfo
 
 struct GameInfo
 {
-  int version;
+  /* constant within running game */
+  int engine_version;
   int emulation;
+  int initial_move_delay;
+  int initial_move_delay_value;
+
+  /* variable within running game */
   int yam_content_nr;
   boolean magic_wall_active;
   int magic_wall_time_left;
@@ -1450,170 +1457,166 @@ extern struct SoundEffectInfo sound_effects[];
 #define SND_BD_MAGIC_WALL_RUNNING              8
 #define SND_BD_AMOEBA_WAITING                  9
 #define SND_BD_AMOEBA_CREATING                 10
-#define SND_BD_AMOEBA_GROWING                  11
-#define SND_BD_AMOEBA_TURNING_TO_GEM           12
-#define SND_BD_AMOEBA_TURNING_TO_ROCK          13
-#define SND_BD_BUTTERFLY_MOVING                        14
-#define SND_BD_BUTTERFLY_WAITING               15
-#define SND_BD_FIREFLY_MOVING                  16
-#define SND_BD_FIREFLY_WAITING                 17
-#define SND_BD_EXIT_ENTERING                   18
-#define SND_SP_EMPTY_SPACE_DIGGING             19
-#define SND_SP_BASE_DIGGING                    20
-#define SND_SP_BUGGY_BASE_DIGGING              21
-#define SND_SP_BUGGY_BASE_ACTIVATING           22
-#define SND_SP_INFOTRON_COLLECTING             23
-#define SND_SP_INFOTRON_IMPACT                 24
-#define SND_SP_ZONK_PUSHING                    25
-#define SND_SP_ZONK_IMPACT                     26
-#define SND_SP_DISK_RED_COLLECTING             27
-#define SND_SP_DISK_ORANGE_PUSHING             28
-#define SND_SP_DISK_YELLOW_PUSHING             29
-#define SND_SP_PORT_PASSING                    30
-#define SND_SP_EXIT_ENTERING                   31
-#define SND_SP_ELEMENT_EXPLODING               32
-#define SND_SP_SNIKSNAK_MOVING                 33
-#define SND_SP_SNIKSNAK_WAITING                        34
-#define SND_SP_ELECTRON_MOVING                 35
-#define SND_SP_ELECTRON_WAITING                        36
-#define SND_SP_TERMINAL_ACTIVATING             37
-#define SND_SOKOBAN_OBJECT_PUSHING             38
-#define SND_SOKOBAN_FIELD_FILLING              39
-#define SND_SOKOBAN_FIELD_CLEARING             40
-#define SND_SOKOBAN_GAME_SOLVING               41
-#define SND_EMPTY_SPACE_DIGGING                        42
-#define SND_SAND_DIGGING                       43
-#define SND_EMERALD_COLLECTING                 44
-#define SND_EMERALD_IMPACT                     45
-#define SND_DIAMOND_COLLECTING                 46
-#define SND_DIAMOND_IMPACT                     47
-#define SND_DIAMOND_BREAKING                   48
-#define SND_ROCK_PUSHING                       49
-#define SND_ROCK_IMPACT                                50
-#define SND_BOMB_PUSHING                       51
-#define SND_NUT_PUSHING                                52
-#define SND_NUT_CRACKING                       53
-#define SND_NUT_IMPACT                         54
-#define SND_DYNAMITE_COLLECTING                        55
-#define SND_DYNAMITE_PLACING                   56
-#define SND_DYNAMITE_BURNING                   57
-#define SND_KEY_COLLECTING                     58
-#define SND_GATE_PASSING                       59
-#define SND_BUG_MOVING                         60
-#define SND_BUG_WAITING                                61
-#define SND_SPACESHIP_MOVING                   62
-#define SND_SPACESHIP_WAITING                  63
-#define SND_YAMYAM_MOVING                      64
-#define SND_YAMYAM_WAITING                     65
-#define SND_YAMYAM_EATING_DIAMOND              66
-#define SND_ROBOT_STEPPING                     67
-#define SND_ROBOT_WAITING                      68
-#define SND_ROBOT_WHEEL_ACTIVATING             69
-#define SND_ROBOT_WHEEL_RUNNING                        70
-#define SND_MAGIC_WALL_ACTIVATING              71
-#define SND_MAGIC_WALL_CHANGING                        72
-#define SND_MAGIC_WALL_RUNNING                 73
-#define SND_AMOEBA_WAITING                     74
-#define SND_AMOEBA_CREATING                    75
-#define SND_AMOEBA_GROWING                     76
-#define SND_AMOEBA_DROPPING                    77
-#define SND_ACID_SPLASHING                     78
-#define SND_QUICKSAND_FILLING                  79
-#define SND_QUICKSAND_SLIPPING_THROUGH         80
-#define SND_QUICKSAND_EMPTYING                 81
-#define SND_EXIT_OPENING                       82
-#define SND_EXIT_ENTERING                      83
-#define SND_BALLOON_MOVING                     84
-#define SND_BALLOON_WAITING                    85
-#define SND_BALLOON_PUSHING                    86
-#define SND_BALLOON_SWITCH_ACTIVATING          87
-#define SND_SPRING_MOVING                      88
-#define SND_SPRING_PUSHING                     89
-#define SND_SPRING_IMPACT                      90
-#define SND_WALL_GROWING                       91
-#define SND_PEARL_COLLECTING                   92
-#define SND_PEARL_BREAKING                     93
-#define SND_PEARL_IMPACT                       94
-#define SND_CRYSTAL_COLLECTING                 95
-#define SND_CRYSTAL_IMPACT                     96
-#define SND_ENVELOPE_COLLECTING                        97
-#define SND_SAND_INVISIBLE_DIGGING             98
-#define SND_SHIELD_PASSIVE_COLLECTING          99
-#define SND_SHIELD_PASSIVE_ACTIVATED           100
-#define SND_SHIELD_ACTIVE_COLLECTING           101
-#define SND_SHIELD_ACTIVE_ACTIVATED            102
-#define SND_EXTRA_TIME_COLLECTING              103
-#define SND_MOLE_MOVING                                104
-#define SND_MOLE_WAITING                       105
-#define SND_MOLE_EATING_AMOEBA                 106
-#define SND_SWITCHGATE_SWITCH_ACTIVATING       107
-#define SND_SWITCHGATE_OPENING                 108
-#define SND_SWITCHGATE_CLOSING                 109
-#define SND_SWITCHGATE_PASSING                 110
-#define SND_TIMEGATE_WHEEL_ACTIVATING          111
-#define SND_TIMEGATE_WHEEL_RUNNING             112
-#define SND_TIMEGATE_OPENING                   113
-#define SND_TIMEGATE_CLOSING                   114
-#define SND_TIMEGATE_PASSING                   115
-#define SND_CONVEYOR_BELT_SWITCH_ACTIVATING    116
-#define SND_CONVEYOR_BELT_RUNNING              117
-#define SND_LIGHT_SWITCH_ACTIVATING            118
-#define SND_LIGHT_SWITCH_DEACTIVATING          119
-#define SND_DX_BOMB_PUSHING                    120
-#define SND_TRAP_INACTIVE_DIGGING              121
-#define SND_TRAP_ACTIVATING                    122
-#define SND_TUBE_PASSING                       123
-#define SND_AMOEBA_TURNING_TO_GEM              124
-#define SND_AMOEBA_TURNING_TO_ROCK             125
-#define SND_SPEED_PILL_COLLECTING              126
-#define SND_DYNABOMB_NR_COLLECTING             127
-#define SND_DYNABOMB_SZ_COLLECTING             128
-#define SND_DYNABOMB_XL_COLLECTING             129
-#define SND_DYNABOMB_PLACING                   130
-#define SND_DYNABOMB_BURNING                   131
-#define SND_SATELLITE_MOVING                   132
-#define SND_SATELLITE_WAITING                  133
-#define SND_SATELLITE_PUSHING                  134
-#define SND_LAMP_ACTIVATING                    135
-#define SND_LAMP_DEACTIVATING                  136
-#define SND_TIME_ORB_FULL_COLLECTING           137
-#define SND_TIME_ORB_FULL_IMPACT               138
-#define SND_TIME_ORB_EMPTY_PUSHING             139
-#define SND_TIME_ORB_EMPTY_IMPACT              140
-#define SND_GAMEOFLIFE_WAITING                 141
-#define SND_GAMEOFLIFE_CREATING                        142
-#define SND_GAMEOFLIFE_GROWING                 143
-#define SND_BIOMAZE_WAITING                    144
-#define SND_BIOMAZE_CREATING                   145
-#define SND_BIOMAZE_GROWING                    146
-#define SND_PACMAN_MOVING                      147
-#define SND_PACMAN_WAITING                     148
-#define SND_PACMAN_EATING_AMOEBA               149
-#define SND_DARK_YAMYAM_MOVING                 150
-#define SND_DARK_YAMYAM_WAITING                        151
-#define SND_DARK_YAMYAM_EATING_ANY             152
-#define SND_PENGUIN_MOVING                     153
-#define SND_PENGUIN_WAITING                    154
-#define SND_PENGUIN_ENTERING_EXIT              155
-#define SND_PIG_MOVING                         156
-#define SND_PIG_WAITING                                157
-#define SND_PIG_EATING_GEM                     158
-#define SND_DRAGON_MOVING                      159
-#define SND_DRAGON_WAITING                     160
-#define SND_DRAGON_ATTACKING                   161
-#define SND_PLAYER_DYING                       162
-#define SND_ELEMENT_EXPLODING                  163
-#define SND_GAME_STARTING                      164
-#define SND_GAME_RUNNING_OUT_OF_TIME           165
-#define SND_GAME_LEVELTIME_BONUS               166
-#define SND_GAME_LOSING                                167
-#define SND_GAME_WINNING                       168
-#define SND_MENU_DOOR_OPENING                  169
-#define SND_MENU_DOOR_CLOSING                  170
-#define SND_MENU_HALL_OF_FAME                  171
-#define SND_MENU_INFO_SCREEN                   172
-
-#define NUM_SOUND_EFFECTS                      173
+#define SND_BD_AMOEBA_TURNING_TO_GEM           11
+#define SND_BD_AMOEBA_TURNING_TO_ROCK          12
+#define SND_BD_BUTTERFLY_MOVING                        13
+#define SND_BD_BUTTERFLY_WAITING               14
+#define SND_BD_FIREFLY_MOVING                  15
+#define SND_BD_FIREFLY_WAITING                 16
+#define SND_BD_EXIT_ENTERING                   17
+#define SND_SP_EMPTY_SPACE_DIGGING             18
+#define SND_SP_BASE_DIGGING                    19
+#define SND_SP_BUGGY_BASE_DIGGING              20
+#define SND_SP_BUGGY_BASE_ACTIVATING           21
+#define SND_SP_INFOTRON_COLLECTING             22
+#define SND_SP_INFOTRON_IMPACT                 23
+#define SND_SP_ZONK_PUSHING                    24
+#define SND_SP_ZONK_IMPACT                     25
+#define SND_SP_DISK_RED_COLLECTING             26
+#define SND_SP_DISK_ORANGE_PUSHING             27
+#define SND_SP_DISK_YELLOW_PUSHING             28
+#define SND_SP_PORT_PASSING                    29
+#define SND_SP_EXIT_ENTERING                   30
+#define SND_SP_ELEMENT_EXPLODING               31
+#define SND_SP_SNIKSNAK_MOVING                 32
+#define SND_SP_SNIKSNAK_WAITING                        33
+#define SND_SP_ELECTRON_MOVING                 34
+#define SND_SP_ELECTRON_WAITING                        35
+#define SND_SP_TERMINAL_ACTIVATING             36
+#define SND_SOKOBAN_OBJECT_PUSHING             37
+#define SND_SOKOBAN_FIELD_FILLING              38
+#define SND_SOKOBAN_FIELD_CLEARING             39
+#define SND_SOKOBAN_GAME_SOLVING               40
+#define SND_EMPTY_SPACE_DIGGING                        41
+#define SND_SAND_DIGGING                       42
+#define SND_EMERALD_COLLECTING                 43
+#define SND_EMERALD_IMPACT                     44
+#define SND_DIAMOND_COLLECTING                 45
+#define SND_DIAMOND_IMPACT                     46
+#define SND_DIAMOND_BREAKING                   47
+#define SND_ROCK_PUSHING                       48
+#define SND_ROCK_IMPACT                                49
+#define SND_BOMB_PUSHING                       50
+#define SND_NUT_PUSHING                                51
+#define SND_NUT_CRACKING                       52
+#define SND_NUT_IMPACT                         53
+#define SND_DYNAMITE_COLLECTING                        54
+#define SND_DYNAMITE_PLACING                   55
+#define SND_DYNAMITE_BURNING                   56
+#define SND_KEY_COLLECTING                     57
+#define SND_GATE_PASSING                       58
+#define SND_BUG_MOVING                         59
+#define SND_BUG_WAITING                                60
+#define SND_SPACESHIP_MOVING                   61
+#define SND_SPACESHIP_WAITING                  62
+#define SND_YAMYAM_MOVING                      63
+#define SND_YAMYAM_WAITING                     64
+#define SND_YAMYAM_EATING_DIAMOND              65
+#define SND_ROBOT_STEPPING                     66
+#define SND_ROBOT_WAITING                      67
+#define SND_ROBOT_WHEEL_ACTIVATING             68
+#define SND_ROBOT_WHEEL_RUNNING                        69
+#define SND_MAGIC_WALL_ACTIVATING              70
+#define SND_MAGIC_WALL_CHANGING                        71
+#define SND_MAGIC_WALL_RUNNING                 72
+#define SND_AMOEBA_WAITING                     73
+#define SND_AMOEBA_CREATING                    74
+#define SND_AMOEBA_DROPPING                    75
+#define SND_ACID_SPLASHING                     76
+#define SND_QUICKSAND_FILLING                  77
+#define SND_QUICKSAND_SLIPPING_THROUGH         78
+#define SND_QUICKSAND_EMPTYING                 79
+#define SND_EXIT_OPENING                       80
+#define SND_EXIT_ENTERING                      81
+#define SND_BALLOON_MOVING                     82
+#define SND_BALLOON_WAITING                    83
+#define SND_BALLOON_PUSHING                    84
+#define SND_BALLOON_SWITCH_ACTIVATING          85
+#define SND_SPRING_MOVING                      86
+#define SND_SPRING_PUSHING                     87
+#define SND_SPRING_IMPACT                      88
+#define SND_WALL_GROWING                       89
+#define SND_PEARL_COLLECTING                   90
+#define SND_PEARL_BREAKING                     91
+#define SND_PEARL_IMPACT                       92
+#define SND_CRYSTAL_COLLECTING                 93
+#define SND_CRYSTAL_IMPACT                     94
+#define SND_ENVELOPE_COLLECTING                        95
+#define SND_SAND_INVISIBLE_DIGGING             96
+#define SND_SHIELD_PASSIVE_COLLECTING          97
+#define SND_SHIELD_PASSIVE_ACTIVATED           98
+#define SND_SHIELD_ACTIVE_COLLECTING           99
+#define SND_SHIELD_ACTIVE_ACTIVATED            100
+#define SND_EXTRA_TIME_COLLECTING              101
+#define SND_MOLE_MOVING                                102
+#define SND_MOLE_WAITING                       103
+#define SND_MOLE_EATING_AMOEBA                 104
+#define SND_SWITCHGATE_SWITCH_ACTIVATING       105
+#define SND_SWITCHGATE_OPENING                 106
+#define SND_SWITCHGATE_CLOSING                 107
+#define SND_SWITCHGATE_PASSING                 108
+#define SND_TIMEGATE_WHEEL_ACTIVATING          109
+#define SND_TIMEGATE_WHEEL_RUNNING             110
+#define SND_TIMEGATE_OPENING                   111
+#define SND_TIMEGATE_CLOSING                   112
+#define SND_TIMEGATE_PASSING                   113
+#define SND_CONVEYOR_BELT_SWITCH_ACTIVATING    114
+#define SND_CONVEYOR_BELT_RUNNING              115
+#define SND_LIGHT_SWITCH_ACTIVATING            116
+#define SND_LIGHT_SWITCH_DEACTIVATING          117
+#define SND_DX_BOMB_PUSHING                    118
+#define SND_TRAP_INACTIVE_DIGGING              119
+#define SND_TRAP_ACTIVATING                    120
+#define SND_TUBE_PASSING                       121
+#define SND_AMOEBA_TURNING_TO_GEM              122
+#define SND_AMOEBA_TURNING_TO_ROCK             123
+#define SND_SPEED_PILL_COLLECTING              124
+#define SND_DYNABOMB_NR_COLLECTING             125
+#define SND_DYNABOMB_SZ_COLLECTING             126
+#define SND_DYNABOMB_XL_COLLECTING             127
+#define SND_DYNABOMB_PLACING                   128
+#define SND_DYNABOMB_BURNING                   129
+#define SND_SATELLITE_MOVING                   130
+#define SND_SATELLITE_WAITING                  131
+#define SND_SATELLITE_PUSHING                  132
+#define SND_LAMP_ACTIVATING                    133
+#define SND_LAMP_DEACTIVATING                  134
+#define SND_TIME_ORB_FULL_COLLECTING           135
+#define SND_TIME_ORB_FULL_IMPACT               136
+#define SND_TIME_ORB_EMPTY_PUSHING             137
+#define SND_TIME_ORB_EMPTY_IMPACT              138
+#define SND_GAMEOFLIFE_WAITING                 139
+#define SND_GAMEOFLIFE_CREATING                        140
+#define SND_BIOMAZE_WAITING                    141
+#define SND_BIOMAZE_CREATING                   142
+#define SND_PACMAN_MOVING                      143
+#define SND_PACMAN_WAITING                     144
+#define SND_PACMAN_EATING_AMOEBA               145
+#define SND_DARK_YAMYAM_MOVING                 146
+#define SND_DARK_YAMYAM_WAITING                        147
+#define SND_DARK_YAMYAM_EATING_ANY             148
+#define SND_PENGUIN_MOVING                     149
+#define SND_PENGUIN_WAITING                    150
+#define SND_PENGUIN_ENTERING_EXIT              151
+#define SND_PIG_MOVING                         152
+#define SND_PIG_WAITING                                153
+#define SND_PIG_EATING_GEM                     154
+#define SND_DRAGON_MOVING                      155
+#define SND_DRAGON_WAITING                     156
+#define SND_DRAGON_ATTACKING                   157
+#define SND_PLAYER_DYING                       158
+#define SND_ELEMENT_EXPLODING                  159
+#define SND_GAME_STARTING                      160
+#define SND_GAME_RUNNING_OUT_OF_TIME           161
+#define SND_GAME_LEVELTIME_BONUS               162
+#define SND_GAME_LOSING                                163
+#define SND_GAME_WINNING                       164
+#define SND_MENU_DOOR_OPENING                  165
+#define SND_MENU_DOOR_CLOSING                  166
+#define SND_MENU_HALL_OF_FAME                  167
+#define SND_MENU_INFO_SCREEN                   168
+
+#define NUM_SOUND_EFFECTS                      169
 
 
 /* values for game_status */
@@ -1628,8 +1631,8 @@ extern struct SoundEffectInfo     sound_effects[];
 #define SETUP                  8
 
 #define PROGRAM_VERSION_MAJOR  2
-#define PROGRAM_VERSION_MINOR  0
-#define PROGRAM_VERSION_PATCH  2
+#define PROGRAM_VERSION_MINOR  1
+#define PROGRAM_VERSION_PATCH  0
 #define PROGRAM_VERSION_STRING "2.1.0"
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"