shithub: choc

Download patch

ref: 25f6da1861deedeb2d0650ecf0ebe42a83b682c8
parent: 992ccb3ac0a29a152ad9633c6447809753df138f
author: Simon Howard <[email protected]>
date: Sat Oct 8 16:14:38 EDT 2005

Dehacked "Sound" section support

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 174

--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -30,7 +30,8 @@
 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
--- 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_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: 
--- /dev/null
+++ b/src/deh_sound.c
@@ -1,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 <stdlib.h>
+
+#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,
+};
+