rnd-20030615-1-src
authorHolger Schemel <info@artsoft.org>
Sun, 15 Jun 2003 01:28:44 +0000 (03:28 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:42:09 +0000 (10:42 +0200)
src/conf_e2s.c
src/conf_gfx.c
src/conf_snd.c
src/conf_snd.h
src/conftime.h
src/editor.c
src/files.c
src/init.c
src/main.c
src/main.h
src/screens.c

index 0fef9ca377780a9c155532b07823b245a90aa463..76b0dab529650e497764d06734a709992f5ba361 100644 (file)
@@ -28,6 +28,34 @@ static struct
 }
 element_to_sound[] =
 {
+  {
+    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_DIGGING,
+    SND_CLASS_DEFAULT_DIGGING
+  },
+  {
+    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_COLLECTING,
+    SND_CLASS_DEFAULT_COLLECTING
+  },
+  {
+    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_SNAPPING,
+    SND_CLASS_DEFAULT_SNAPPING
+  },
+  {
+    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_PUSHING,
+    SND_CLASS_DEFAULT_PUSHING
+  },
+  {
+    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_IMPACT,
+    SND_CLASS_DEFAULT_IMPACT
+  },
+  {
+    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_PASSING,
+    SND_CLASS_DEFAULT_PASSING
+  },
+  {
+    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_EXPLODING,
+    SND_CLASS_DEFAULT_EXPLODING
+  },
   {
     EL_BD_DIAMOND, FALSE,                      ACTION_COLLECTING,
     SND_BD_DIAMOND_COLLECTING
@@ -208,6 +236,10 @@ element_to_sound[] =
     EL_DIAMOND, FALSE,                         ACTION_IMPACT,
     SND_DIAMOND_IMPACT
   },
+  {
+    EL_DIAMOND_BREAKING, FALSE,                        -1,
+    SND_DIAMOND_BREAKING
+  },
   {
     EL_DIAMOND, FALSE,                         ACTION_BREAKING,
     SND_DIAMOND_BREAKING
index 13e2379314f6eee32152d23e635b61ce82b7958c..9fa20b787f5b844e015311bd468436632ead9597 100644 (file)
@@ -3445,6 +3445,8 @@ struct ConfigInfo image_config[] =
   { "menu.draw_xoffset.SETUP",                 "0"                     },
   { "menu.draw_yoffset.SETUP",                 "0"                     },
 
+  { "menu.list_size",                          "-1"                    },
+
   { "door.step_offset",                                "2"                     },
   { "door.step_delay",                         "10"                    },
 
index 7c61a715d58ce3c1236fa171a16dbaa6fd510a23..2471514f8d0f41597e3ac379a758c8328fa25c6c 100644 (file)
@@ -28,6 +28,15 @@ struct ConfigInfo sound_config_suffix[] =
 
 struct ConfigInfo sound_config[] =
 {
+  /* some default sounds */
+  { "[DEFAULT].digging",               "schlurf.wav"           },
+  { "[DEFAULT].collecting",            "pong.wav"              },
+  { "[DEFAULT].snapping",              "pong.wav"              },
+  { "[DEFAULT].pushing",               "pusch.wav"             },
+  { "[DEFAULT].impact",                        "klopf.wav"             },
+  { "[DEFAULT].passing",               "gate.wav"              },
+  { "[DEFAULT].exploding",             "roaaar.wav"            },
+
   /* sounds for Boulder Dash style elements and actions */
   { "bd_diamond.collecting",           "pong.wav"              },
   { "bd_diamond.impact",               "pling.wav"             },
index 91438f127c7fad2ab9e1eaeb73594ffcb86fff0e..b6d426c0e768779ab0ebd41cf41d9d8f95a61e12 100644 (file)
 
 /* values for sounds configuration */
 
-#define SND_BD_DIAMOND_COLLECTING                              0
-#define SND_BD_DIAMOND_IMPACT                          1
-#define SND_BD_ROCK_PUSHING                                    2
-#define SND_BD_ROCK_IMPACT                                     3
-#define SND_BD_MAGIC_WALL_ACTIVATING                   4
-#define SND_BD_MAGIC_WALL_ACTIVE                               5
-#define SND_BD_MAGIC_WALL_FILLING                              6
-#define SND_BD_AMOEBA_WAITING                          7
-#define SND_BD_AMOEBA_GROWING                          8
-#define SND_BD_AMOEBA_TURNING_TO_GEM                   9
-#define SND_BD_AMOEBA_TURNING_TO_ROCK                  10
-#define SND_BD_BUTTERFLY_MOVING                                11
-#define SND_BD_BUTTERFLY_WAITING                               12
-#define SND_BD_FIREFLY_MOVING                          13
-#define SND_BD_FIREFLY_WAITING                         14
-#define SND_SP_BASE_DIGGING                                    15
-#define SND_SP_BUGGY_BASE_DIGGING                              16
-#define SND_SP_BUGGY_BASE_ACTIVE                               17
-#define SND_SP_INFOTRON_COLLECTING                             18
-#define SND_SP_INFOTRON_IMPACT                         19
-#define SND_SP_ZONK_PUSHING                                    20
-#define SND_SP_ZONK_IMPACT                                     21
-#define SND_SP_DISK_RED_COLLECTING                             22
-#define SND_SP_DISK_ORANGE_PUSHING                             23
-#define SND_SP_DISK_YELLOW_PUSHING                             24
-#define SND_CLASS_SP_PORT_PASSING                              25
-#define SND_CLASS_SP_EXIT_PASSING                              26
-#define SND_CLASS_SP_EXIT_OPENING                              27
-#define SND_SP_SNIKSNAK_MOVING                         28
-#define SND_SP_SNIKSNAK_WAITING                                29
-#define SND_SP_ELECTRON_MOVING                         30
-#define SND_SP_ELECTRON_WAITING                                31
-#define SND_SP_TERMINAL_ACTIVATING                             32
-#define SND_SP_TERMINAL_ACTIVE                         33
-#define SND_CLASS_SOKOBAN_PUSHING                              34
-#define SND_CLASS_SOKOBAN_FILLING                              35
-#define SND_CLASS_SOKOBAN_EMPTYING                             36
-#define SND_EMPTY_SPACE_DIGGING                                37
-#define SND_SAND_DIGGING                                       38
-#define SND_EMERALD_COLLECTING                         39
-#define SND_EMERALD_IMPACT                                     40
-#define SND_DIAMOND_COLLECTING                         41
-#define SND_DIAMOND_IMPACT                                     42
-#define SND_DIAMOND_BREAKING                           43
-#define SND_ROCK_PUSHING                                       44
-#define SND_ROCK_IMPACT                                        45
-#define SND_BOMB_PUSHING                                       46
-#define SND_NUT_PUSHING                                        47
-#define SND_NUT_BREAKING                                       48
-#define SND_NUT_IMPACT                                 49
-#define SND_CLASS_DYNAMITE_COLLECTING                          50
-#define SND_CLASS_DYNAMITE_DROPPING                            51
-#define SND_CLASS_DYNAMITE_ACTIVE                              52
-#define SND_CLASS_KEY_COLLECTING                               53
-#define SND_CLASS_GATE_PASSING                                 54
-#define SND_BUG_MOVING                                 55
-#define SND_BUG_WAITING                                        56
-#define SND_SPACESHIP_MOVING                           57
-#define SND_SPACESHIP_WAITING                          58
-#define SND_YAMYAM_MOVING                                      59
-#define SND_YAMYAM_WAITING                                     60
-#define SND_YAMYAM_DIGGING                                     61
-#define SND_ROBOT_MOVING                                       62
-#define SND_ROBOT_WAITING                                      63
-#define SND_ROBOT_WHEEL_ACTIVATING                             64
-#define SND_ROBOT_WHEEL_ACTIVE                         65
-#define SND_MAGIC_WALL_ACTIVATING                              66
-#define SND_MAGIC_WALL_ACTIVE                          67
-#define SND_MAGIC_WALL_FILLING                         68
-#define SND_CLASS_AMOEBA_WAITING                               69
-#define SND_CLASS_AMOEBA_GROWING                               70
-#define SND_CLASS_AMOEBA_DROPPING                              71
-#define SND_ACID_SPLASHING                                     72
-#define SND_CLASS_QUICKSAND_FILLING                            73
-#define SND_CLASS_QUICKSAND_EMPTYING                           74
-#define SND_CLASS_EXIT_OPENING                                 75
-#define SND_CLASS_EXIT_PASSING                                 76
-#define SND_PENGUIN_PASSING                                    77
-#define SND_BALLOON_MOVING                                     78
-#define SND_BALLOON_WAITING                                    79
-#define SND_BALLOON_PUSHING                                    80
-#define SND_CLASS_BALLOON_SWITCH_ACTIVATING                    81
-#define SND_SPRING_MOVING                                      82
-#define SND_SPRING_PUSHING                                     83
-#define SND_SPRING_IMPACT                                      84
-#define SND_CLASS_WALL_GROWING                                 85
-#define SND_PEARL_COLLECTING                           86
-#define SND_PEARL_BREAKING                                     87
-#define SND_PEARL_IMPACT                                       88
-#define SND_CRYSTAL_COLLECTING                         89
-#define SND_CRYSTAL_IMPACT                                     90
-#define SND_ENVELOPE_COLLECTING                                91
-#define SND_INVISIBLE_SAND_DIGGING                             92
-#define SND_SHIELD_NORMAL_COLLECTING                   93
-#define SND_SHIELD_NORMAL_ACTIVE                               94
-#define SND_SHIELD_DEADLY_COLLECTING                   95
-#define SND_SHIELD_DEADLY_ACTIVE                               96
-#define SND_EXTRA_TIME_COLLECTING                              97
-#define SND_MOLE_MOVING                                        98
-#define SND_MOLE_WAITING                                       99
-#define SND_MOLE_DIGGING                                       100
-#define SND_CLASS_SWITCHGATE_SWITCH_ACTIVATING                 101
-#define SND_CLASS_SWITCHGATE_OPENING                           102
-#define SND_CLASS_SWITCHGATE_CLOSING                           103
-#define SND_CLASS_SWITCHGATE_PASSING                           104
-#define SND_TIMEGATE_SWITCH_ACTIVATING                 105
-#define SND_TIMEGATE_SWITCH_ACTIVE                             106
-#define SND_TIMEGATE_SWITCH_DEACTIVATING                       107
-#define SND_TIMEGATE_OPENING                           108
-#define SND_CLASS_TIMEGATE_CLOSING                             109
-#define SND_CLASS_TIMEGATE_PASSING                             110
-#define SND_CLASS_CONVEYOR_BELT_SWITCH_ACTIVATING              111
-#define SND_CLASS_CONVEYOR_BELT_ACTIVE                         112
-#define SND_CLASS_CONVEYOR_BELT_SWITCH_DEACTIVATING            113
-#define SND_LIGHT_SWITCH_ACTIVATING                            114
-#define SND_LIGHT_SWITCH_DEACTIVATING                  115
-#define SND_DX_SUPABOMB_PUSHING                                116
-#define SND_TRAP_DIGGING                                       117
-#define SND_TRAP_ACTIVATING                                    118
-#define SND_CLASS_TUBE_PASSING                                 119
-#define SND_AMOEBA_TURNING_TO_GEM                              120
-#define SND_AMOEBA_TURNING_TO_ROCK                             121
-#define SND_SPEED_PILL_COLLECTING                              122
-#define SND_DYNABOMB_INCREASE_NUMBER_COLLECTING                123
-#define SND_DYNABOMB_INCREASE_SIZE_COLLECTING          124
-#define SND_DYNABOMB_INCREASE_POWER_COLLECTING         125
-#define SND_CLASS_DYNABOMB_DROPPING                            126
-#define SND_CLASS_DYNABOMB_ACTIVE                              127
-#define SND_SATELLITE_MOVING                           128
-#define SND_SATELLITE_WAITING                          129
-#define SND_SATELLITE_PUSHING                          130
-#define SND_LAMP_ACTIVATING                                    131
-#define SND_LAMP_DEACTIVATING                          132
-#define SND_TIME_ORB_FULL_COLLECTING                   133
-#define SND_TIME_ORB_FULL_IMPACT                               134
-#define SND_TIME_ORB_EMPTY_PUSHING                             135
-#define SND_TIME_ORB_EMPTY_IMPACT                              136
-#define SND_GAME_OF_LIFE_WAITING                               137
-#define SND_GAME_OF_LIFE_GROWING                               138
-#define SND_BIOMAZE_WAITING                                    139
-#define SND_BIOMAZE_GROWING                                    140
-#define SND_PACMAN_MOVING                                      141
-#define SND_PACMAN_WAITING                                     142
-#define SND_PACMAN_DIGGING                                     143
-#define SND_DARK_YAMYAM_MOVING                         144
-#define SND_DARK_YAMYAM_WAITING                                145
-#define SND_DARK_YAMYAM_DIGGING                                146
-#define SND_PENGUIN_MOVING                                     147
-#define SND_PENGUIN_WAITING                                    148
-#define SND_PIG_MOVING                                 149
-#define SND_PIG_WAITING                                        150
-#define SND_PIG_DIGGING                                        151
-#define SND_DRAGON_MOVING                                      152
-#define SND_DRAGON_WAITING                                     153
-#define SND_DRAGON_ATTACKING                           154
-#define SND_CLASS_PLAYER_DYING                                 155
-#define SND_ELEMENT_EXPLODING                          156
-#define SND_SP_ELEMENT_EXPLODING                               157
-#define SND_GAME_STARTING                                      158
-#define SND_GAME_RUNNING_OUT_OF_TIME                   159
-#define SND_GAME_LEVELTIME_BONUS                               160
-#define SND_GAME_LOSING                                        161
-#define SND_GAME_WINNING                                       162
-#define SND_GAME_SOKOBAN_SOLVING                               163
-#define SND_DOOR_OPENING                                       164
-#define SND_DOOR_CLOSING                                       165
-#define SND_BACKGROUND_SCORES                          166
-#define SND_BACKGROUND_INFO                                    167
+#define SND_CLASS_DEFAULT_DIGGING                              0
+#define SND_CLASS_DEFAULT_COLLECTING                           1
+#define SND_CLASS_DEFAULT_SNAPPING                             2
+#define SND_CLASS_DEFAULT_PUSHING                              3
+#define SND_CLASS_DEFAULT_IMPACT                               4
+#define SND_CLASS_DEFAULT_PASSING                              5
+#define SND_CLASS_DEFAULT_EXPLODING                            6
+#define SND_BD_DIAMOND_COLLECTING                              7
+#define SND_BD_DIAMOND_IMPACT                          8
+#define SND_BD_ROCK_PUSHING                                    9
+#define SND_BD_ROCK_IMPACT                                     10
+#define SND_BD_MAGIC_WALL_ACTIVATING                   11
+#define SND_BD_MAGIC_WALL_ACTIVE                               12
+#define SND_BD_MAGIC_WALL_FILLING                              13
+#define SND_BD_AMOEBA_WAITING                          14
+#define SND_BD_AMOEBA_GROWING                          15
+#define SND_BD_AMOEBA_TURNING_TO_GEM                   16
+#define SND_BD_AMOEBA_TURNING_TO_ROCK                  17
+#define SND_BD_BUTTERFLY_MOVING                                18
+#define SND_BD_BUTTERFLY_WAITING                               19
+#define SND_BD_FIREFLY_MOVING                          20
+#define SND_BD_FIREFLY_WAITING                         21
+#define SND_SP_BASE_DIGGING                                    22
+#define SND_SP_BUGGY_BASE_DIGGING                              23
+#define SND_SP_BUGGY_BASE_ACTIVE                               24
+#define SND_SP_INFOTRON_COLLECTING                             25
+#define SND_SP_INFOTRON_IMPACT                         26
+#define SND_SP_ZONK_PUSHING                                    27
+#define SND_SP_ZONK_IMPACT                                     28
+#define SND_SP_DISK_RED_COLLECTING                             29
+#define SND_SP_DISK_ORANGE_PUSHING                             30
+#define SND_SP_DISK_YELLOW_PUSHING                             31
+#define SND_CLASS_SP_PORT_PASSING                              32
+#define SND_CLASS_SP_EXIT_PASSING                              33
+#define SND_CLASS_SP_EXIT_OPENING                              34
+#define SND_SP_SNIKSNAK_MOVING                         35
+#define SND_SP_SNIKSNAK_WAITING                                36
+#define SND_SP_ELECTRON_MOVING                         37
+#define SND_SP_ELECTRON_WAITING                                38
+#define SND_SP_TERMINAL_ACTIVATING                             39
+#define SND_SP_TERMINAL_ACTIVE                         40
+#define SND_CLASS_SOKOBAN_PUSHING                              41
+#define SND_CLASS_SOKOBAN_FILLING                              42
+#define SND_CLASS_SOKOBAN_EMPTYING                             43
+#define SND_EMPTY_SPACE_DIGGING                                44
+#define SND_SAND_DIGGING                                       45
+#define SND_EMERALD_COLLECTING                         46
+#define SND_EMERALD_IMPACT                                     47
+#define SND_DIAMOND_COLLECTING                         48
+#define SND_DIAMOND_IMPACT                                     49
+#define SND_DIAMOND_BREAKING                           50
+#define SND_ROCK_PUSHING                                       51
+#define SND_ROCK_IMPACT                                        52
+#define SND_BOMB_PUSHING                                       53
+#define SND_NUT_PUSHING                                        54
+#define SND_NUT_BREAKING                                       55
+#define SND_NUT_IMPACT                                 56
+#define SND_CLASS_DYNAMITE_COLLECTING                          57
+#define SND_CLASS_DYNAMITE_DROPPING                            58
+#define SND_CLASS_DYNAMITE_ACTIVE                              59
+#define SND_CLASS_KEY_COLLECTING                               60
+#define SND_CLASS_GATE_PASSING                                 61
+#define SND_BUG_MOVING                                 62
+#define SND_BUG_WAITING                                        63
+#define SND_SPACESHIP_MOVING                           64
+#define SND_SPACESHIP_WAITING                          65
+#define SND_YAMYAM_MOVING                                      66
+#define SND_YAMYAM_WAITING                                     67
+#define SND_YAMYAM_DIGGING                                     68
+#define SND_ROBOT_MOVING                                       69
+#define SND_ROBOT_WAITING                                      70
+#define SND_ROBOT_WHEEL_ACTIVATING                             71
+#define SND_ROBOT_WHEEL_ACTIVE                         72
+#define SND_MAGIC_WALL_ACTIVATING                              73
+#define SND_MAGIC_WALL_ACTIVE                          74
+#define SND_MAGIC_WALL_FILLING                         75
+#define SND_CLASS_AMOEBA_WAITING                               76
+#define SND_CLASS_AMOEBA_GROWING                               77
+#define SND_CLASS_AMOEBA_DROPPING                              78
+#define SND_ACID_SPLASHING                                     79
+#define SND_CLASS_QUICKSAND_FILLING                            80
+#define SND_CLASS_QUICKSAND_EMPTYING                           81
+#define SND_CLASS_EXIT_OPENING                                 82
+#define SND_CLASS_EXIT_PASSING                                 83
+#define SND_PENGUIN_PASSING                                    84
+#define SND_BALLOON_MOVING                                     85
+#define SND_BALLOON_WAITING                                    86
+#define SND_BALLOON_PUSHING                                    87
+#define SND_CLASS_BALLOON_SWITCH_ACTIVATING                    88
+#define SND_SPRING_MOVING                                      89
+#define SND_SPRING_PUSHING                                     90
+#define SND_SPRING_IMPACT                                      91
+#define SND_CLASS_WALL_GROWING                                 92
+#define SND_PEARL_COLLECTING                           93
+#define SND_PEARL_BREAKING                                     94
+#define SND_PEARL_IMPACT                                       95
+#define SND_CRYSTAL_COLLECTING                         96
+#define SND_CRYSTAL_IMPACT                                     97
+#define SND_ENVELOPE_COLLECTING                                98
+#define SND_INVISIBLE_SAND_DIGGING                             99
+#define SND_SHIELD_NORMAL_COLLECTING                   100
+#define SND_SHIELD_NORMAL_ACTIVE                               101
+#define SND_SHIELD_DEADLY_COLLECTING                   102
+#define SND_SHIELD_DEADLY_ACTIVE                               103
+#define SND_EXTRA_TIME_COLLECTING                              104
+#define SND_MOLE_MOVING                                        105
+#define SND_MOLE_WAITING                                       106
+#define SND_MOLE_DIGGING                                       107
+#define SND_CLASS_SWITCHGATE_SWITCH_ACTIVATING                 108
+#define SND_CLASS_SWITCHGATE_OPENING                           109
+#define SND_CLASS_SWITCHGATE_CLOSING                           110
+#define SND_CLASS_SWITCHGATE_PASSING                           111
+#define SND_TIMEGATE_SWITCH_ACTIVATING                 112
+#define SND_TIMEGATE_SWITCH_ACTIVE                             113
+#define SND_TIMEGATE_SWITCH_DEACTIVATING                       114
+#define SND_TIMEGATE_OPENING                           115
+#define SND_CLASS_TIMEGATE_CLOSING                             116
+#define SND_CLASS_TIMEGATE_PASSING                             117
+#define SND_CLASS_CONVEYOR_BELT_SWITCH_ACTIVATING              118
+#define SND_CLASS_CONVEYOR_BELT_ACTIVE                         119
+#define SND_CLASS_CONVEYOR_BELT_SWITCH_DEACTIVATING            120
+#define SND_LIGHT_SWITCH_ACTIVATING                            121
+#define SND_LIGHT_SWITCH_DEACTIVATING                  122
+#define SND_DX_SUPABOMB_PUSHING                                123
+#define SND_TRAP_DIGGING                                       124
+#define SND_TRAP_ACTIVATING                                    125
+#define SND_CLASS_TUBE_PASSING                                 126
+#define SND_AMOEBA_TURNING_TO_GEM                              127
+#define SND_AMOEBA_TURNING_TO_ROCK                             128
+#define SND_SPEED_PILL_COLLECTING                              129
+#define SND_DYNABOMB_INCREASE_NUMBER_COLLECTING                130
+#define SND_DYNABOMB_INCREASE_SIZE_COLLECTING          131
+#define SND_DYNABOMB_INCREASE_POWER_COLLECTING         132
+#define SND_CLASS_DYNABOMB_DROPPING                            133
+#define SND_CLASS_DYNABOMB_ACTIVE                              134
+#define SND_SATELLITE_MOVING                           135
+#define SND_SATELLITE_WAITING                          136
+#define SND_SATELLITE_PUSHING                          137
+#define SND_LAMP_ACTIVATING                                    138
+#define SND_LAMP_DEACTIVATING                          139
+#define SND_TIME_ORB_FULL_COLLECTING                   140
+#define SND_TIME_ORB_FULL_IMPACT                               141
+#define SND_TIME_ORB_EMPTY_PUSHING                             142
+#define SND_TIME_ORB_EMPTY_IMPACT                              143
+#define SND_GAME_OF_LIFE_WAITING                               144
+#define SND_GAME_OF_LIFE_GROWING                               145
+#define SND_BIOMAZE_WAITING                                    146
+#define SND_BIOMAZE_GROWING                                    147
+#define SND_PACMAN_MOVING                                      148
+#define SND_PACMAN_WAITING                                     149
+#define SND_PACMAN_DIGGING                                     150
+#define SND_DARK_YAMYAM_MOVING                         151
+#define SND_DARK_YAMYAM_WAITING                                152
+#define SND_DARK_YAMYAM_DIGGING                                153
+#define SND_PENGUIN_MOVING                                     154
+#define SND_PENGUIN_WAITING                                    155
+#define SND_PIG_MOVING                                 156
+#define SND_PIG_WAITING                                        157
+#define SND_PIG_DIGGING                                        158
+#define SND_DRAGON_MOVING                                      159
+#define SND_DRAGON_WAITING                                     160
+#define SND_DRAGON_ATTACKING                           161
+#define SND_CLASS_PLAYER_DYING                                 162
+#define SND_ELEMENT_EXPLODING                          163
+#define SND_SP_ELEMENT_EXPLODING                               164
+#define SND_GAME_STARTING                                      165
+#define SND_GAME_RUNNING_OUT_OF_TIME                   166
+#define SND_GAME_LEVELTIME_BONUS                               167
+#define SND_GAME_LOSING                                        168
+#define SND_GAME_WINNING                                       169
+#define SND_GAME_SOKOBAN_SOLVING                               170
+#define SND_DOOR_OPENING                                       171
+#define SND_DOOR_CLOSING                                       172
+#define SND_BACKGROUND_SCORES                          173
+#define SND_BACKGROUND_INFO                                    174
 
-#define NUM_SOUND_FILES                                168
+#define NUM_SOUND_FILES                                175
 
 #endif /* CONF_SND_H */
index bc437b850de77a7b98ac151240994ea57ef30880..b80e0109adba89238c92ba61b63a23ebdc06aa5a 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-06-14 14:45]"
+#define COMPILE_DATE_STRING "[2003-06-15 03:27]"
index b9e1bd0acfa826591ef46966ec0c428cca579255..e56fa695c08339ca4117751f2ffbbba329754c0d 100644 (file)
 #define ED_AREA_ELEM_CONTENT4_YPOS     (ED_SETTINGS_YPOS(2) + \
                                         ED_GADGET_DISTANCE - MINI_TILEY)
 /* custom change trigger element */
-#define ED_AREA_ELEM_CONTENT5_XPOS     (29 * MINI_TILEX)
+#define ED_AREA_ELEM_CONTENT5_XPOS     (30 * MINI_TILEX + MINI_TILEX / 2)
 #define ED_AREA_ELEM_CONTENT5_YPOS     (ED_SETTINGS_YPOS(7) + \
                                         ED_GADGET_DISTANCE)
 
