rnd-20020514-1-src
[rocksndiamonds.git] / src / main.c
index 9a1b0a8b6be6709ef00f2e37dfe0bb44ae50712f..971c97cac31c0d96e38a65efa06d52f157731119 100644 (file)
@@ -136,132 +136,201 @@ char *sound_name[NUM_SOUNDS] =
   "gate.wav"
 };
 
-/* sound effects: setup file identifiers and corresponding default filenames */
-struct SoundEffectInfo sound_effects[NUM_SOUND_EFFECTS] =
+struct SoundEffectInfo sound_effects[] =
 {
-  { "infotron_collecting",     "infotron.wav"  },
-  { "zonk_falling",            "zonkdown.wav"  },
-  { "zonk_pushing",            "zonkpush.wav"  },
-  { "player_screaming",                "autsch.wav"    }
-};
+  /* sounds for Boulder Dash style elements and actions */
+  { "bd_empty_space.digging",          "empty.wav"             },
+  { "bd_sand.digging",                 "schlurf.wav"           },
+  { "bd_diamond.collecting",           "pong.wav"              },
+  { "bd_diamond.impact",               "pling.wav"             },
+  { "bd_rock.pushing",                 "pusch.wav"             },
+  { "bd_rock.impact",                  "klopf.wav"             },
+  { "bd_magic_wall.activating",                "quirk.wav"             },
+  { "bd_magic_wall.changing",          "quirk.wav"             },
+  { "bd_magic_wall.running",           "miep.wav"              },
+  { "bd_amoeba.growing",               "amoebe.wav"            },
+  { "bd_amoeba.turning_to_gem",                "pling.wav"             },
+  { "bd_amoeba.turning_to_rock",       "klopf.wav"             },
+  { "bd_butterfly.moving",             "klapper.wav"           },
+  { "bd_firefly.moving",               "roehr.wav"             },
+  { "bd_exit.entering",                        "buing.wav"             },
 
