public static bool CanEquipPlayerEquipment <TStringType>([NotNull] this CreatureDisplayInfoExtraEntry <TStringType> entry) where TStringType : class { if (entry == null) { throw new ArgumentNullException(nameof(entry)); } return(entry.Flags.HasFlag(CreatureDisplayInfoExtraFlags.CanEquipPlayerEquipment)); }
/// <summary> /// Check <see cref="HasEquipment{TStringType}"/> first. /// </summary> /// <typeparam name="TStringType"></typeparam> /// <param name="entry"></param> /// <param name="slot"></param> /// <returns></returns> public static int GetEquipmentId <TStringType>([NotNull] this CreatureDisplayInfoExtraEntry <TStringType> entry, EquipmentSlots slot) where TStringType : class { if (entry == null) { throw new ArgumentNullException(nameof(entry)); } if (!Enum.IsDefined(typeof(EquipmentSlots), slot)) { throw new InvalidEnumArgumentException(nameof(slot), (int)slot, typeof(EquipmentSlots)); } switch (slot) { case EquipmentSlots.HEAD: return(entry.HelmItemId); case EquipmentSlots.SHOULDERS: return(entry.ShoulderItemId); case EquipmentSlots.BODY: return(entry.ShirtItemId); case EquipmentSlots.CHEST: return(entry.CuirassItemId); case EquipmentSlots.WAIST: return(entry.BeltItemId); case EquipmentSlots.LEGS: return(entry.LegsItemId); case EquipmentSlots.FEET: return(entry.BootsItemId); case EquipmentSlots.WRISTS: return(entry.WristItemId); case EquipmentSlots.HANDS: return(entry.GlovesItemId); case EquipmentSlots.BACK: return(entry.CapeItemId); case EquipmentSlots.TABARD: return(entry.TabardItemId); //These are not on creature display info extra entry. case EquipmentSlots.FINGER1: case EquipmentSlots.FINGER2: case EquipmentSlots.TRINKET1: case EquipmentSlots.TRINKET2: case EquipmentSlots.MAINHAND: case EquipmentSlots.OFFHAND: case EquipmentSlots.RANGED: case EquipmentSlots.NECK: throw new InvalidOperationException($"Creature does not have Slot: {slot} item id defined. Check {nameof(HasEquipment)} first."); default: throw new ArgumentOutOfRangeException(nameof(slot), slot, null); } }