@@ -936,6 +936,7 @@ static struct ValueTextInfo options_change_other_action[] =
   { CE_OTHER_COLLECTING,       "collecting"                    },
   { CE_OTHER_PUSHING,          "pushing"                       },
   { CE_OTHER_CHANGING,         "change of"                     },
+  { CE_OTHER_EXPLODING,                "explosion of"                  },
   { -1,                                NULL                            }
 };
 static int value_change_other_action = 0;
@@ -3534,7 +3535,8 @@ static void CopyCustomElementPropertiesToEditor(int element)
 
   /* set change by other element action selectbox help value */
   value_change_other_action =
-    (HAS_CHANGE_EVENT(element, CE_OTHER_CHANGING) ? CE_OTHER_CHANGING :
+    (HAS_CHANGE_EVENT(element, CE_OTHER_EXPLODING) ? CE_OTHER_EXPLODING :
+     HAS_CHANGE_EVENT(element, CE_OTHER_CHANGING) ? CE_OTHER_CHANGING :
      HAS_CHANGE_EVENT(element, CE_OTHER_PUSHING) ? CE_OTHER_PUSHING :
      HAS_CHANGE_EVENT(element, CE_OTHER_COLLECTING) ? CE_OTHER_COLLECTING :
      CE_OTHER_COLLECTING);
@@ -3597,6 +3599,7 @@ static void CopyCustomElementPropertiesToGame(int element)
   custom_element_change_events[CE_OTHER_COLLECTING] = FALSE;
   custom_element_change_events[CE_OTHER_PUSHING] = FALSE;
   custom_element_change_events[CE_OTHER_CHANGING] = FALSE;
+  custom_element_change_events[CE_OTHER_EXPLODING] = FALSE;
   custom_element_change_events[value_change_other_action] =
     custom_element_change_events[CE_BY_OTHER];
 
index d66112040791ea95b29cef519ade8584865c1aad..83e7b0bbc5e561e50ee0a1b2f89c8f2f5bf3967b 100644 (file)
@@ -1929,16 +1929,19 @@ void LoadSpecialMenuDesignSettings()
   if ((setup_file_hash = loadSetupFileHash(filename)) == NULL)
     return;
 
-  /* special case: initialize with default values that may be overwrittem */
+  /* special case: initialize with default values that may be overwritten */
   for (i=0; i < NUM_SPECIAL_GFX_ARGS; i++)
   {
     char *value_x = getHashEntry(setup_file_hash, "menu.draw_xoffset");
     char *value_y = getHashEntry(setup_file_hash, "menu.draw_yoffset");
+    char *list_size = getHashEntry(setup_file_hash, "menu.list_size");
 
     if (value_x != NULL)
       menu.draw_xoffset[i] = get_integer_from_string(value_x);
     if (value_y != NULL)
       menu.draw_yoffset[i] = get_integer_from_string(value_y);
+    if (list_size != NULL)
+      menu.list_size[i] = get_integer_from_string(list_size);
   }
 
   /* read (and overwrite with) values that may be specified in config file */
index 77cf39a00fdba9c92f5f0203782b86aaf47ba1ee..57b1bd112e2c4b36ad891217f9cf24cd7b7a00df 100644 (file)
@@ -872,51 +872,52 @@ static void InitElementSoundInfo()
          element_info[j].sound[action] = sound;
   }
 
