private void HandleTravelInteraction(string[] commandWords, Person actor) { var traveller = actor as ITraveller; if (traveller != null) { var targetLocation = this.locationByName[commandWords[2]]; peopleByLocation[traveller.Location].Remove(actor); traveller.TravelTo(targetLocation); peopleByLocation[traveller.Location].Add(actor); foreach (var item in actor.ListInventory()) { item.UpdateWithInteraction("travel"); } } }
private void HandleSellInteraction(string[] commandWords, Person actor) { Item saleItem = null; string saleItemName = commandWords[2]; foreach (var item in actor.ListInventory()) { if (ownerByItem[item] == actor && saleItemName == item.Name) { saleItem = item; } } var buyer = personByName[commandWords[3]] as Shopkeeper; if (buyer != null && peopleByLocation[actor.Location].Contains(buyer)) { var price = buyer.CalculateBuyingPrice(saleItem); moneyByPerson[buyer] -= price; moneyByPerson[actor] += price; this.RemoveFromPerson(actor, saleItem); this.AddToPerson(buyer, saleItem); saleItem.UpdateWithInteraction("sell"); } }
private void HandleListInventoryInteraction(Person actor) { var inventory = actor.ListInventory(); foreach (var item in inventory) { if (ownerByItem[item] == actor) { Console.WriteLine(item.Name); item.UpdateWithInteraction("inventory"); } } if (inventory.Count == 0) { Console.WriteLine("empty"); } }
private void HandleDropInteraction(Person actor) { foreach (var item in actor.ListInventory()) { if (ownerByItem[item] == actor) { strayItemsByLocation[actor.Location].Add(item); this.RemoveFromPerson(actor, item); item.UpdateWithInteraction("drop"); } } }
private void handleGatherInteraction(Person actor, string gatheredItemName) { var gatheringLocation = actor.Location as IGatheringLocation; if (gatheringLocation != null) { if (actor.ListInventory().Any((item) => item.ItemType == gatheringLocation.RequiredItem)) { var producedItem = gatheringLocation.ProduceItem(gatheredItemName); this.AddToPerson(actor, producedItem); } } }
private void CraftWeapon(Person actor, string craftedItemName) { var actorInventory = actor.ListInventory(); if (actorInventory.Any((item) => item.ItemType == ItemType.Iron) && actorInventory.Any((item) => item.ItemType == ItemType.Wood)) { this.AddToPerson(actor, new Weapon(craftedItemName)); } }