private static string RaceCodeName(GenderRace raceCode) { if (raceCode == GenderRace.Unknown) { return("All Races and Genders"); } var(gender, race) = raceCode.Split(); return($"({raceCode.ToRaceCode()}) {race.ToName()} {gender.ToName()} "); }
public ushort this[GenderRace genderRace, ushort setId] { get { var(idx, exists) = FindEntry(genderRace, setId); if (!exists) { return(0); } return(*( ushort * )(Data + EntryDescSize * (Count + 1) + EntrySize * idx)); } set => SetEntry(genderRace, setId, value);
public ExpandedEqdpFile(GenderRace raceCode, bool accessory) : base(CharacterUtility.EqdpIdx(raceCode, accessory)) { var def = ( byte * )DefaultData.Data; var blockSize = *( ushort * )(def + IdentifierSize); var totalBlockCount = *( ushort * )(def + IdentifierSize + 2); var totalBlockSize = blockSize * EqdpEntrySize; DataOffset = IdentifierSize + PreambleSize + totalBlockCount * BlockHeaderSize; var fullLength = DataOffset + totalBlockCount * totalBlockSize; fullLength += (FileAlignment - (fullLength & (FileAlignment - 1))) & (FileAlignment - 1); AllocateData(fullLength); Reset(); }
private static void DrawRaceCodeCombo(Vector2 buttonSize) { ImGui.SetNextItemWidth(buttonSize.X); using var combo = ImRaii.Combo("##RaceCode", RaceCodeName(_raceCode)); if (!combo) { return; } foreach (var raceCode in Enum.GetValues <GenderRace>()) { if (ImGui.Selectable(RaceCodeName(raceCode), _raceCode == raceCode)) { _raceCode = raceCode; } } }
public static (Gender, Race) Split(this GenderRace value) { return(value switch { GenderRace.MidlanderMale => (Gender.Male, Race.Midlander), GenderRace.MidlanderMaleNpc => (Gender.MaleNpc, Race.Midlander), GenderRace.MidlanderFemale => (Gender.Female, Race.Midlander), GenderRace.MidlanderFemaleNpc => (Gender.FemaleNpc, Race.Midlander), GenderRace.HighlanderMale => (Gender.Male, Race.Highlander), GenderRace.HighlanderMaleNpc => (Gender.MaleNpc, Race.Highlander), GenderRace.HighlanderFemale => (Gender.Female, Race.Highlander), GenderRace.HighlanderFemaleNpc => (Gender.FemaleNpc, Race.Highlander), GenderRace.ElezenMale => (Gender.Male, Race.Elezen), GenderRace.ElezenMaleNpc => (Gender.MaleNpc, Race.Elezen), GenderRace.ElezenFemale => (Gender.Female, Race.Elezen), GenderRace.ElezenFemaleNpc => (Gender.FemaleNpc, Race.Elezen), GenderRace.LalafellMale => (Gender.Male, Race.Lalafell), GenderRace.LalafellMaleNpc => (Gender.MaleNpc, Race.Lalafell), GenderRace.LalafellFemale => (Gender.Female, Race.Lalafell), GenderRace.LalafellFemaleNpc => (Gender.FemaleNpc, Race.Lalafell), GenderRace.MiqoteMale => (Gender.Male, Race.Miqote), GenderRace.MiqoteMaleNpc => (Gender.MaleNpc, Race.Miqote), GenderRace.MiqoteFemale => (Gender.Female, Race.Miqote), GenderRace.MiqoteFemaleNpc => (Gender.FemaleNpc, Race.Miqote), GenderRace.RoegadynMale => (Gender.Male, Race.Roegadyn), GenderRace.RoegadynMaleNpc => (Gender.MaleNpc, Race.Roegadyn), GenderRace.RoegadynFemale => (Gender.Female, Race.Roegadyn), GenderRace.RoegadynFemaleNpc => (Gender.FemaleNpc, Race.Roegadyn), GenderRace.AuRaMale => (Gender.Male, Race.AuRa), GenderRace.AuRaMaleNpc => (Gender.MaleNpc, Race.AuRa), GenderRace.AuRaFemale => (Gender.Female, Race.AuRa), GenderRace.AuRaFemaleNpc => (Gender.FemaleNpc, Race.AuRa), GenderRace.HrothgarMale => (Gender.Male, Race.Hrothgar), GenderRace.HrothgarMaleNpc => (Gender.MaleNpc, Race.Hrothgar), GenderRace.VieraFemale => (Gender.Female, Race.Viera), GenderRace.VieraFemaleNpc => (Gender.FemaleNpc, Race.Viera), GenderRace.UnknownMaleNpc => (Gender.MaleNpc, Race.Unknown), GenderRace.UnknownFemaleNpc => (Gender.FemaleNpc, Race.Unknown), _ => throw new InvalidEnumArgumentException() });
public static int EqdpIdx(GenderRace raceCode, bool accessory) => (accessory ? NumEqdpFiles / 2 : 0) + (int)raceCode switch
public static byte ToByte(this GenderRace value) { var(gender, race) = value.Split(); return(gender.ToByte(race)); }
public Info(GenderRace gr, ushort setId) { GenderRace = gr; SetId = setId; }
public static GameObjectInfo Customization(FileType type, CustomizationType customizationType, ushort id = 0 , GenderRace gr = GenderRace.Unknown, BodySlot bodySlot = BodySlot.Unknown, byte variant = 0) => new()
public static GameObjectInfo Equipment(FileType type, ushort setId, GenderRace gr = GenderRace.Unknown , EquipSlot slot = EquipSlot.Unknown, byte variant = 0) => new()
public static EqdpEntry GetDefault(GenderRace raceCode, bool accessory, int setIdx) => GetDefault(CharacterUtility.EqdpIdx(raceCode, accessory), setIdx);
public ExpandedEqdpFile?File(GenderRace race, bool accessory) => Files[Array.IndexOf(CharacterUtility.EqdpIndices, CharacterUtility.EqdpIdx(race, accessory))]; // TODO: female Hrothgar