-  /* initialize element/sound mapping from dynamic configuration */
+  /* initialize element class/sound mapping from dynamic configuration */
   for (i=0; i < num_property_mappings; i++)
   {
-    int element = property_mapping[i].base_index;
-    int action  = property_mapping[i].ext1_index;
-    int sound   = property_mapping[i].artwork_index;
+    int element_class = property_mapping[i].base_index - MAX_NUM_ELEMENTS;
+    int action        = property_mapping[i].ext1_index;
+    int sound         = property_mapping[i].artwork_index;
 
-    if (element >= MAX_NUM_ELEMENTS)
+    if (element_class < 0 || element_class >= MAX_NUM_ELEMENTS)
       continue;
 
     if (action < 0)
       action = ACTION_DEFAULT;
 
-    element_info[element].sound[action] = sound;
+    for (j=0; j < MAX_NUM_ELEMENTS; j++)
+      if (strcmp(element_info[j].class_name,
+                element_info[element_class].class_name) == 0)
+       element_info[j].sound[action] = sound;
   }
 
-  /* initialize element class/sound mapping from dynamic configuration */
+  /* initialize element/sound mapping from dynamic configuration */
   for (i=0; i < num_property_mappings; i++)
   {
-    int element_class = property_mapping[i].base_index - MAX_NUM_ELEMENTS;
-    int action        = property_mapping[i].ext1_index;
-    int sound         = property_mapping[i].artwork_index;
+    int element = property_mapping[i].base_index;
+    int action  = property_mapping[i].ext1_index;
+    int sound   = property_mapping[i].artwork_index;
 
-    if (element_class < 0 || element_class >= MAX_NUM_ELEMENTS)
+    if (element >= MAX_NUM_ELEMENTS)
       continue;
 
     if (action < 0)
       action = ACTION_DEFAULT;
 
-    for (j=0; j < MAX_NUM_ELEMENTS; j++)
-      if (strcmp(element_info[j].class_name,
-                element_info[element_class].class_name) == 0)
-       element_info[j].sound[action] = sound;
+    element_info[element].sound[action] = sound;
   }
 
   /* now set all '-1' values to element specific default values */
   for (i=0; i<MAX_NUM_ELEMENTS; i++)
   {
-    int default_action_sound = element_info[i].sound[ACTION_DEFAULT];
-
     for (act=0; act < NUM_ACTIONS; act++)
     {
       /* no sound for this specific action -- use default action sound */
       if (element_info[i].sound[act] == -1)
-       element_info[i].sound[act] = default_action_sound;
+       element_info[i].sound[act] =
+         (element_info[i].sound[ACTION_DEFAULT] != -1 ?
+          element_info[i].sound[ACTION_DEFAULT] :
+          element_info[EL_INTERNAL_DEFAULT_ELEMENT].sound[act]);
     }
   }
 }
