/// <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); }