Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
 private void OnTriggerExit(Collider other)
 {
     if (other.gameObject.CompareTag("Pickup"))
     {
         IEquipableItem item = other.gameObject.GetComponent <IEquipableItem>();
         if (item != null && CurrentPrompt == item)
         {
             CurrentPrompt = null;
         }
     }
 }
Beispiel #3
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.CompareTag("Pickup"))
     {
         IEquipableItem item = other.gameObject.GetComponent <IEquipableItem>();
         if (item != null && !item.IsCurrentlyEquiped())
         {
             CurrentPrompt = item;
         }
     }
 }
Beispiel #4
0
    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;
        }
    }
Beispiel #5
0
        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}");
            }
        }
Beispiel #6
0
        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}");
            }
        }
Beispiel #7
0
        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}");
            }
        }
Beispiel #8
0
 public EquipItemPlayerAction(IEquipableItem item)
 {
     this.item = item;
 }
Beispiel #9
0
 public ItemUnequipedMessage(IEquipableItem item)
 {
     this.item = item;
 }