summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/deh_weapon.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/src/deh_weapon.c b/src/deh_weapon.c
index d1db4ba6..62ea61fe 100644
--- a/src/deh_weapon.c
+++ b/src/deh_weapon.c
@@ -1,7 +1,7 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
-// $Id: deh_weapon.c 157 2005-10-03 11:08:16Z fraggle $
+// $Id: deh_weapon.c 158 2005-10-03 13:21:11Z fraggle $
//
// Copyright(C) 2005 Simon Howard
//
@@ -21,6 +21,9 @@
// 02111-1307, USA.
//
// $Log$
+// Revision 1.4 2005/10/03 13:21:11 fraggle
+// Weapons mapping code
+//
// Revision 1.3 2005/10/03 11:08:16 fraggle
// Replace end of section functions with NULLs as they arent currently being
// used for anything.
@@ -38,12 +41,16 @@
//
//-----------------------------------------------------------------------------
+#include <stdlib.h>
+#include <string.h>
+
#include "doomdef.h"
#include "doomtype.h"
#include "d_items.h"
#include "deh_defs.h"
+#include "deh_main.h"
#include "deh_mapping.h"
DEH_BEGIN_MAPPING(weapon_mapping, weaponinfo_t)
@@ -57,11 +64,37 @@ DEH_END_MAPPING
static void *DEH_WeaponStart(deh_context_t *context, char *line)
{
- return NULL;
+ int weapon_number = 0;
+
+ sscanf(line, "Weapon %i", &weapon_number);
+
+ if (weapon_number < 0 || weapon_number >= NUMWEAPONS)
+ return NULL;
+
+ return &weaponinfo[weapon_number];
}
static void DEH_WeaponParseLine(deh_context_t *context, char *line, void *tag)
{
+ char *variable_name, *value;
+ weaponinfo_t *weapon;
+ int ivalue;
+
+ if (tag == NULL)
+ return;
+
+ weapon = (weaponinfo_t *) tag;
+
+ if (!DEH_ParseAssignment(line, &variable_name, &value))
+ {
+ // Failed to parse
+
+ return;
+ }
+
+ ivalue = atoi(value);
+
+ DEH_SetMapping(&weapon_mapping, weapon, variable_name, ivalue);
}
deh_section_t deh_section_weapon =