zim/area/
zim/bin/
zim/clans/plists/
zim/corefiles/
zim/doc/muddy/
zim/gods/
zim/log/
zim/player/
zim/skill_tree/
zim/tmp/
#include <stdio.h>

#include "merc.h"
#include "db.h"
#include "material.h"

DECLARE_DBLOAD_FUN(load_material);

DBFUN db_load_materials[] =
{
	{ "MATERIAL",   load_material},
	{ NULL}
};
DBDATA db_materials = { db_load_materials };

DBLOAD_FUN(load_material)
{
	material_t *material;

	material = varr_enew(&materials);

	while(1) {
		char *word = feof(fp) ? "End" : fread_word(fp);
		bool fMatch = FALSE;

		switch (UPPER(word[0])) {
		case 'A':
			KEY("AntiMagic", material->antimagic,fread_number(fp));
			break;

		case 'B':
			KEY("BPCost",   material->bp_cost,      fread_number(fp));
			break;
		case 'C':
			KEY("Cost",   material->cost,      fread_number(fp));
			break;

		case 'D':
			KEY("Density", material->density, fread_number(fp));
			break;

		case 'E':
			if (!str_cmp(word, "End")) {
				if (IS_NULLSTR(material->name)) {
					db_error("load_material",
						"material name not defined");
					material_free(material);
					materials.nused--;
				}
				return;
			}
			break;

		case 'F':
			KEY("Flags", material->flags, fread_fstring(material_flags, fp));
			KEY("Fragility", material->fragility,    fread_number(fp));
			break;

		case 'N':
			SKEY("Name",	material->name);
			KEY("Noisy",	material->noisy, fread_number(fp));
			break;

		case 'R':
			KEY("Rigidity",  material->rigidity, fread_number(fp));
			break;

		case 'T':
			if (!str_cmp(word, "Type")) {
				material->type = fread_fword(material_types, fp);
				fMatch = TRUE;
			}
			break;

		}

		if (!fMatch)
			db_error("load_material", "%s: Unknown keyword", word);
	}
}