diff options
author | Simon Howard | 2005-10-04 22:04:06 +0000 |
---|---|---|
committer | Simon Howard | 2005-10-04 22:04:06 +0000 |
commit | f4f051d366abcc673466e7ce73945e468b511ff9 (patch) | |
tree | 82662984b5410485064b1eb33005f840e0ddca44 | |
parent | a077c664121f6368a117a2d26688361ce00606f7 (diff) | |
download | chocolate-doom-f4f051d366abcc673466e7ce73945e468b511ff9.tar.gz chocolate-doom-f4f051d366abcc673466e7ce73945e468b511ff9.tar.bz2 chocolate-doom-f4f051d366abcc673466e7ce73945e468b511ff9.zip |
Parse dehacked "Ammo" sections properly
Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 163
-rw-r--r-- | src/deh_ammo.c | 51 |
1 files 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 <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 = |