Exemple #1
0
        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()} ");
        }
Exemple #2
0
    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);
Exemple #3
0
    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();
    }
Exemple #4
0
        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;
                }
            }
        }
Exemple #5
0
 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()
     });
Exemple #6
0
 public static int EqdpIdx(GenderRace raceCode, bool accessory)
 => (accessory ? NumEqdpFiles / 2 : 0)
 + (int)raceCode switch
Exemple #7
0
 public static byte ToByte(this GenderRace value)
 {
     var(gender, race) = value.Split();
     return(gender.ToByte(race));
 }
Exemple #8
0
 public Info(GenderRace gr, ushort setId)
 {
     GenderRace = gr;
     SetId      = setId;
 }
Exemple #9
0
 public static GameObjectInfo Customization(FileType type, CustomizationType customizationType, ushort id = 0
                                            , GenderRace gr = GenderRace.Unknown, BodySlot bodySlot = BodySlot.Unknown, byte variant = 0)
 => new()
Exemple #10
0
 public static GameObjectInfo Equipment(FileType type, ushort setId, GenderRace gr = GenderRace.Unknown
                                        , EquipSlot slot = EquipSlot.Unknown, byte variant = 0)
 => new()
Exemple #11
0
 public static EqdpEntry GetDefault(GenderRace raceCode, bool accessory, int setIdx)
 => GetDefault(CharacterUtility.EqdpIdx(raceCode, accessory), setIdx);
Exemple #12
0
 public ExpandedEqdpFile?File(GenderRace race, bool accessory)
 => Files[Array.IndexOf(CharacterUtility.EqdpIndices, CharacterUtility.EqdpIdx(race, accessory))];           // TODO: female Hrothgar