@@ -1077,10 +1078,6 @@ static void ReinitializeSounds()
   InitSoundInfo();             /* sound properties mapping */
   InitElementSoundInfo();      /* element game sound mapping */
 
-#if 1
-  InitElementSoundInfo();      /* element game sound mapping */
-#endif
-
   InitPlaySoundLevel();                /* internal game sound settings */
 }
 
@@ -2777,6 +2774,16 @@ static void InitArtworkInfo()
   LoadArtworkInfo();
 }
 
+static char *get_string_in_brackets(char *string)
+{
+  char *string_in_brackets = checked_malloc(strlen(string) + 3);
+
+  sprintf(string_in_brackets, "[%s]", string);
+
+  return string_in_brackets;
+}
+
+#if 0
 static char *get_element_class_token(int element)
 {
   char *element_class_name = element_info[element].class_name;
@@ -2787,10 +2794,21 @@ static char *get_element_class_token(int element)
   return element_class_token;
 }
 
+static char *get_action_class_token(int action)
+{
+  char *action_class_name = &element_action_info[action].suffix[1];
+  char *action_class_token = checked_malloc(strlen(action_class_name) + 3);
+
+  sprintf(action_class_token, "[%s]", action_class_name);
+
+  return action_class_token;
+}
+#endif
+
 static void InitArtworkConfig()
 {
   static char *image_id_prefix[MAX_NUM_ELEMENTS + NUM_FONTS + 1];
-  static char *sound_id_prefix[MAX_NUM_ELEMENTS + MAX_NUM_ELEMENTS + 1];
+  static char *sound_id_prefix[2 * MAX_NUM_ELEMENTS + 1];
   static char *action_id_suffix[NUM_ACTIONS + 1];
   static char *direction_id_suffix[NUM_DIRECTIONS + 1];
   static char *special_id_suffix[NUM_SPECIAL_GFX_ARGS + 1];
@@ -2841,8 +2859,9 @@ static void InitArtworkConfig()
   for (i=0; i<MAX_NUM_ELEMENTS; i++)
     sound_id_prefix[i] = element_info[i].token_name;
   for (i=0; i<MAX_NUM_ELEMENTS; i++)
-    sound_id_prefix[MAX_NUM_ELEMENTS + i] = get_element_class_token(i);
-  sound_id_prefix[MAX_NUM_ELEMENTS + MAX_NUM_ELEMENTS] = NULL;
+    sound_id_prefix[MAX_NUM_ELEMENTS + i] =
+      get_string_in_brackets(element_info[i].class_name);
+  sound_id_prefix[2 * MAX_NUM_ELEMENTS] = NULL;
 
   for (i=0; i<NUM_ACTIONS; i++)
     action_id_suffix[i] = element_action_info[i].suffix;
index a14350b87fb03f74277de266bf232ace78222a32..f4d613400278ae033a15944fac3f8025ef23a0ed 100644 (file)
@@ -2798,12 +2798,12 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] =
     "-"
   },
   {
-    "nut_breaking",
+    "diamond_breaking",
     "-",
     "-"
   },
   {
-    "diamond_breaking",
+    "acid_splash_left",
     "-",
     "-"
   },
