public ItemDataType(String file)
{
m_items = new List<ItemEntry>();
Dictionary<String,Item.ClassificationType> classificationMap = new Dictionary<string,Item.ClassificationType>();
classificationMap["Amazon Bow"] = Item.ClassificationType.amazon_bow;
classificationMap["Amazon Javelin"] = Item.ClassificationType.amazon_javelin;
classificationMap["Amazon Spear"] = Item.ClassificationType.amazon_spear;
classificationMap["Amulet"] = Item.ClassificationType.amulet;
classificationMap["Antidote Potion"] = Item.ClassificationType.antidote_potion;
classificationMap["Armor"] = Item.ClassificationType.armor;
classificationMap["Arrows"] = Item.ClassificationType.arrows;
classificationMap["Assassin Katar"] = Item.ClassificationType.assassin_katar;
classificationMap["Axe"] = Item.ClassificationType.axe;
classificationMap["Barbarian Helm"] = Item.ClassificationType.barbarian_helm;
classificationMap["Belt"] = Item.ClassificationType.belt;
classificationMap["Body Part"] = Item.ClassificationType.body_part;
classificationMap["Bolts"] = Item.ClassificationType.bolts;
classificationMap["Boots"] = Item.ClassificationType.boots;
classificationMap["Bow"] = Item.ClassificationType.bow;
classificationMap["Circlet"] = Item.ClassificationType.circlet;
classificationMap["Club"] = Item.ClassificationType.club;
classificationMap["Crossbow"] = Item.ClassificationType.crossbow;
classificationMap["Dagger"] = Item.ClassificationType.dagger;
classificationMap["Druid Pelt"] = Item.ClassificationType.druid_pelt;
classificationMap["Ear"] = Item.ClassificationType.ear;
classificationMap["Elixir"] = Item.ClassificationType.elixir;
classificationMap["Gem"] = Item.ClassificationType.gem;
classificationMap["Gloves"] = Item.ClassificationType.gloves;
classificationMap["Gold"] = Item.ClassificationType.gold;
classificationMap["Grand Charm"] = Item.ClassificationType.grand_charm;
classificationMap["Hammer"] = Item.ClassificationType.hammer;
classificationMap["Health Potion"] = Item.ClassificationType.health_potion;
classificationMap["Helm"] = Item.ClassificationType.helm;
classificationMap["Herb"] = Item.ClassificationType.herb;
classificationMap["Javelin"] = Item.ClassificationType.javelin;
classificationMap["Jewel"] = Item.ClassificationType.jewel;
classificationMap["Key"] = Item.ClassificationType.key;
classificationMap["Large Charm"] = Item.ClassificationType.large_charm;
classificationMap["Mace"] = Item.ClassificationType.mace;
classificationMap["Mana Potion"] = Item.ClassificationType.mana_potion;
classificationMap["Necromancer Shrunken Head"] = Item.ClassificationType.necromancer_shrunken_head;
classificationMap["Paladin Shield"] = Item.ClassificationType.paladin_shield;
classificationMap["Polearm"] = Item.ClassificationType.polearm;
classificationMap["Quest Item"] = Item.ClassificationType.quest_item;
classificationMap["Rejuvenation Potion"] = Item.ClassificationType.rejuvenation_potion;
classificationMap["Ring"] = Item.ClassificationType.ring;
classificationMap["Rune"] = Item.ClassificationType.rune;
classificationMap["Scepter"] = Item.ClassificationType.scepter;
classificationMap["Scroll"] = Item.ClassificationType.scroll;
classificationMap["Shield"] = Item.ClassificationType.shield;
classificationMap["Small Charm"] = Item.ClassificationType.small_charm;
classificationMap["Sorceress Orb"] = Item.ClassificationType.sorceress_orb;
classificationMap["Spear"] = Item.ClassificationType.spear;
classificationMap["Staff"] = Item.ClassificationType.staff;
classificationMap["Stamina Potion"] = Item.ClassificationType.stamina_potion;
classificationMap["Sword"] = Item.ClassificationType.sword;
classificationMap["Thawing Potion"] = Item.ClassificationType.thawing_potion;
classificationMap["Throwing Axe"] = Item.ClassificationType.throwing_axe;
classificationMap["Throwing Knife"] = Item.ClassificationType.throwing_knife;
classificationMap["Throwing Potion"] = Item.ClassificationType.throwing_potion;
classificationMap["Tome"] = Item.ClassificationType.tome;
classificationMap["Torch"] = Item.ClassificationType.torch;
classificationMap["Wand"] = Item.ClassificationType.wand;
List<string> lines = new List<string>();
using (StreamReader r = new StreamReader(file))
{
string line;
while ((line = r.ReadLine()) != null)
{
lines.Add(line);
}
}
foreach (string line in lines)
{
try
{
String[] tokens = line.Split('|');
if (tokens.Length == 0)
continue;
if (tokens.Length != 8)
{
Console.WriteLine("Invalid Token Count: {0}", tokens.Length);
throw new Exception("Unable to parse item data");
}
String name = tokens[0];
String code = tokens[1];
String classification_string = tokens[2];
UInt32 width = UInt32.Parse(tokens[3]);
UInt32 height = UInt32.Parse(tokens[4]);
bool stackable = UInt32.Parse(tokens[5]) != 0;
bool usable = UInt32.Parse(tokens[6]) != 0;
bool throwable = UInt32.Parse(tokens[7]) != 0;
Item.ClassificationType classification;
if (!classificationMap.TryGetValue(classification_string, out classification))
throw new Exception("Unable to parse item classification");
ItemEntry i = new ItemEntry(name, code, classification, width, height, stackable, usable, throwable);
m_items.Add(i);
}
catch (Exception e)
{
Console.WriteLine("Error parsing ItemDataType: {0}", e.ToString());
}
}
}