Ejemplo n.º 1
0
        /// <summary>
        /// Get the equipment slot this items belongs in.
        /// Not currently 100% known how Daggerfall defines equipment slots.
        /// This method uses the best available knowledge at time of writing.
        /// When item supports multiple slots:
        ///  - If a slot is open, returns first free slot.
        ///  - If both slots populated, returns first slot by order.
        /// </summary>
        /// <param name="item">Item to find equipment slot.</param>
        /// <returns>EquipSlot.</returns>
        public EquipSlots GetEquipSlot(DaggerfallUnityItem item)
        {
            // Check for a custom item defining an equip slot, and return if so, else if None then continue
            EquipSlots result = item.GetEquipSlot();

            if (result != EquipSlots.None)
            {
                return(result);
            }

            // Resolve based on equipment category
            switch (item.ItemGroup)
            {
            case ItemGroups.Gems:
                result = GetGemSlot();
                break;

            case ItemGroups.Jewellery:
                result = GetJewellerySlot(item);
                break;

            case ItemGroups.Armor:
                result = GetArmorSlot(item);
                break;

            case ItemGroups.Weapons:
                result = GetWeaponSlot(item);
                break;

            case ItemGroups.MensClothing:
                result = GetMensClothingSlot(item);
                break;

            case ItemGroups.WomensClothing:
                result = GetWomensClothingSlot(item);
                break;
            }

            return(result);
        }
        /// <summary>
        /// Get the equipment slot this items belongs in.
        /// Not currently 100% known how Daggerfall defines equipment slots.
        /// This method uses the best available knowledge at time of writing.
        /// When item supports multiple slots:
        ///  - If a slot is open, returns first free slot.
        ///  - If both slots populated, returns first slot by order.
        /// </summary>
        /// <param name="item">Item to find equipment slot.</param>
        /// <returns>EquipSlot.</returns>
        public EquipSlots GetEquipSlot(DaggerfallUnityItem item)
        {
            // Check for a custom item defining an equip slot, and return if so, else if None then continue
            EquipSlots result = item.GetEquipSlot();

            if (result != EquipSlots.None)
            {
                return(result);
            }

            // Resolve based on equipment category
            switch (item.ItemGroup)
            {
            case ItemGroups.Gems:
                result = GetGemSlot();
                break;

            case ItemGroups.Jewellery:
                result = GetJewellerySlot(item);
                break;

            case ItemGroups.Tiara_Jewelry:
            case ItemGroups.Crown_Jewelry:
                result = EquipSlots.Head;
                break;

            case ItemGroups.Ring_Jewelry:
                result = GetFirstSlot(EquipSlots.Ring0, EquipSlots.Ring1);
                break;

            case ItemGroups.Earing_Jewelry:
                result = GetFirstSlot(EquipSlots.Mark0, EquipSlots.Mark1);
                break;

            case ItemGroups.Neck_Jewelry:
                result = GetFirstSlot(EquipSlots.Amulet0, EquipSlots.Amulet1);
                break;

            case ItemGroups.Bracelet_Jewelry:
                result = GetFirstSlot(EquipSlots.Bracelet0, EquipSlots.Bracelet1);
                break;

            case ItemGroups.Magic_Amplifiers:
                result = GetFirstSlot(EquipSlots.Mark0, EquipSlots.Mark1);     // Will likely change later when I make scepters and wands possibly equip onto left-hand instead of an accessory slot, for not this is just for the mark item.
                break;

            case ItemGroups.Armor:
                result = GetArmorSlot(item);
                break;

            case ItemGroups.Weapons:
                result = GetWeaponSlot(item);
                break;

            case ItemGroups.MensClothing:
                result = GetMensClothingSlot(item);
                break;

            case ItemGroups.WomensClothing:
                result = GetWomensClothingSlot(item);
                break;
            }

            return(result);
        }