@@ -2937,6 +2937,11 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] =
     "-",
     "-"
   },
+  {
+    "internal_default_element",
+    "DEFAULT",
+    "-"
+  },
 
   /* keyword to stop parser: "ELEMENT_INFO_END" <-- do not change! */
 
@@ -3011,6 +3016,7 @@ struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1] =
 struct TokenIntPtrInfo image_config_vars[] =
 {
   { "global.num_toons",                &global.num_toons                          },
+
   { "menu.draw_xoffset",       &menu.draw_xoffset_default                 },
   { "menu.draw_yoffset",       &menu.draw_yoffset_default                 },
   { "menu.draw_xoffset.MAIN",  &menu.draw_xoffset[GFX_SPECIAL_ARG_MAIN]   },
@@ -3025,6 +3031,12 @@ struct TokenIntPtrInfo image_config_vars[] =
   { "menu.draw_yoffset.INFO",  &menu.draw_yoffset[GFX_SPECIAL_ARG_INFO]   },
   { "menu.draw_xoffset.SETUP", &menu.draw_xoffset[GFX_SPECIAL_ARG_SETUP]  },
   { "menu.draw_yoffset.SETUP", &menu.draw_yoffset[GFX_SPECIAL_ARG_SETUP]  },
+
+  { "menu.list_size",          &menu.list_size_default                    },
+  { "menu.list_size.LEVELS",   &menu.list_size[GFX_SPECIAL_ARG_LEVELS]    },
+  { "menu.list_size.SCORES",   &menu.list_size[GFX_SPECIAL_ARG_SCORES]    },
+  { "menu.list_size.INFO",     &menu.list_size[GFX_SPECIAL_ARG_INFO]      },
+
   { "door.step_offset",                &door.step_offset                          },
   { "door.step_delay",         &door.step_delay                           },
 
index 594f1b82b69e6293c0bf859e3bd2ed2e6c241cbf..3a6cabc43534df29187974d171247ed1141eeeb7 100644 (file)
 #define CE_OTHER_COLLECTING    6
 #define CE_OTHER_PUSHING       7
 #define CE_OTHER_CHANGING      8
+#define CE_OTHER_EXPLODING     9
 
 /* values for internal purpose only (level editor) */
-#define CE_BY_PLAYER           9
-#define CE_IMPACT_SMASHED      10
-#define CE_BY_OTHER            11
+#define CE_BY_PLAYER           10
+#define CE_IMPACT_SMASHED      11
+#define CE_BY_OTHER            12
 
-#define NUM_CHANGE_EVENTS      12
+#define NUM_CHANGE_EVENTS      13
 
 #define CE_BITMASK_DEFAULT     0
 
 #define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 13)
 #define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 14)
 #define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 15)
+#define EL_INTERNAL_DEFAULT_ELEMENT            (EL_FIRST_DUMMY + 16)
 
-#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 16)
+#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 17)
 
 
 /* values for graphics/sounds action types */
@@ -1144,6 +1146,9 @@ struct MenuInfo
   int draw_yoffset_default;
   int draw_xoffset[NUM_SPECIAL_GFX_ARGS];
   int draw_yoffset[NUM_SPECIAL_GFX_ARGS];
+
+  int list_size_default;
+  int list_size[NUM_SPECIAL_GFX_ARGS];
 };
 
 struct DoorInfo
