public LegacyMapBuilder()
{
var parser = new DungeonParser();
parser.Parse();
Data = parser.Data;
ItemCreator = new LegacyItemCreator(this);
WeaponFactories = Data.WeaponDescriptors
.Select(wd =>
{
var itemDescriptor = Data.GetItemDescriptor(ObjectCategory.Weapon, wd.Identifer);
return new WeaponItemFactory(wd.Name, wd.Weight, GetAttackFactories(itemDescriptor),
ItemCreator.GetStorageTypes(itemDescriptor.CarryLocation),
wd.DeltaEnergy, (WeaponClass)wd.Class, wd.KineticEnergy, wd.ShootDamage, wd.Strength);
})
.ToArray();
ClothFactories = Data.ArmorDescriptors
.Select(wd =>
{
var itemDescriptor = Data.GetItemDescriptor(ObjectCategory.Clothe, wd.Identifer);
return new ClothItemFactory(wd.Name, wd.Weight, GetAttackFactories(itemDescriptor)
, ItemCreator.GetStorageTypes(itemDescriptor.CarryLocation));
})
.ToArray(); ;
ContainerFactories = Data.ContainerDescriptors
.Select(wd =>
{
var itemDescriptor = Data.GetItemDescriptor(ObjectCategory.Container, wd.Identifer);
return new ContainerItemFactory(wd.Name, wd.Weight, GetAttackFactories(itemDescriptor)
, ItemCreator.GetStorageTypes(itemDescriptor.CarryLocation));
})
.ToArray();
ScrollFactories = Data.ScrollDescriptors
.Select(wd =>
{
var itemDescriptor = Data.GetItemDescriptor(ObjectCategory.Scroll, wd.Identifer);
return new ScrollItemFactory(wd.Name, wd.Weight, GetAttackFactories(itemDescriptor)
, ItemCreator.GetStorageTypes(itemDescriptor.CarryLocation));
})
.ToArray();
MiscFactories = Data.MiscDescriptors
.Select(wd =>
{
var itemDescriptor = Data.GetItemDescriptor(ObjectCategory.Miscellenaous, wd.Identifer);
return new MiscItemFactory(wd.Name, wd.Weight, GetAttackFactories(itemDescriptor)
, ItemCreator.GetStorageTypes(itemDescriptor.CarryLocation));
})
.ToArray();
PotionFactories = Data.PotionDescriptors
.Select(p =>
{
var itemDescriptor = Data.GetItemDescriptor(ObjectCategory.Potion, p.Identifer);
return new PotionItemFactory(p.Name, p.Weight, GetAttackFactories(itemDescriptor)
, ItemCreator.GetStorageTypes(itemDescriptor.CarryLocation));
})
.ToArray();
}