mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
Add equipment swaps and writing to option.
This commit is contained in:
parent
33b4905ae2
commit
ab53f17a7e
9 changed files with 723 additions and 526 deletions
82
Penumbra.GameData/Data/ItemData.cs
Normal file
82
Penumbra.GameData/Data/ItemData.cs
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Dalamud;
|
||||
using Dalamud.Data;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Utility;
|
||||
using Lumina.Excel.GeneratedSheets;
|
||||
using Penumbra.GameData.Enums;
|
||||
|
||||
namespace Penumbra.GameData.Data;
|
||||
|
||||
public sealed class ItemData : DataSharer, IReadOnlyDictionary<FullEquipType, IReadOnlyList<Item>>
|
||||
{
|
||||
private readonly IReadOnlyList<IReadOnlyList<Item>> _items;
|
||||
|
||||
private static IReadOnlyList<IReadOnlyList<Item>> CreateItems(DataManager dataManager, ClientLanguage language)
|
||||
{
|
||||
var tmp = Enum.GetValues<FullEquipType>().Select(t => new List<Item>(1024)).ToArray();
|
||||
|
||||
var itemSheet = dataManager.GetExcelSheet<Item>(language)!;
|
||||
foreach (var item in itemSheet)
|
||||
{
|
||||
var type = item.ToEquipType();
|
||||
if (type != FullEquipType.Unknown && item.Name.RawData.Length > 1)
|
||||
tmp[(int)type].Add(item);
|
||||
}
|
||||
|
||||
var ret = new IReadOnlyList<Item>[tmp.Length];
|
||||
ret[0] = Array.Empty<Item>();
|
||||
for (var i = 1; i < tmp.Length; ++i)
|
||||
ret[i] = tmp[i].OrderBy(item => item.Name.ToDalamudString().TextValue).ToArray();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public ItemData(DalamudPluginInterface pluginInterface, DataManager dataManager, ClientLanguage language)
|
||||
: base(pluginInterface, language, 1)
|
||||
{
|
||||
_items = TryCatchData("ItemList", () => CreateItems(dataManager, language));
|
||||
}
|
||||
|
||||
protected override void DisposeInternal()
|
||||
=> DisposeTag("ItemList");
|
||||
|
||||
public IEnumerator<KeyValuePair<FullEquipType, IReadOnlyList<Item>>> GetEnumerator()
|
||||
{
|
||||
for (var i = 1; i < _items.Count; ++i)
|
||||
yield return new KeyValuePair<FullEquipType, IReadOnlyList<Item>>((FullEquipType)i, _items[i]);
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
=> GetEnumerator();
|
||||
|
||||
public int Count
|
||||
=> _items.Count - 1;
|
||||
|
||||
public bool ContainsKey(FullEquipType key)
|
||||
=> (int)key < _items.Count && key != FullEquipType.Unknown;
|
||||
|
||||
public bool TryGetValue(FullEquipType key, out IReadOnlyList<Item> value)
|
||||
{
|
||||
if (ContainsKey(key))
|
||||
{
|
||||
value = _items[(int)key];
|
||||
return true;
|
||||
}
|
||||
|
||||
value = _items[0];
|
||||
return false;
|
||||
}
|
||||
|
||||
public IReadOnlyList<Item> this[FullEquipType key]
|
||||
=> TryGetValue(key, out var ret) ? ret : throw new IndexOutOfRangeException();
|
||||
|
||||
public IEnumerable<FullEquipType> Keys
|
||||
=> Enum.GetValues<FullEquipType>().Skip(1);
|
||||
|
||||
public IEnumerable<IReadOnlyList<Item>> Values
|
||||
=> _items.Skip(1);
|
||||
}
|
||||
358
Penumbra.GameData/Enums/FullEquipType.cs
Normal file
358
Penumbra.GameData/Enums/FullEquipType.cs
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Lumina.Excel.GeneratedSheets;
|
||||
|
||||
namespace Penumbra.GameData.Enums;
|
||||
|
||||
public enum FullEquipType : byte
|
||||
{
|
||||
Unknown,
|
||||
|
||||
Head,
|
||||
Body,
|
||||
Hands,
|
||||
Legs,
|
||||
Feet,
|
||||
|
||||
Ears,
|
||||
Neck,
|
||||
Wrists,
|
||||
Finger,
|
||||
|
||||
Fists, // PGL, MNK
|
||||
Sword, // GLA, PLD Main
|
||||
Axe, // MRD, WAR
|
||||
Bow, // ARC, BRD
|
||||
Lance, // LNC, DRG,
|
||||
Staff, // THM, BLM, CNJ, WHM
|
||||
Wand, // THM, BLM, CNJ, WHM Main
|
||||
Book, // ACN, SMN, SCH
|
||||
Daggers, // ROG, NIN
|
||||
Broadsword, // DRK,
|
||||
Gun, // MCH,
|
||||
Orrery, // AST,
|
||||
Katana, // SAM
|
||||
Rapier, // RDM
|
||||
Cane, // BLU
|
||||
Gunblade, // GNB,
|
||||
Glaives, // DNC,
|
||||
Scythe, // RPR,
|
||||
Nouliths, // SGE
|
||||
Shield, // GLA, PLD, THM, BLM, CNJ, WHM Off
|
||||
|
||||
Saw, // CRP
|
||||
CrossPeinHammer, // BSM
|
||||
RaisingHammer, // ARM
|
||||
LapidaryHammer, // GSM
|
||||
Knife, // LTW
|
||||
Needle, // WVR
|
||||
Alembic, // ALC
|
||||
Frypan, // CUL
|
||||
Pickaxe, // MIN
|
||||
Hatchet, // BTN
|
||||
FishingRod, // FSH
|
||||
|
||||
ClawHammer, // CRP Off
|
||||
File, // BSM Off
|
||||
Pliers, // ARM Off
|
||||
GrindingWheel, // GSM Off
|
||||
Awl, // LTW Off
|
||||
SpinningWheel, // WVR Off
|
||||
Mortar, // ALC Off
|
||||
CulinaryKnife, // CUL Off
|
||||
Sledgehammer, // MIN Off
|
||||
GardenScythe, // BTN Off
|
||||
Gig, // FSH Off
|
||||
}
|
||||
|
||||
public static class FullEquipTypeExtensions
|
||||
{
|
||||
public static FullEquipType ToEquipType(this Item item)
|
||||
{
|
||||
var slot = (EquipSlot)item.EquipSlotCategory.Row;
|
||||
var weapon = (WeaponCategory)item.ItemUICategory.Row;
|
||||
return slot.ToEquipType(weapon);
|
||||
}
|
||||
|
||||
public static bool IsWeapon(this FullEquipType type)
|
||||
=> type switch
|
||||
{
|
||||
FullEquipType.Fists => true,
|
||||
FullEquipType.Sword => true,
|
||||
FullEquipType.Axe => true,
|
||||
FullEquipType.Bow => true,
|
||||
FullEquipType.Lance => true,
|
||||
FullEquipType.Staff => true,
|
||||
FullEquipType.Wand => true,
|
||||
FullEquipType.Book => true,
|
||||
FullEquipType.Daggers => true,
|
||||
FullEquipType.Broadsword => true,
|
||||
FullEquipType.Gun => true,
|
||||
FullEquipType.Orrery => true,
|
||||
FullEquipType.Katana => true,
|
||||
FullEquipType.Rapier => true,
|
||||
FullEquipType.Cane => true,
|
||||
FullEquipType.Gunblade => true,
|
||||
FullEquipType.Glaives => true,
|
||||
FullEquipType.Scythe => true,
|
||||
FullEquipType.Nouliths => true,
|
||||
FullEquipType.Shield => true,
|
||||
_ => false,
|
||||
};
|
||||
|
||||
public static bool IsTool(this FullEquipType type)
|
||||
=> type switch
|
||||
{
|
||||
FullEquipType.Saw => true,
|
||||
FullEquipType.CrossPeinHammer => true,
|
||||
FullEquipType.RaisingHammer => true,
|
||||
FullEquipType.LapidaryHammer => true,
|
||||
FullEquipType.Knife => true,
|
||||
FullEquipType.Needle => true,
|
||||
FullEquipType.Alembic => true,
|
||||
FullEquipType.Frypan => true,
|
||||
FullEquipType.Pickaxe => true,
|
||||
FullEquipType.Hatchet => true,
|
||||
FullEquipType.FishingRod => true,
|
||||
_ => false,
|
||||
};
|
||||
|
||||
public static bool IsEquipment(this FullEquipType type)
|
||||
=> type switch
|
||||
{
|
||||
FullEquipType.Head => true,
|
||||
FullEquipType.Body => true,
|
||||
FullEquipType.Hands => true,
|
||||
FullEquipType.Legs => true,
|
||||
FullEquipType.Feet => true,
|
||||
_ => false,
|
||||
};
|
||||
|
||||
public static bool IsAccessory(this FullEquipType type)
|
||||
=> type switch
|
||||
{
|
||||
FullEquipType.Ears => true,
|
||||
FullEquipType.Neck => true,
|
||||
FullEquipType.Wrists => true,
|
||||
FullEquipType.Finger => true,
|
||||
_ => false,
|
||||
};
|
||||
|
||||
public static string ToName(this FullEquipType type)
|
||||
=> type switch
|
||||
{
|
||||
FullEquipType.Head => EquipSlot.Head.ToName(),
|
||||
FullEquipType.Body => EquipSlot.Body.ToName(),
|
||||
FullEquipType.Hands => EquipSlot.Hands.ToName(),
|
||||
FullEquipType.Legs => EquipSlot.Legs.ToName(),
|
||||
FullEquipType.Feet => EquipSlot.Feet.ToName(),
|
||||
FullEquipType.Ears => EquipSlot.Ears.ToName(),
|
||||
FullEquipType.Neck => EquipSlot.Neck.ToName(),
|
||||
FullEquipType.Wrists => EquipSlot.Wrists.ToName(),
|
||||
FullEquipType.Finger => "Ring",
|
||||
FullEquipType.Fists => "Fist Weapon",
|
||||
FullEquipType.Sword => "Sword",
|
||||
FullEquipType.Axe => "Axe",
|
||||
FullEquipType.Bow => "Bow",
|
||||
FullEquipType.Lance => "Lance",
|
||||
FullEquipType.Staff => "Staff",
|
||||
FullEquipType.Wand => "Mace",
|
||||
FullEquipType.Book => "Book",
|
||||
FullEquipType.Daggers => "Dagger",
|
||||
FullEquipType.Broadsword => "Broadsword",
|
||||
FullEquipType.Gun => "Gun",
|
||||
FullEquipType.Orrery => "Orrery",
|
||||
FullEquipType.Katana => "Katana",
|
||||
FullEquipType.Rapier => "Rapier",
|
||||
FullEquipType.Cane => "Cane",
|
||||
FullEquipType.Gunblade => "Gunblade",
|
||||
FullEquipType.Glaives => "Glaive",
|
||||
FullEquipType.Scythe => "Scythe",
|
||||
FullEquipType.Nouliths => "Nouliths",
|
||||
FullEquipType.Shield => "Shield",
|
||||
FullEquipType.Saw => "Saw (Carpenter)",
|
||||
FullEquipType.CrossPeinHammer => "Hammer (Blacksmith)",
|
||||
FullEquipType.RaisingHammer => "Hammer (Armorsmith)",
|
||||
FullEquipType.LapidaryHammer => "Hammer (Goldsmith)",
|
||||
FullEquipType.Knife => "Knife (Leatherworker)",
|
||||
FullEquipType.Needle => "Needle (Weaver)",
|
||||
FullEquipType.Alembic => "Alembic (Alchemist)",
|
||||
FullEquipType.Frypan => "Frypan (Culinarian)",
|
||||
FullEquipType.Pickaxe => "Pickaxe (Miner)",
|
||||
FullEquipType.Hatchet => "Hatchet (Botanist)",
|
||||
FullEquipType.FishingRod => "Fishing Rod",
|
||||
FullEquipType.ClawHammer => "Clawhammer (Carpenter)",
|
||||
FullEquipType.File => "File (Blacksmith)",
|
||||
FullEquipType.Pliers => "Pliers (Armorsmith)",
|
||||
FullEquipType.GrindingWheel => "Grinding Wheel (Goldsmith)",
|
||||
FullEquipType.Awl => "Awl (Leatherworker)",
|
||||
FullEquipType.SpinningWheel => "Spinning Wheel (Weaver)",
|
||||
FullEquipType.Mortar => "Mortar (Alchemist)",
|
||||
FullEquipType.CulinaryKnife => "Knife (Culinarian)",
|
||||
FullEquipType.Sledgehammer => "Sledgehammer (Miner)",
|
||||
FullEquipType.GardenScythe => "Garden Scythe (Botanist)",
|
||||
FullEquipType.Gig => "Gig (Fisher)",
|
||||
_ => "Unknown",
|
||||
};
|
||||
|
||||
public static EquipSlot ToSlot(this FullEquipType type)
|
||||
=> type switch
|
||||
{
|
||||
FullEquipType.Head => EquipSlot.Head,
|
||||
FullEquipType.Body => EquipSlot.Body,
|
||||
FullEquipType.Hands => EquipSlot.Hands,
|
||||
FullEquipType.Legs => EquipSlot.Legs,
|
||||
FullEquipType.Feet => EquipSlot.Feet,
|
||||
FullEquipType.Ears => EquipSlot.Ears,
|
||||
FullEquipType.Neck => EquipSlot.Neck,
|
||||
FullEquipType.Wrists => EquipSlot.Wrists,
|
||||
FullEquipType.Finger => EquipSlot.RFinger,
|
||||
FullEquipType.Fists => EquipSlot.MainHand,
|
||||
FullEquipType.Sword => EquipSlot.MainHand,
|
||||
FullEquipType.Axe => EquipSlot.MainHand,
|
||||
FullEquipType.Bow => EquipSlot.MainHand,
|
||||
FullEquipType.Lance => EquipSlot.MainHand,
|
||||
FullEquipType.Staff => EquipSlot.MainHand,
|
||||
FullEquipType.Wand => EquipSlot.MainHand,
|
||||
FullEquipType.Book => EquipSlot.MainHand,
|
||||
FullEquipType.Daggers => EquipSlot.MainHand,
|
||||
FullEquipType.Broadsword => EquipSlot.MainHand,
|
||||
FullEquipType.Gun => EquipSlot.MainHand,
|
||||
FullEquipType.Orrery => EquipSlot.MainHand,
|
||||
FullEquipType.Katana => EquipSlot.MainHand,
|
||||
FullEquipType.Rapier => EquipSlot.MainHand,
|
||||
FullEquipType.Cane => EquipSlot.MainHand,
|
||||
FullEquipType.Gunblade => EquipSlot.MainHand,
|
||||
FullEquipType.Glaives => EquipSlot.MainHand,
|
||||
FullEquipType.Scythe => EquipSlot.MainHand,
|
||||
FullEquipType.Nouliths => EquipSlot.MainHand,
|
||||
FullEquipType.Shield => EquipSlot.OffHand,
|
||||
FullEquipType.Saw => EquipSlot.MainHand,
|
||||
FullEquipType.CrossPeinHammer => EquipSlot.MainHand,
|
||||
FullEquipType.RaisingHammer => EquipSlot.MainHand,
|
||||
FullEquipType.LapidaryHammer => EquipSlot.MainHand,
|
||||
FullEquipType.Knife => EquipSlot.MainHand,
|
||||
FullEquipType.Needle => EquipSlot.MainHand,
|
||||
FullEquipType.Alembic => EquipSlot.MainHand,
|
||||
FullEquipType.Frypan => EquipSlot.MainHand,
|
||||
FullEquipType.Pickaxe => EquipSlot.MainHand,
|
||||
FullEquipType.Hatchet => EquipSlot.MainHand,
|
||||
FullEquipType.FishingRod => EquipSlot.MainHand,
|
||||
FullEquipType.ClawHammer => EquipSlot.OffHand,
|
||||
FullEquipType.File => EquipSlot.OffHand,
|
||||
FullEquipType.Pliers => EquipSlot.OffHand,
|
||||
FullEquipType.GrindingWheel => EquipSlot.OffHand,
|
||||
FullEquipType.Awl => EquipSlot.OffHand,
|
||||
FullEquipType.SpinningWheel => EquipSlot.OffHand,
|
||||
FullEquipType.Mortar => EquipSlot.OffHand,
|
||||
FullEquipType.CulinaryKnife => EquipSlot.OffHand,
|
||||
FullEquipType.Sledgehammer => EquipSlot.OffHand,
|
||||
FullEquipType.GardenScythe => EquipSlot.OffHand,
|
||||
FullEquipType.Gig => EquipSlot.OffHand,
|
||||
_ => EquipSlot.Unknown,
|
||||
};
|
||||
|
||||
public static FullEquipType ToEquipType(this EquipSlot slot, WeaponCategory category = WeaponCategory.Unknown)
|
||||
=> slot switch
|
||||
{
|
||||
EquipSlot.Head => FullEquipType.Head,
|
||||
EquipSlot.Body => FullEquipType.Body,
|
||||
EquipSlot.Hands => FullEquipType.Hands,
|
||||
EquipSlot.Legs => FullEquipType.Legs,
|
||||
EquipSlot.Feet => FullEquipType.Feet,
|
||||
EquipSlot.Ears => FullEquipType.Ears,
|
||||
EquipSlot.Neck => FullEquipType.Neck,
|
||||
EquipSlot.Wrists => FullEquipType.Wrists,
|
||||
EquipSlot.RFinger => FullEquipType.Finger,
|
||||
EquipSlot.LFinger => FullEquipType.Finger,
|
||||
EquipSlot.HeadBody => FullEquipType.Body,
|
||||
EquipSlot.BodyHandsLegsFeet => FullEquipType.Body,
|
||||
EquipSlot.LegsFeet => FullEquipType.Legs,
|
||||
EquipSlot.FullBody => FullEquipType.Body,
|
||||
EquipSlot.BodyHands => FullEquipType.Body,
|
||||
EquipSlot.BodyLegsFeet => FullEquipType.Body,
|
||||
EquipSlot.ChestHands => FullEquipType.Body,
|
||||
EquipSlot.MainHand => category.ToEquipType(),
|
||||
EquipSlot.OffHand => category.ToEquipType(),
|
||||
EquipSlot.BothHand => category.ToEquipType(),
|
||||
_ => FullEquipType.Unknown,
|
||||
};
|
||||
|
||||
public static FullEquipType ToEquipType(this WeaponCategory category)
|
||||
=> category switch
|
||||
{
|
||||
WeaponCategory.Pugilist => FullEquipType.Fists,
|
||||
WeaponCategory.Gladiator => FullEquipType.Sword,
|
||||
WeaponCategory.Marauder => FullEquipType.Axe,
|
||||
WeaponCategory.Archer => FullEquipType.Bow,
|
||||
WeaponCategory.Lancer => FullEquipType.Lance,
|
||||
WeaponCategory.Thaumaturge1 => FullEquipType.Wand,
|
||||
WeaponCategory.Thaumaturge2 => FullEquipType.Staff,
|
||||
WeaponCategory.Conjurer1 => FullEquipType.Wand,
|
||||
WeaponCategory.Conjurer2 => FullEquipType.Staff,
|
||||
WeaponCategory.Arcanist => FullEquipType.Book,
|
||||
WeaponCategory.Shield => FullEquipType.Shield,
|
||||
WeaponCategory.CarpenterMain => FullEquipType.Saw,
|
||||
WeaponCategory.CarpenterOff => FullEquipType.ClawHammer,
|
||||
WeaponCategory.BlacksmithMain => FullEquipType.CrossPeinHammer,
|
||||
WeaponCategory.BlacksmithOff => FullEquipType.File,
|
||||
WeaponCategory.ArmorerMain => FullEquipType.RaisingHammer,
|
||||
WeaponCategory.ArmorerOff => FullEquipType.Pliers,
|
||||
WeaponCategory.GoldsmithMain => FullEquipType.LapidaryHammer,
|
||||
WeaponCategory.GoldsmithOff => FullEquipType.GrindingWheel,
|
||||
WeaponCategory.LeatherworkerMain => FullEquipType.Knife,
|
||||
WeaponCategory.LeatherworkerOff => FullEquipType.Awl,
|
||||
WeaponCategory.WeaverMain => FullEquipType.Needle,
|
||||
WeaponCategory.WeaverOff => FullEquipType.SpinningWheel,
|
||||
WeaponCategory.AlchemistMain => FullEquipType.Alembic,
|
||||
WeaponCategory.AlchemistOff => FullEquipType.Mortar,
|
||||
WeaponCategory.CulinarianMain => FullEquipType.Frypan,
|
||||
WeaponCategory.CulinarianOff => FullEquipType.CulinaryKnife,
|
||||
WeaponCategory.MinerMain => FullEquipType.Pickaxe,
|
||||
WeaponCategory.MinerOff => FullEquipType.Sledgehammer,
|
||||
WeaponCategory.BotanistMain => FullEquipType.Hatchet,
|
||||
WeaponCategory.BotanistOff => FullEquipType.GardenScythe,
|
||||
WeaponCategory.FisherMain => FullEquipType.FishingRod,
|
||||
WeaponCategory.Rogue => FullEquipType.Gig,
|
||||
WeaponCategory.DarkKnight => FullEquipType.Broadsword,
|
||||
WeaponCategory.Machinist => FullEquipType.Gun,
|
||||
WeaponCategory.Astrologian => FullEquipType.Orrery,
|
||||
WeaponCategory.Samurai => FullEquipType.Katana,
|
||||
WeaponCategory.RedMage => FullEquipType.Rapier,
|
||||
WeaponCategory.Scholar => FullEquipType.Book,
|
||||
WeaponCategory.FisherOff => FullEquipType.Gig,
|
||||
WeaponCategory.BlueMage => FullEquipType.Cane,
|
||||
WeaponCategory.Gunbreaker => FullEquipType.Gunblade,
|
||||
WeaponCategory.Dancer => FullEquipType.Glaives,
|
||||
WeaponCategory.Reaper => FullEquipType.Scythe,
|
||||
WeaponCategory.Sage => FullEquipType.Nouliths,
|
||||
_ => FullEquipType.Unknown,
|
||||
};
|
||||
|
||||
public static FullEquipType Offhand(this FullEquipType type)
|
||||
=> type switch
|
||||
{
|
||||
FullEquipType.Fists => FullEquipType.Fists,
|
||||
FullEquipType.Sword => FullEquipType.Shield,
|
||||
FullEquipType.Wand => FullEquipType.Shield,
|
||||
FullEquipType.Daggers => FullEquipType.Daggers,
|
||||
FullEquipType.Gun => FullEquipType.Gun,
|
||||
FullEquipType.Orrery => FullEquipType.Orrery,
|
||||
FullEquipType.Rapier => FullEquipType.Rapier,
|
||||
FullEquipType.Glaives => FullEquipType.Glaives,
|
||||
_ => FullEquipType.Unknown,
|
||||
};
|
||||
|
||||
public static readonly IReadOnlyList<FullEquipType> WeaponTypes
|
||||
= Enum.GetValues<FullEquipType>().Where(v => v.IsWeapon()).ToArray();
|
||||
|
||||
public static readonly IReadOnlyList<FullEquipType> ToolTypes
|
||||
= Enum.GetValues<FullEquipType>().Where(v => v.IsTool()).ToArray();
|
||||
|
||||
public static readonly IReadOnlyList<FullEquipType> EquipmentTypes
|
||||
= Enum.GetValues<FullEquipType>().Where(v => v.IsEquipment()).ToArray();
|
||||
|
||||
public static readonly IReadOnlyList<FullEquipType> AccessoryTypes
|
||||
= Enum.GetValues<FullEquipType>().Where(v => v.IsAccessory()).ToArray();
|
||||
}
|
||||
|
|
@ -50,160 +50,4 @@ public enum WeaponCategory : byte
|
|||
Dancer = 107,
|
||||
Reaper = 108,
|
||||
Sage = 109,
|
||||
}
|
||||
|
||||
public static class WeaponCategoryExtensions
|
||||
{
|
||||
public static WeaponCategory AllowsOffHand( this WeaponCategory category )
|
||||
=> category switch
|
||||
{
|
||||
WeaponCategory.Pugilist => WeaponCategory.Pugilist,
|
||||
WeaponCategory.Gladiator => WeaponCategory.Shield,
|
||||
WeaponCategory.Marauder => WeaponCategory.Unknown,
|
||||
WeaponCategory.Archer => WeaponCategory.Unknown,
|
||||
WeaponCategory.Lancer => WeaponCategory.Unknown,
|
||||
WeaponCategory.Thaumaturge1 => WeaponCategory.Shield,
|
||||
WeaponCategory.Thaumaturge2 => WeaponCategory.Unknown,
|
||||
WeaponCategory.Conjurer1 => WeaponCategory.Shield,
|
||||
WeaponCategory.Conjurer2 => WeaponCategory.Unknown,
|
||||
WeaponCategory.Arcanist => WeaponCategory.Unknown,
|
||||
WeaponCategory.Shield => WeaponCategory.Unknown,
|
||||
WeaponCategory.CarpenterMain => WeaponCategory.CarpenterOff,
|
||||
WeaponCategory.CarpenterOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.BlacksmithMain => WeaponCategory.BlacksmithOff,
|
||||
WeaponCategory.BlacksmithOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.ArmorerMain => WeaponCategory.ArmorerOff,
|
||||
WeaponCategory.ArmorerOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.GoldsmithMain => WeaponCategory.GoldsmithOff,
|
||||
WeaponCategory.GoldsmithOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.LeatherworkerMain => WeaponCategory.LeatherworkerOff,
|
||||
WeaponCategory.LeatherworkerOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.WeaverMain => WeaponCategory.WeaverOff,
|
||||
WeaponCategory.WeaverOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.AlchemistMain => WeaponCategory.AlchemistOff,
|
||||
WeaponCategory.AlchemistOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.CulinarianMain => WeaponCategory.CulinarianOff,
|
||||
WeaponCategory.CulinarianOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.MinerMain => WeaponCategory.MinerOff,
|
||||
WeaponCategory.MinerOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.BotanistMain => WeaponCategory.BotanistOff,
|
||||
WeaponCategory.BotanistOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.FisherMain => WeaponCategory.FisherOff,
|
||||
WeaponCategory.Rogue => WeaponCategory.Rogue,
|
||||
WeaponCategory.DarkKnight => WeaponCategory.Unknown,
|
||||
WeaponCategory.Machinist => WeaponCategory.Machinist,
|
||||
WeaponCategory.Astrologian => WeaponCategory.Astrologian,
|
||||
WeaponCategory.Samurai => WeaponCategory.Unknown,
|
||||
WeaponCategory.RedMage => WeaponCategory.RedMage,
|
||||
WeaponCategory.Scholar => WeaponCategory.Unknown,
|
||||
WeaponCategory.FisherOff => WeaponCategory.Unknown,
|
||||
WeaponCategory.BlueMage => WeaponCategory.Unknown,
|
||||
WeaponCategory.Gunbreaker => WeaponCategory.Unknown,
|
||||
WeaponCategory.Dancer => WeaponCategory.Dancer,
|
||||
WeaponCategory.Reaper => WeaponCategory.Unknown,
|
||||
WeaponCategory.Sage => WeaponCategory.Unknown,
|
||||
_ => WeaponCategory.Unknown,
|
||||
};
|
||||
|
||||
public static EquipSlot ToSlot( this WeaponCategory category )
|
||||
=> category switch
|
||||
{
|
||||
WeaponCategory.Pugilist => EquipSlot.MainHand,
|
||||
WeaponCategory.Gladiator => EquipSlot.MainHand,
|
||||
WeaponCategory.Marauder => EquipSlot.MainHand,
|
||||
WeaponCategory.Archer => EquipSlot.MainHand,
|
||||
WeaponCategory.Lancer => EquipSlot.MainHand,
|
||||
WeaponCategory.Thaumaturge1 => EquipSlot.MainHand,
|
||||
WeaponCategory.Thaumaturge2 => EquipSlot.MainHand,
|
||||
WeaponCategory.Conjurer1 => EquipSlot.MainHand,
|
||||
WeaponCategory.Conjurer2 => EquipSlot.MainHand,
|
||||
WeaponCategory.Arcanist => EquipSlot.MainHand,
|
||||
WeaponCategory.Shield => EquipSlot.OffHand,
|
||||
WeaponCategory.CarpenterMain => EquipSlot.MainHand,
|
||||
WeaponCategory.CarpenterOff => EquipSlot.OffHand,
|
||||
WeaponCategory.BlacksmithMain => EquipSlot.MainHand,
|
||||
WeaponCategory.BlacksmithOff => EquipSlot.OffHand,
|
||||
WeaponCategory.ArmorerMain => EquipSlot.MainHand,
|
||||
WeaponCategory.ArmorerOff => EquipSlot.OffHand,
|
||||
WeaponCategory.GoldsmithMain => EquipSlot.MainHand,
|
||||
WeaponCategory.GoldsmithOff => EquipSlot.OffHand,
|
||||
WeaponCategory.LeatherworkerMain => EquipSlot.MainHand,
|
||||
WeaponCategory.LeatherworkerOff => EquipSlot.OffHand,
|
||||
WeaponCategory.WeaverMain => EquipSlot.MainHand,
|
||||
WeaponCategory.WeaverOff => EquipSlot.OffHand,
|
||||
WeaponCategory.AlchemistMain => EquipSlot.MainHand,
|
||||
WeaponCategory.AlchemistOff => EquipSlot.OffHand,
|
||||
WeaponCategory.CulinarianMain => EquipSlot.MainHand,
|
||||
WeaponCategory.CulinarianOff => EquipSlot.OffHand,
|
||||
WeaponCategory.MinerMain => EquipSlot.MainHand,
|
||||
WeaponCategory.MinerOff => EquipSlot.OffHand,
|
||||
WeaponCategory.BotanistMain => EquipSlot.MainHand,
|
||||
WeaponCategory.BotanistOff => EquipSlot.OffHand,
|
||||
WeaponCategory.FisherMain => EquipSlot.MainHand,
|
||||
WeaponCategory.Rogue => EquipSlot.MainHand,
|
||||
WeaponCategory.DarkKnight => EquipSlot.MainHand,
|
||||
WeaponCategory.Machinist => EquipSlot.MainHand,
|
||||
WeaponCategory.Astrologian => EquipSlot.MainHand,
|
||||
WeaponCategory.Samurai => EquipSlot.MainHand,
|
||||
WeaponCategory.RedMage => EquipSlot.MainHand,
|
||||
WeaponCategory.Scholar => EquipSlot.MainHand,
|
||||
WeaponCategory.FisherOff => EquipSlot.OffHand,
|
||||
WeaponCategory.BlueMage => EquipSlot.MainHand,
|
||||
WeaponCategory.Gunbreaker => EquipSlot.MainHand,
|
||||
WeaponCategory.Dancer => EquipSlot.MainHand,
|
||||
WeaponCategory.Reaper => EquipSlot.MainHand,
|
||||
WeaponCategory.Sage => EquipSlot.MainHand,
|
||||
_ => EquipSlot.Unknown,
|
||||
};
|
||||
|
||||
public static int ToIndex( this WeaponCategory category )
|
||||
=> category switch
|
||||
{
|
||||
WeaponCategory.Pugilist => 0,
|
||||
WeaponCategory.Gladiator => 1,
|
||||
WeaponCategory.Marauder => 2,
|
||||
WeaponCategory.Archer => 3,
|
||||
WeaponCategory.Lancer => 4,
|
||||
WeaponCategory.Thaumaturge1 => 5,
|
||||
WeaponCategory.Thaumaturge2 => 6,
|
||||
WeaponCategory.Conjurer1 => 7,
|
||||
WeaponCategory.Conjurer2 => 8,
|
||||
WeaponCategory.Arcanist => 9,
|
||||
WeaponCategory.Shield => 10,
|
||||
WeaponCategory.CarpenterMain => 11,
|
||||
WeaponCategory.CarpenterOff => 12,
|
||||
WeaponCategory.BlacksmithMain => 13,
|
||||
WeaponCategory.BlacksmithOff => 14,
|
||||
WeaponCategory.ArmorerMain => 15,
|
||||
WeaponCategory.ArmorerOff => 16,
|
||||
WeaponCategory.GoldsmithMain => 17,
|
||||
WeaponCategory.GoldsmithOff => 18,
|
||||
WeaponCategory.LeatherworkerMain => 19,
|
||||
WeaponCategory.LeatherworkerOff => 20,
|
||||
WeaponCategory.WeaverMain => 21,
|
||||
WeaponCategory.WeaverOff => 22,
|
||||
WeaponCategory.AlchemistMain => 23,
|
||||
WeaponCategory.AlchemistOff => 24,
|
||||
WeaponCategory.CulinarianMain => 25,
|
||||
WeaponCategory.CulinarianOff => 26,
|
||||
WeaponCategory.MinerMain => 27,
|
||||
WeaponCategory.MinerOff => 28,
|
||||
WeaponCategory.BotanistMain => 29,
|
||||
WeaponCategory.BotanistOff => 30,
|
||||
WeaponCategory.FisherMain => 31,
|
||||
WeaponCategory.Rogue => 32,
|
||||
WeaponCategory.DarkKnight => 33,
|
||||
WeaponCategory.Machinist => 34,
|
||||
WeaponCategory.Astrologian => 35,
|
||||
WeaponCategory.Samurai => 36,
|
||||
WeaponCategory.RedMage => 37,
|
||||
WeaponCategory.Scholar => 38,
|
||||
WeaponCategory.FisherOff => 39,
|
||||
WeaponCategory.BlueMage => 40,
|
||||
WeaponCategory.Gunbreaker => 41,
|
||||
WeaponCategory.Dancer => 42,
|
||||
WeaponCategory.Reaper => 43,
|
||||
WeaponCategory.Sage => 44,
|
||||
_ => -1,
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue