public Wood(string name, Location location = null)
     : base(name, Wood.generalWoodValue, ItemType.Wood, location)
 {
 }
 protected override Item CreateItem(string itemTypeString, string itemNameString, Location itemLocation, Item item)
 {
     switch (itemTypeString)
     {
         case "weapon":
             item = new Weapon(itemNameString, itemLocation);
             break;
         case "wood":
             item = new Wood(itemNameString, itemLocation);
             break;
         case "iron":
             item = new Iron(itemNameString, itemLocation);
             break;
         default:
             return base.CreateItem(itemTypeString, itemNameString, itemLocation, item);
     }
     return item;
 }
 public virtual void TravelTo(Location location)
 {
     this.Location = location;
 }
 public Weapon(string name, Location location = null)
     : base(name, Weapon.generalWeaponValue, ItemType.Weapon, location)
 {
 }
 public Shopkeeper(string name, Location location)
     : base(name, location)
 {
 }
 public Traveller(string name, Location location)
     : base(name, location)
 {
 }
 public Merchant(string name, Location location = null)
     : base(name, location)
 {
 }
 public Person(string name, Location location)
     : base(name)
 {
     this.Location = location;
     this.inventoryItems = new HashSet<Item>();
 }
        protected Item(string name, int itemValue, string type, Location location = null)
            : base(name)
        {
            this.Value = itemValue;

            foreach (var itemType in (ItemType[])Enum.GetValues(typeof(ItemType)))
            {
                if (itemType.ToString() == type)
                {
                    this.ItemType = itemType;
                }
            }
        }
 protected Item(string name, int itemValue, ItemType type, Location location = null)
     : base(name)
 {
     this.Value = itemValue;
     this.ItemType = type;
 }
 public Iron(string name, Location location = null)
     : base(name, Iron.generalIronValue, ItemType.Iron, location)
 {
 }
 protected virtual Person CreatePerson(string personTypeString, string personNameString, Location personLocation)
 {
     Person person = null;
     switch (personTypeString)
     {
         case "shopkeeper":
             person = new Shopkeeper(personNameString, personLocation);
             break;
         case "traveller":
             person = new Traveller(personNameString, personLocation);
             break;
         default:
             break;
     }
     return person;
 }
 protected virtual Item CreateItem(string itemTypeString, string itemNameString, Location itemLocation, Item item)
 {
     switch (itemTypeString)
     {
         case "armor":
             item = new Armor(itemNameString, itemLocation);
             break;
         default:
             break;
     }
     return item;
 }
 public Armor(string name, Location location = null)
     : base(name, Armor.GeneralArmorValue, ItemType.Armor, location)
 {
 }
 protected override Person CreatePerson(string personTypeString, string personNameString, Location personLocation)
 {
     Person p = null;
     switch (personTypeString)
     {
         case "merchant":
             p = new Merchant(personNameString, personLocation);
             break;
         default:
             p = base.CreatePerson(personTypeString, personNameString, personLocation);
             break;
     }
     return p;
 }