public static void AddBonusesDescription(IEquipableItem item, IEquipableItem equiped, List <StyledLine> descriptionResult) { var equalItems = item.Equals(equiped); foreach (var bonusType in Enum.GetValues(typeof(EquipableBonusType)).Cast <EquipableBonusType>()) { var equipedValue = equiped?.GetBonus(bonusType) ?? 0; var value = item.GetBonus(bonusType); if (value == 0 && equipedValue == 0) { continue; } var bonusName = GetEquipableBonusTypeName(bonusType); var bonusDescription = new StyledLine { bonusName, " Bonus: " }; if (equalItems || equiped == null) { bonusDescription.Add(GetValueString(value)); } else { bonusDescription.Add(GetCompareValueString(value, equipedValue)); } descriptionResult.Add(bonusDescription); } foreach (var stat in Enum.GetValues(typeof(PlayerStats)).Cast <PlayerStats>()) { var equipedValue = equiped?.GetStatBonus(stat) ?? 0; var value = item.GetStatBonus(stat); if (value == 0 && equipedValue == 0) { continue; } var bonusName = GetStatName(stat); var bonusDescription = new StyledLine { bonusName, " Bonus: " }; if (equalItems || equiped == null) { bonusDescription.Add(GetValueString(value)); } else { bonusDescription.Add(GetCompareValueString(value, equipedValue)); } descriptionResult.Add(bonusDescription); } }
private void OnTriggerExit(Collider other) { if (other.gameObject.CompareTag("Pickup")) { IEquipableItem item = other.gameObject.GetComponent <IEquipableItem>(); if (item != null && CurrentPrompt == item) { CurrentPrompt = null; } } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Pickup")) { IEquipableItem item = other.gameObject.GetComponent <IEquipableItem>(); if (item != null && !item.IsCurrentlyEquiped()) { CurrentPrompt = item; } } }
private void OnGripped(object sender, ClickedEventArgs e) { // Switch items if (CurrentPrompt != null) { CurrentItem = CurrentPrompt; CurrentPrompt = null; } // Drop current item else if (CurrentItem != null) { CurrentItem = null; } }
public bool IsEquiped(IEquipableItem item) { switch (item) { case IHoldableItem holdableItem: return((rightHandItem != null && rightHandItem.Equals(holdableItem)) || (leftHandItem != null && leftHandItem.Equals(holdableItem))); case IArmorItem armorItem: return(Armor[armorItem.ArmorType] != null && Armor[armorItem.ArmorType].Equals(item)); case SpellBook spellBookItem: return(SpellBook != null && SpellBook.Equals(spellBookItem)); default: throw new ArgumentException($"Equipable item type is not supported: {item.GetType().FullName}"); } }
public void EquipItem(IEquipableItem item) { switch (item) { case IHoldableItem _: throw new ArgumentException($"Weapon items should be equiped with {nameof(EquipHoldable)}"); case IArmorItem armorItem: EquipArmor(armorItem); break; case SpellBook spellBookItem: EquipSpellBook(spellBookItem); break; default: throw new ArgumentException($"Equipable item type is not supported: {item.GetType().FullName}"); } }
public void UnequipItem(IEquipableItem item) { switch (item) { case IHoldableItem holdableItem: UnequipHoldable(holdableItem); break; case IArmorItem armorItem: UnequipArmor(armorItem.ArmorType); break; case SpellBook _: UnequipSpellBook(); break; default: throw new ArgumentException($"Equipable item type is not supported: {item.GetType().FullName}"); } }
public EquipItemPlayerAction(IEquipableItem item) { this.item = item; }
public ItemUnequipedMessage(IEquipableItem item) { this.item = item; }