index 950f4c8c067ea454c0c6af4bca085d9dfa67752c..f04ca586fe1eb26e7613bddf157bd16d10616f4a 100644 (file)
@@ -78,6 +78,10 @@ static int setup_mode = SETUP_MODE_MAIN;
                   game_status <= GAME_MODE_SETUP ?     \
                   menu.draw_yoffset[game_status] : menu.draw_yoffset_default))
 
+#define NUM_MENU_ENTRIES_ON_SCREEN (menu.list_size[game_status] > 2 ?  \
+                                   menu.list_size[game_status] :       \
+                                   MAX_MENU_ENTRIES_ON_SCREEN)
+
 #if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
 #define NUM_SCROLLBAR_BITMAPS          2
 static Bitmap *scrollbar_bitmap[NUM_SCROLLBAR_BITMAPS];
@@ -298,10 +302,10 @@ static void gotoTopLevelDir()
       int num_page_entries;
       int cl_first, cl_cursor;
 
-      if (num_leveldirs <= MAX_MENU_ENTRIES_ON_SCREEN)
+      if (num_leveldirs <= NUM_MENU_ENTRIES_ON_SCREEN)
        num_page_entries = num_leveldirs;
       else
-       num_page_entries = MAX_MENU_ENTRIES_ON_SCREEN;
+       num_page_entries = NUM_MENU_ENTRIES_ON_SCREEN;
 
       cl_first = MAX(0, leveldir_pos - num_page_entries + 1);
       cl_cursor = leveldir_pos - cl_first;
