From 25f6da1861deedeb2d0650ecf0ebe42a83b682c8 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Sat, 8 Oct 2005 20:14:38 +0000 Subject: Dehacked "Sound" section support Subversion-branch: /trunk/chocolate-doom Subversion-revision: 174 --- src/Makefile.am | 3 +- src/deh_main.c | 7 +++- src/deh_sound.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 src/deh_sound.c (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 3072c8d6..10c72379 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -30,7 +30,8 @@ dstrings.h i_system.c p_doors.c p_switch.c r_state.h mmus2mid.c \ d_textur.h i_system.h p_enemy.c p_telept.c r_things.c mmus2mid.h \ deh_defs.h deh_frame.c deh_main.c deh_ptr.c deh_text.c deh_thing.c \ deh_io.c deh_io.h deh_ammo.c deh_cheat.c deh_weapon.c \ -deh_misc.c deh_mapping.c deh_mapping.h w_merge.c w_merge.h +deh_misc.c deh_mapping.c deh_mapping.h deh_sound.c \ +w_merge.c w_merge.h if HAVE_WINDRES diff --git a/src/deh_main.c b/src/deh_main.c index a6ff6257..ef06f095 100644 --- a/src/deh_main.c +++ b/src/deh_main.c @@ -1,7 +1,7 @@ // Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // -// $Id: deh_main.c 164 2005-10-04 22:10:32Z fraggle $ +// $Id: deh_main.c 174 2005-10-08 20:14:38Z fraggle $ // // Copyright(C) 2005 Simon Howard // @@ -21,6 +21,9 @@ // 02111-1307, USA. // // $Log$ +// Revision 1.5 2005/10/08 20:14:38 fraggle +// Dehacked "Sound" section support +// // Revision 1.4 2005/10/04 22:10:32 fraggle // Dehacked "Misc" section parser (currently a dummy) // @@ -61,6 +64,8 @@ extern deh_section_t deh_section_frame; extern deh_section_t deh_section_misc; // deh_ptr.c: extern deh_section_t deh_section_pointer; +// deh_sound.c +extern deh_section_t deh_section_sound; // deh_text.c: extern deh_section_t deh_section_text; // deh_thing.c: diff --git a/src/deh_sound.c b/src/deh_sound.c new file mode 100644 index 00000000..87c4d2fa --- /dev/null +++ b/src/deh_sound.c @@ -0,0 +1,111 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// $Id: deh_sound.c 174 2005-10-08 20:14:38Z fraggle $ +// +// Copyright(C) 2005 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// $Log$ +// Revision 1.1 2005/10/08 20:14:38 fraggle +// Dehacked "Sound" section support +// +// Revision 1.1 2005/10/04 22:10:32 fraggle +// Dehacked "Sound" section parser (currently a dummy) +// +// +//----------------------------------------------------------------------------- +// +// Parses "Sound" sections in dehacked files +// +//----------------------------------------------------------------------------- + +#include + +#include "doomdef.h" +#include "doomtype.h" +#include "deh_defs.h" +#include "deh_main.h" +#include "deh_mapping.h" +#include "sounds.h" + +DEH_BEGIN_MAPPING(sound_mapping, sfxinfo_t) + DEH_UNSUPPORTED_MAPPING("Offset"), + DEH_MAPPING("Zero/One", singularity) + DEH_MAPPING("Value", priority) + DEH_MAPPING("Zero 1", link) + DEH_MAPPING("Zero 2", pitch) + DEH_MAPPING("Zero 3", volume) + DEH_MAPPING("Zero 4", data) + DEH_MAPPING("Neg. One 1", usefulness) + DEH_MAPPING("Neg. One 2", lumpnum) +DEH_END_MAPPING + +static void *DEH_SoundStart(deh_context_t *context, char *line) +{ + int sound_number = 0; + sfxinfo_t *sfx; + + sscanf(line, "Sound %i", &sound_number); + + if (sound_number < 0 || sound_number >= NUMSFX) + return NULL; + + sfx = &S_sfx[sound_number]; + + return sfx; +} + +static void DEH_SoundParseLine(deh_context_t *context, char *line, void *tag) +{ + sfxinfo_t *sfx; + char *variable_name, *value; + int ivalue; + + if (tag == NULL) + return; + + sfx = (sfxinfo_t *) tag; + + // Parse the assignment + + if (!DEH_ParseAssignment(line, &variable_name, &value)) + { + // Failed to parse + + return; + } + + // all values are integers + + ivalue = atoi(value); + + // Set the field value + + DEH_SetMapping(&sound_mapping, sfx, variable_name, ivalue); + +} + +deh_section_t deh_section_sound = +{ + "Sound", + NULL, + DEH_SoundStart, + DEH_SoundParseLine, + NULL, +}; + -- cgit v1.2.3