shithub: choc

Download patch

ref: f4f051d366abcc673466e7ce73945e468b511ff9
parent: a077c664121f6368a117a2d26688361ce00606f7
author: Simon Howard <[email protected]>
date: Tue Oct 4 18:04:06 EDT 2005

Parse dehacked "Ammo" sections properly

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

--- a/src/deh_ammo.c
+++ b/src/deh_ammo.c
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*- 
 //-----------------------------------------------------------------------------
 //
-// $Id: deh_ammo.c 157 2005-10-03 11:08:16Z fraggle $
+// $Id: deh_ammo.c 163 2005-10-04 22:04:06Z fraggle $
 //
 // Copyright(C) 2005 Simon Howard
 //
@@ -21,6 +21,9 @@
 // 02111-1307, USA.
 //
 // $Log$
+// Revision 1.3  2005/10/04 22:04:06  fraggle
+// Parse dehacked "Ammo" sections properly
+//
 // Revision 1.2  2005/10/03 11:08:16  fraggle
 // Replace end of section functions with NULLs as they arent currently being
 // used for anything.
@@ -35,17 +38,61 @@
 //
 //-----------------------------------------------------------------------------
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
 #include "doomdef.h"
 #include "doomtype.h"
 #include "deh_defs.h"
+#include "deh_main.h"
+#include "p_local.h"
 
 static void *DEH_AmmoStart(deh_context_t *context, char *line)
 {
-    return NULL;
+    int ammo_number = 0;
+
+    sscanf(line, "Ammo %i", &ammo_number);
+
+    if (ammo_number < 0 || ammo_number >= NUMAMMO)
+        return NULL;
+
+    return &maxammo[ammo_number];
 }
 
 static void DEH_AmmoParseLine(deh_context_t *context, char *line, void *tag)
 {
+    char *variable_name, *value;
+    int ivalue;
+    int ammo_number;
+
+    if (tag == NULL)
+        return;
+
+    ammo_number = ((int *) tag) - maxammo;
+
+    // Parse the assignment
+
+    if (!DEH_ParseAssignment(line, &variable_name, &value))
+    {
+        // Failed to parse
+
+        return;
+    }
+
+    ivalue = atoi(value);
+
+    // maxammo
+
+    if (!strcasecmp(variable_name, "Per ammo"))
+        clipammo[ammo_number] = ivalue;
+    else if (!strcasecmp(variable_name, "Max ammo"))
+        maxammo[ammo_number] = ivalue;
+    else
+    {
+        fprintf(stderr, "DEH_AmmoParseLine: field named '%s' not found\n",
+                variable_name);
+    }
 }
 
 deh_section_t deh_section_ammo =