@@ -1194,7 +1198,7 @@ static void AdjustChooseTreeScrollbar(int id, int first_entry, TreeInfo *ti)
   int items_max, items_visible, item_position;
 
   items_max = numTreeInfoInGroup(ti);
-  items_visible = MAX_MENU_ENTRIES_ON_SCREEN;
+  items_visible = NUM_MENU_ENTRIES_ON_SCREEN;
   item_position = first_entry;
 
   if (item_position > items_max - items_visible)
@@ -1295,10 +1299,10 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
   int num_entries = numTreeInfoInGroup(ti);
   int num_page_entries;
 
-  if (num_entries <= MAX_MENU_ENTRIES_ON_SCREEN)
+  if (num_entries <= NUM_MENU_ENTRIES_ON_SCREEN)
     num_page_entries = num_entries;
   else
-    num_page_entries = MAX_MENU_ENTRIES_ON_SCREEN;
+    num_page_entries = NUM_MENU_ENTRIES_ON_SCREEN;
 
   if (button == MB_MENU_INITIALIZE)
   {
@@ -1532,7 +1536,7 @@ static void drawHallOfFameList(int first_entry, int highlight_position)
   DrawText(mSX + 80, mSY + 8, "Hall Of Fame", FONT_TITLE_1);
   DrawTextFCentered(46, FONT_TITLE_2, "HighScores of Level %d", level_nr);
 
-  for(i=0; i<MAX_MENU_ENTRIES_ON_SCREEN; i++)
+  for(i=0; i<NUM_MENU_ENTRIES_ON_SCREEN; i++)
   {
     int entry = first_entry + i;
     boolean active = (entry == highlight_position);
@@ -1570,7 +1574,7 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
   }
 
   if (ABS(dy) == SCROLL_PAGE)          /* handle scrolling one page */
-    step = MAX_MENU_ENTRIES_ON_SCREEN - 1;
+    step = NUM_MENU_ENTRIES_ON_SCREEN - 1;
 
   if (dy < 0)
   {
@@ -1586,11 +1590,11 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
   }
   else if (dy > 0)
   {
-    if (first_entry + MAX_MENU_ENTRIES_ON_SCREEN < MAX_SCORE_ENTRIES)
+    if (first_entry + NUM_MENU_ENTRIES_ON_SCREEN < MAX_SCORE_ENTRIES)
     {
       first_entry += step;
-      if (first_entry + MAX_MENU_ENTRIES_ON_SCREEN > MAX_SCORE_ENTRIES)
-       first_entry = MAX(0, MAX_SCORE_ENTRIES - MAX_MENU_ENTRIES_ON_SCREEN);
+      if (first_entry + NUM_MENU_ENTRIES_ON_SCREEN > MAX_SCORE_ENTRIES)
+       first_entry = MAX(0, MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN);
 
       drawHallOfFameList(first_entry, highlight_position);
       return;
@@ -1981,7 +1985,7 @@ static void DrawSetupScreen_Generic()
   DrawText(mSX + 16, mSY + 16, title_string, FONT_TITLE_1);
 
   num_setup_info = 0;
-  for(i=0; setup_info[i].type != 0 && i < MAX_MENU_ENTRIES_ON_SCREEN; i++)
+  for(i=0; setup_info[i].type != 0 && i < NUM_MENU_ENTRIES_ON_SCREEN; i++)
   {
     void *value_ptr = setup_info[i].value;
     int ypos = MENU_SCREEN_START_YPOS + i;
@@ -2877,7 +2881,7 @@ static void CreateScreenScrollbars()
     struct GadgetInfo *gi;
     int items_max, items_visible, item_position;
     unsigned long event_mask;
-    int num_page_entries = MAX_MENU_ENTRIES_ON_SCREEN;
+    int num_page_entries = NUM_MENU_ENTRIES_ON_SCREEN;
     int id = scrollbar_info[i].gadget_id;
 
     items_max = num_page_entries;
@@ -2981,7 +2985,7 @@ void MapChooseTreeGadgets(TreeInfo *ti)
   int num_entries = numTreeInfoInGroup(ti);
   int i;
 
-  if (num_entries <= MAX_MENU_ENTRIES_ON_SCREEN)
+  if (num_entries <= NUM_MENU_ENTRIES_ON_SCREEN)
     return;
 
   for (i=0; i<NUM_SCREEN_GADGETS; i++)