-struct SoundEffectInfo sound_effects_NEW[] =
-{
-  { "amoeba_growing",          "amoebe.wav"    },
-  { "player_screaming",                "autsch.wav"    },
-  { "acid_splashing",          "blurb.wav"     },
-  { "mole_eating_amoeba",      "blurb.wav"     },
-  { "penguin_entering_exit",   "buing.wav"     },
-  { "player_entering_exit",    "buing.wav"     },
-  { "player_solving_sokoban",  "buing.wav"     },
-  { "time_orb_full_impact",    "deng.wav"      },
-  { "time_orb_empty_impact",   "deng.wav"      },
-  { "electric_bulb_light",     "deng.wav"      },
-  { "sokoban_field_filling",   "deng.wav"      },
-  { "leveltime_running_out",   "gong.wav"      },
-  { "extra_time_collecting",   "gong.wav"      },
-  { "time_orb_full_collecting",        "gong.wav"      },
-  { "menu_hall_of_fame",       "halloffame.wav"},
-  { "key_impact",              "kink.wav"      },
-  { "em_key_impact",           "kink.wav"      },
-  { "bug_moving",              "klapper.wav"   },
-  { "butterfly_moving",                "klapper.wav"   },
-  { "rock_impact",             "klopf.wav"     },
-  { "bd_rock_impact",          "klopf.wav"     },
-  { "amoeba_turns_to_rock",    "klopf.wav"     },
-  { "nut_impact",              "klumpf.wav"    },
-  { "pearl_breaking",          "knack.wav"     },
-  { "nut_cracking",            "knack.wav"     },
-  { "nut_pushing",             "knurk.wav"     },
-  { "player_laughing_at",      "lachen.wav"    },
-  { "robot_wheel_running",     "miep.wav"      },
-  { "timegate_wheel_running",  "miep.wav"      },
-  { "magic_wall_running",      "miep.wav"      },
-  { "yamyam_waiting",          "njam.wav"      },
-  { "menu_door",               "oeffnen.wav"   },
-  { "switchgate_opening",      "oeffnen.wav"   },
-  { "switchgate_closing",      "oeffnen.wav"   },
-  { "timegate_opening",                "oeffnen.wav"   },
-  { "timegate_closing",                "oeffnen.wav"   },
-  { "exit_opening",            "oeffnen.wav"   },
-  { "emerald_impact",          "pling.wav"     },
-  { "bd_diamond_impact",       "pling.wav"     },
-  { "diamond_impact",          "pling.wav"     },
-  { "infotron_impact",         "pling.wav"     },
-  { "amoeba_turns_to_gem",     "pling.wav"     },
-  { "emerald_collecting",      "pong.wav"      },
-  { "bd_diamond_collecting",   "pong.wav"      },
-  { "diamond_collecting",      "pong.wav"      },
-  { "pearl_collecting",                "pong.wav"      },
-  { "crystal_collecting",      "pong.wav"      },
-  { "speed_pill_collecting",   "pong.wav"      },
-  { "envelope_collecting",     "pong.wav"      },
-  { "shield_passive_collecting","pong.wav"     },
-  { "shield_active_collecting",        "pong.wav"      },
-  { "dynamite_collecting",     "pong.wav"      },
-  { "dynabomb_nr_collecting",  "pong.wav"      },
-  { "dynabomb_sz_collecting",  "pong.wav"      },
-  { "dynabomb_xl_collecting",  "pong.wav"      },
-  { "key_collecting",          "pong.wav"      },
-  { "em_key_collecting",       "pong.wav"      },
-  { "rock_pushing",            "pusch.wav"     },
-  { "bd_rock_pushing",         "pusch.wav"     },
-  { "bomb_pushing",            "pusch.wav"     },
-  { "dx_supabomb_pushing",     "pusch.wav"     },
-  { "time_orb_empty_pushing",  "pusch.wav"     },
-  { "spring_pushing",          "pusch.wav"     },
-  { "sokoban_object_pushing",  "pusch.wav"     },
-  { "satellite_pushing",       "pusch.wav"     },
-  { "sp_disk_yellow_pushing",  "pusch.wav"     },
-  { "diamond_smashing",                "quirk.wav"     },
-  { "magic_wall_activating",   "quirk.wav"     },
-  { "menu_info_screen",                "rhythmloop.wav"},
-  { "explosion",               "roaaar.wav"    },
-  { "spaceship_moving",                "roehr.wav"     },
-  { "firefly_moving",          "roehr.wav"     },
-  { "robot_moving",            "schlurf.wav"   },
-  { "sand_digging",            "schlurf.wav"   },
-  { "sand_invisible_digging",  "schlurf.wav"   },
-  { "trap_inactive_digging",   "schlurf.wav"   },
-  { "balloon_moving",          "schlurf.wav"   },
-  { "leveltime_bonus",         "sirr.wav"      },
-  { "dynamite_burning",                "zisch.wav"     },
-  { "sp_base_digging",         "base.wav"      },
-  { "sp_buggy_base_digging",   "base.wav"      },
-  { "sp_infotron_collecting",  "infotron.wav"  },
-  { "sp_disk_red_collecting",  "infotron.wav"  },
-  { "sp_zonk_impact",          "zonkdown.wav"  },
-  { "sp_zonk_pushing",         "zonkpush.wav"  },
-  { "sp_disk_orange_pushing",  "zonkpush.wav"  },
-  { "sp_buggy_base_passing",   "bug.wav"       },
-  { "sp_explosion",            "booom.wav"     },
-  { "empty_space_digging",     "empty.wav"     },
-  { "em_gate_passing",         "gate.wav"      },
-  { "switchgate_passing",      "gate.wav"      },
-  { "timegate_passing",                "gate.wav"      },
-  { "sp_port_passing",         "gate.wav"      }
+  /* sounds for Supaplex style elements and actions */
+  { "sp_empty_space.digging",          "empty.wav"             },
+  { "sp_base.digging",                 "base.wav"              },
+  { "sp_buggy_base.digging",           "base.wav"              },
+  { "sp_buggy_base.activating",                "bug.wav"               },
+  { "sp_infotron.collecting",          "infotron.wav"          },
+  { "sp_infotron.impact",              "pling.wav"             },
+  { "sp_zonk.pushing",                 "zonkpush.wav"          },
+  { "sp_zonk.impact",                  "zonkdown.wav"          },
+  { "sp_disk_red.collecting",          "infotron.wav"          },
+  { "sp_disk_orange.pushing",          "zonkpush.wav"          },
+  { "sp_disk_yellow.pushing",          "pusch.wav"             },
+  { "sp_port.passing",                 "gate.wav"              },
+  { "sp_exit.entering",                        "buing.wav"             },
+  { "sp_element.exploding",            "booom.wav"             },
+  { "sp_sniksnak.moving",              SND_FILE_UNDEFINED      },
+  { "sp_electron.moving",              SND_FILE_UNDEFINED      },
+  { "sp_terminal.activating",          SND_FILE_UNDEFINED      },
+
+  /* sounds for Sokoban style elements and actions */
+  { "sokoban_object.pushing",          "pusch.wav"             },
+  { "sokoban_field.filling",           "deng.wav"              },
+  { "sokoban_field.clearing",          SND_FILE_UNDEFINED      },
+  { "sokoban_game.solving",            "buing.wav"             },
+
+  /* sounds for Emerald Mine style elements and actions */
+  { "empty_space.digging",             "empty.wav"             },
+  { "sand.digging",                    "schlurf.wav"           },
+  { "emerald.collecting",              "pong.wav"              },
+  { "emerald.impact",                  "pling.wav"             },
+  { "diamond.collecting",              "pong.wav"              },
+  { "diamond.impact",                  "pling.wav"             },
+  { "diamond.breaking",                        "quirk.wav"             },
+  { "rock.pushing",                    "pusch.wav"             },
+  { "rock.impact",                     "klopf.wav"             },
+  { "bomb.pushing",                    "pusch.wav"             },
+  { "nut.pushing",                     "knurk.wav"             },
+  { "nut.cracking",                    "knack.wav"             },
+  { "nut.impact",                      "klumpf.wav"            },
+  { "dynamite.collecting",             "pong.wav"              },
+  { "dynamite.placing",                        "deng.wav"              },
+  { "dynamite.burning",                        "zisch.wav"             },
+  { "key.collecting",                  "pong.wav"              },
+  { "gate.passing",                    "gate.wav"              },
+  { "bug.moving",                      "klapper.wav"           },
+  { "spaceship.moving",                        "roehr.wav"             },
+  { "yamyam.moving",                   SND_FILE_UNDEFINED      },
+  { "yamyam.waiting",                  "njam.wav"              },
+  { "yamyam.eating_diamond",           SND_FILE_UNDEFINED      },
+  { "robot.moving",                    "schlurf.wav"           },
+  { "robot_wheel.activating",          "deng.wav"              },
+  { "robot_wheel.running",             "miep.wav"              },
+  { "magic_wall.activating",           "quirk.wav"             },
+  { "magic_wall.changing",             "quirk.wav"             },
+  { "magic_wall.running",              "miep.wav"              },
+  { "amoeba.growing",                  "amoebe.wav"            },
+  { "amoeba.dropping",                 SND_FILE_UNDEFINED      },
+  { "acid.splashing",                  "blurb.wav"             },
+  { "quicksand.filling",               SND_FILE_UNDEFINED      },
+  { "quicksand.slipping_through",      SND_FILE_UNDEFINED      },
+  { "quicksand.emptying",              SND_FILE_UNDEFINED      },
+  { "exit.opening",                    "oeffnen.wav"           },
+  { "exit.entering",                   "buing.wav"             },
+
+  /* sounds for Emerald Mine Club style elements and actions */
+  { "balloon.moving",                  SND_FILE_UNDEFINED      },
+  { "balloon.pushing",                 "schlurf.wav"           },
+  { "spring.moving",                   SND_FILE_UNDEFINED      },
+  { "spring.pushing",                  "pusch.wav"             },
+  { "spring.impact",                   "klopf.wav"             },
+  { "wall.growing",                    SND_FILE_UNDEFINED      },
+
+  /* sounds for Diamond Caves style elements and actions */
+  { "pearl.collecting",                        "pong.wav"              },
+  { "pearl.breaking",                  "knack.wav"             },
+  { "pearl.impact",                    "pling.wav"             },
+  { "crystal.collecting",              "pong.wav"              },
+  { "crystal.impact",                  "pling.wav"             },
+  { "envelope.collecting",             "pong.wav"              },
+  { "sand_invisible.digging",          "schlurf.wav"           },
+  { "shield_passive.collecting",       "pong.wav"              },
+  { "shield_passive.activated",                SND_FILE_UNDEFINED      },
+  { "shield_active.collecting",                "pong.wav"              },
+  { "shield_active.activated",         SND_FILE_UNDEFINED      },
+  { "extra_time.collecting",           "gong.wav"              },
+  { "mole.moving",                     SND_FILE_UNDEFINED      },
+  { "mole.eating_amoeba",              "blurb.wav"             },
+  { "switchgate_switch.activating",    SND_FILE_UNDEFINED      },
+  { "switchgate.opening",              "oeffnen.wav"           },
+  { "switchgate.closing",              "oeffnen.wav"           },
+  { "switchgate.passing",              "gate.wav"              },
+  { "timegate_wheel.activating",       "deng.wav"              },
+  { "timegate_wheel.running",          "miep.wav"              },
+  { "timegate.opening",                        "oeffnen.wav"           },
+  { "timegate.closing",                        "oeffnen.wav"           },
+  { "timegate.passing",                        "gate.wav"              },
+  { "conveyor_belt_switch.activating", SND_FILE_UNDEFINED      },
+  { "conveyor_belt.running",           SND_FILE_UNDEFINED      },
+  { "light_switch.activating",         SND_FILE_UNDEFINED      },
+  { "light_switch.deactivating",       SND_FILE_UNDEFINED      },
+
+  /* sounds for DX Boulderdash style elements and actions */
+  { "dx_bomb.pushing",                 "pusch.wav"             },
+  { "trap_inactive.digging",           "schlurf.wav"           },
+  { "trap.activating",                 SND_FILE_UNDEFINED      },
+
+  /* sounds for Rocks'n'Diamonds style elements and actions */
+  { "amoeba.turning_to_gem",           "pling.wav"             },
+  { "amoeba.turning_to_rock",          "klopf.wav"             },
+  { "speed_pill.collecting",           "pong.wav"              },
+  { "dynabomb_nr.collecting",          "pong.wav"              },
+  { "dynabomb_sz.collecting",          "pong.wav"              },
+  { "dynabomb_xl.collecting",          "pong.wav"              },
+  { "dynabomb.placing",                        "deng.wav"              },
+  { "dynabomb.burning",                        "zisch.wav"             },
+  { "satellite.moving",                        SND_FILE_UNDEFINED      },
+  { "satellite.pushing",               "pusch.wav"             },
+  { "lamp.activating",                 "deng.wav"              },
+  { "lamp.deactivating",               "deng.wav"              },
+  { "time_orb_full.collecting",                "gong.wav"              },
+  { "time_orb_full.impact",            "deng.wav"              },
+  { "time_orb_empty.pushing",          "pusch.wav"             },
+  { "time_orb_empty.impact",           "deng.wav"              },
+  { "gameoflife.growing",              "amoebe.wav"            },
+  { "biomaze.growing",                 "amoebe.wav"            },
+  { "pacman.moving",                   SND_FILE_UNDEFINED      },
+  { "pacman.eating_amoeba",            SND_FILE_UNDEFINED      },
+  { "dark_yamyam.moving",              SND_FILE_UNDEFINED      },
+  { "dark_yamyam.waiting",             "njam.wav"              },
+  { "dark_yamyam.eating_any",          SND_FILE_UNDEFINED      },
+  { "penguin.moving",                  SND_FILE_UNDEFINED      },
+  { "penguin.entering_exit",           "buing.wav"             },
+  { "pig.moving",                      SND_FILE_UNDEFINED      },
+  { "pig.eating_gem",                  SND_FILE_UNDEFINED      },
+  { "dragon.moving",                   SND_FILE_UNDEFINED      },
+  { "dragon.breathing_fire",           SND_FILE_UNDEFINED      },
+
+  /* sounds for generic elements and actions */
+  { "player.dying",                    "autsch.wav"            },
+  { "element.exploding",               "roaaar.wav"            },
+
+  /* sounds for other game actions */
+  { "game.starting",                   SND_FILE_UNDEFINED      },
+  { "game.running_out_of_time",                "gong.wav"              },
+  { "game.leveltime_bonus",            "sirr.wav"              },
+  { "game.losing",                     "lachen.wav"            },
+  { "game.winning",                    SND_FILE_UNDEFINED      },
+
+  /* sounds for other non-game actions */
+  { "menu.door_opening",               "oeffnen.wav"           },
+  { "menu.door_closing",               "oeffnen.wav"           },
+  { "menu.hall_of_fame",               "halloffame.wav"        },
+  { "menu.info_screen",                        "rhythmloop.wav"        },
 
 #if 0
-  { "[not used]",              "antigrav.wav"  },
-  { "[not used]",              "bong.wav"      },
-  { "[not used]",              "fuel.wav"      },
-  { "[not used]",              "holz.wav"      },
-  { "[not used]",              "hui.wav"       },
-  { "[not used]",              "kabumm.wav"    },
-  { "[not used]",              "kling.wav"     },
-  { "[not used]",              "krach.wav"     },
-  { "[not used]",              "laser.wav"     },
-  { "[not used]",              "quiek.wav"     },
-  { "[not used]",              "rumms.wav"     },
-  { "[not used]",              "schlopp.wav"   },
-  { "[not used]",              "schrff.wav"    },
-  { "[not used]",              "schwirr.wav"   },
-  { "[not used]",              "slurp.wav"     },
-  { "[not used]",              "sproing.wav"   },
-  { "[not used]",              "warnton.wav"   },
-  { "[not used]",              "whoosh.wav"    },
-  { "[not used]",              "boom.wav"      },
-  { "[not used]",              "exit.wav"      },
+  { "[not used]",                      "antigrav.wav"          },
+  { "[not used]",                      "bong.wav"              },
+  { "[not used]",                      "fuel.wav"              },
+  { "[not used]",                      "holz.wav"              },
+  { "[not used]",                      "hui.wav"               },
+  { "[not used]",                      "kabumm.wav"            },
+  { "[not used]",                      "kink.wav"              },
+  { "[not used]",                      "kling.wav"             },
+  { "[not used]",                      "krach.wav"             },
+  { "[not used]",                      "laser.wav"             },
+  { "[not used]",                      "quiek.wav"             },
+  { "[not used]",                      "rumms.wav"             },
+  { "[not used]",                      "schlopp.wav"           },
+  { "[not used]",                      "schrff.wav"            },
+  { "[not used]",                      "schwirr.wav"           },
+  { "[not used]",                      "slurp.wav"             },
+  { "[not used]",                      "sproing.wav"           },
+  { "[not used]",                      "warnton.wav"           },
+  { "[not used]",                      "whoosh.wav"            },
+  { "[not used]",                      "boom.wav"              },
+  { "[not used]",                      "exit.wav"              },
 #endif
 };