Exemple #1
0
        // 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)");
        }
Exemple #2
0
        // 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");
            }
        }