// private void EquipGear() // { // var inventory = Shipwreck.CurrentGame.Player.Inventory; // var itemToEquip = ViewHelpers.GetInventoryItem("Which item would you like to equip?"); // if (itemToEquip != null) // { // if (itemToEquip.GetType().IsSubclassOf(typeof(Weapon))) // { // inventory.ActiveWeapon = (Weapon)itemToEquip; // } // else if (itemToEquip.GetType() == typeof(Armor)) // { // inventory.ActiveArmor = (Armor)itemToEquip; // } // Console.WriteLine($"Your {itemToEquip.Name} has been equipped"); // } // else // { // Console.WriteLine($"That is not an item that exists in your inventory"); // } // } private void DropItem() { var inventory = Shipwreck.CurrentGame.Player.Inventory; var droppableItemRecords = inventory.Items.Where(itemRecord => itemRecord.InventoryItem.Droppable).ToList(); var promptItems = droppableItemRecords.Select(record => record.InventoryItem.Name).ToList(); promptItems.Add("Exit"); var itemToDropName = Prompt.Select("Which item would you like to drop?", promptItems); if (itemToDropName == "Exit") { return; } var itemRecordToDrop = droppableItemRecords.FirstOrDefault(record => record.InventoryItem.Name == itemToDropName); if (itemRecordToDrop == null) { return; // todo there's gotta be a better way to do this... } var quantity = ViewHelpers.GetQuantity($"You have {itemRecordToDrop.Quantity} {itemToDropName}(s). How Many would you like to drop?", itemRecordToDrop.Quantity); var numDropped = InventoryController.RemoveItems(inventory, itemRecordToDrop?.InventoryItem, quantity); Log.Success($"You dropped {numDropped} {itemToDropName}(s)"); }
// private void ViewResources() // { // StringBuilder line; // var inventory = Shipwreck.CurrentGame?.Player.Inventory; // var resources = InventoryController.GetItemsByType<Resource>(inventory); // // Console.WriteLine("\n-------------------------\n Resources:\n-------------------------"); // // line = new StringBuilder(" "); // line.Insert(1, "ITEM"); // line.Insert(16, "QTY"); // line.Insert(20, "DESC"); // Console.WriteLine(line); // // foreach (var resource in resources) // { // line = new StringBuilder(" "); // line.Insert(1, resource.InventoryItem.Name); // line.Insert(16, resource.Quantity); // line.Insert(20, (resource.InventoryItem).Description); // Console.WriteLine(line); // } // } private void EatFood() { var player = Shipwreck.CurrentGame.Player; var inventory = player.Inventory; var foodInInventory = InventoryController.GetItemsByType <Food>(inventory); var promptItems = foodInInventory.Select(itemRecord => itemRecord.InventoryItem.Name).ToList(); promptItems.Add("Exit"); var itemToEatName = Prompt.Select("Which item would you like to eat?", promptItems); if (itemToEatName == "Exit") { return; } var itemToEatRecord = foodInInventory.FirstOrDefault(record => record.InventoryItem.Name == itemToEatName); if (itemToEatRecord == null) { return; // todo better way to do this... } if (itemToEatRecord.InventoryItem.Droppable == false) { Log.Warning($"You can't eat your {itemToEatName}"); } else { var quantity = ViewHelpers.GetQuantity($"You have {itemToEatRecord.Quantity} {itemToEatName}(s). How many would you like to eat?", itemToEatRecord.Quantity); if (quantity == 0) { return; } var previousHealth = player.Health; var previousHunger = player.Hunger; PlayerController.Eat((Food)itemToEatRecord.InventoryItem, quantity); Log.Success("Delicious!"); Log.Info($"Health +{player.Health - previousHealth} \nHunger +{player.Hunger - previousHunger}\n"); } }