private void Unequip(Item.Equip slot) { // Check if slot contains an item. if (_player.equipment[(int)slot] != null) { // Set item to the equipped item. Item item = _player.equipment[(int)slot]; // Find the first empty slot in the inventory. for (int i = 0; i < _player.inventory.Length; i++) { if (_player.inventory[i] == null) { // Unequip item and put it in inventory. _player.inventory[i] = item; _player.equipment[(int)slot] = null; // Increase available inventory slots. _player.inventorySlotsUsed++; // Show item on screen. _mainForm.UpdateText(); break; } } } }
private void EquipItem(Item.Equip slot) { // Initialise itemEquip variable. Holds the item we'll attempt to equip. Item itemEquip = null; // Initialise the equipped variable. Holds the item (if there is) we currently have equipped. Item equipped = null; // NullReferenceException catcher. if (lbInventory.SelectedItem != null) { // Check all used slots to find the selected item. for (int i = 0; i < _player.inventory.Length; i++) { // Store selected item in itemEquip. if (_player.inventory[i] != null && _player.inventory[i] == (lbInventory.SelectedItem as Item)) { itemEquip = _player.inventory[i]; } } // If player meets lvl/str/int/dex requirements and item is of correct equip slot, equip item. if (itemEquip != null && itemEquip.equipSlot.Equals(slot) && _player.level >= itemEquip.levelRequirement && _player.attributes[(int)PlayerStat.Attribute.Strength].Final() >= itemEquip.strengthRequirement && _player.attributes[(int)PlayerStat.Attribute.Intelligence].Final() >= itemEquip.intelligenceRequirement && _player.attributes[(int)PlayerStat.Attribute.Dexterity].Final() >= itemEquip.dexterityRequirement) { if (_player.equipment[(int)slot] != null) { equipped = _player.equipment[(int)slot]; } // Equip item. _player.equipment[(int)slot] = itemEquip; // Remove from inventory. for (int i = 0; i < _player.inventory.Length; i++) { if (_player.inventory[i] != null && _player.inventory[i] == (lbInventory.SelectedItem as Item)) { _player.inventory[i] = null; } } // Decrease available inventory slots. _player.inventorySlotsUsed--; // If we had an item equipped. if (equipped != null) { // Find the first empty slot in the inventory. for (int i = 0; i < _player.inventory.Length; i++) { if (_player.inventory[i] == null) { // Put it in inventory. _player.inventory[i] = equipped; // Increase available inventory slots. _player.inventorySlotsUsed++; // Show item on screen. _mainForm.UpdateText(); // Job done, exist for-loop. break; } } } } // Otherwise, show dialog box telling player cannot equip item. else { DialogResult notYetDialog = MessageBox.Show($"You do not meet the requirements to equip this item. \n" + $"\t\t Player - Item \n" + $"Slot:\t\t {Enum.GetName(typeof(Item.Equip), slot)} - {Enum.GetName(typeof(Item.Equip), itemEquip.equipSlot)} \n" + $"Level:\t\t {_player.level} - {itemEquip.levelRequirement} \n" + $"Strength:\t {_player.attributes[(int)PlayerStat.Attribute.Strength].Final()} - {itemEquip.strengthRequirement} \n" + $"Intelligence:\t {_player.attributes[(int)PlayerStat.Attribute.Intelligence].Final()} - {itemEquip.intelligenceRequirement} \n" + $"Dexterity:\t {_player.attributes[(int)PlayerStat.Attribute.Dexterity].Final()} - {itemEquip.dexterityRequirement}", "Not Yet", MessageBoxButtons.OK, MessageBoxIcon.Information); } } _mainForm.UpdateText(); }