From f4f051d366abcc673466e7ce73945e468b511ff9 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Tue, 4 Oct 2005 22:04:06 +0000 Subject: Parse dehacked "Ammo" sections properly Subversion-branch: /trunk/chocolate-doom Subversion-revision: 163 --- src/deh_ammo.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/src/deh_ammo.c b/src/deh_ammo.c index 5ebcb76a..9bab7759 100644 --- 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 +#include +#include + #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 = -- cgit v1.2.3