mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-15 05:04:15 +01:00
Add some improvements to game path stuff, move the race inheritance tree to game data, etc.
This commit is contained in:
parent
b50ed4b99a
commit
f1b495dff4
8 changed files with 607 additions and 320 deletions
|
|
@ -1,6 +1,8 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using static Penumbra.GameData.Enums.GenderRace;
|
||||
|
||||
namespace Penumbra.GameData.Enums;
|
||||
|
||||
|
|
@ -107,7 +109,7 @@ public enum GenderRace : ushort
|
|||
|
||||
public static class RaceEnumExtensions
|
||||
{
|
||||
public static Race ToRace( this ModelRace race )
|
||||
public static Race ToRace(this ModelRace race)
|
||||
{
|
||||
return race switch
|
||||
{
|
||||
|
|
@ -121,11 +123,11 @@ public static class RaceEnumExtensions
|
|||
ModelRace.AuRa => Race.AuRa,
|
||||
ModelRace.Hrothgar => Race.Hrothgar,
|
||||
ModelRace.Viera => Race.Viera,
|
||||
_ => throw new ArgumentOutOfRangeException( nameof( race ), race, null ),
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(race), race, null),
|
||||
};
|
||||
}
|
||||
|
||||
public static Race ToRace( this SubRace subRace )
|
||||
public static Race ToRace(this SubRace subRace)
|
||||
{
|
||||
return subRace switch
|
||||
{
|
||||
|
|
@ -146,11 +148,11 @@ public static class RaceEnumExtensions
|
|||
SubRace.Lost => Race.Hrothgar,
|
||||
SubRace.Rava => Race.Viera,
|
||||
SubRace.Veena => Race.Viera,
|
||||
_ => throw new ArgumentOutOfRangeException( nameof( subRace ), subRace, null ),
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(subRace), subRace, null),
|
||||
};
|
||||
}
|
||||
|
||||
public static string ToName( this ModelRace modelRace )
|
||||
public static string ToName(this ModelRace modelRace)
|
||||
{
|
||||
return modelRace switch
|
||||
{
|
||||
|
|
@ -167,7 +169,7 @@ public static class RaceEnumExtensions
|
|||
};
|
||||
}
|
||||
|
||||
public static string ToName( this Race race )
|
||||
public static string ToName(this Race race)
|
||||
{
|
||||
return race switch
|
||||
{
|
||||
|
|
@ -183,7 +185,7 @@ public static class RaceEnumExtensions
|
|||
};
|
||||
}
|
||||
|
||||
public static string ToName( this Gender gender )
|
||||
public static string ToName(this Gender gender)
|
||||
{
|
||||
return gender switch
|
||||
{
|
||||
|
|
@ -195,7 +197,7 @@ public static class RaceEnumExtensions
|
|||
};
|
||||
}
|
||||
|
||||
public static string ToName( this SubRace subRace )
|
||||
public static string ToName(this SubRace subRace)
|
||||
{
|
||||
return subRace switch
|
||||
{
|
||||
|
|
@ -219,230 +221,280 @@ public static class RaceEnumExtensions
|
|||
};
|
||||
}
|
||||
|
||||
public static bool FitsRace( this SubRace subRace, Race race )
|
||||
public static bool FitsRace(this SubRace subRace, Race race)
|
||||
=> subRace.ToRace() == race;
|
||||
|
||||
public static byte ToByte( this Gender gender, ModelRace modelRace )
|
||||
=> ( byte )( ( int )gender | ( ( int )modelRace << 3 ) );
|
||||
public static byte ToByte(this Gender gender, ModelRace modelRace)
|
||||
=> (byte)((int)gender | ((int)modelRace << 3));
|
||||
|
||||
public static byte ToByte( this ModelRace modelRace, Gender gender )
|
||||
=> gender.ToByte( modelRace );
|
||||
public static byte ToByte(this ModelRace modelRace, Gender gender)
|
||||
=> gender.ToByte(modelRace);
|
||||
|
||||
public static byte ToByte( this GenderRace value )
|
||||
public static byte ToByte(this GenderRace value)
|
||||
{
|
||||
var (gender, race) = value.Split();
|
||||
return gender.ToByte( race );
|
||||
return gender.ToByte(race);
|
||||
}
|
||||
|
||||
public static (Gender, ModelRace) Split( this GenderRace value )
|
||||
public static (Gender, ModelRace) Split(this GenderRace value)
|
||||
{
|
||||
return value switch
|
||||
{
|
||||
GenderRace.Unknown => ( Gender.Unknown, ModelRace.Unknown ),
|
||||
GenderRace.MidlanderMale => ( Gender.Male, ModelRace.Midlander ),
|
||||
GenderRace.MidlanderMaleNpc => ( Gender.MaleNpc, ModelRace.Midlander ),
|
||||
GenderRace.MidlanderFemale => ( Gender.Female, ModelRace.Midlander ),
|
||||
GenderRace.MidlanderFemaleNpc => ( Gender.FemaleNpc, ModelRace.Midlander ),
|
||||
GenderRace.HighlanderMale => ( Gender.Male, ModelRace.Highlander ),
|
||||
GenderRace.HighlanderMaleNpc => ( Gender.MaleNpc, ModelRace.Highlander ),
|
||||
GenderRace.HighlanderFemale => ( Gender.Female, ModelRace.Highlander ),
|
||||
GenderRace.HighlanderFemaleNpc => ( Gender.FemaleNpc, ModelRace.Highlander ),
|
||||
GenderRace.ElezenMale => ( Gender.Male, ModelRace.Elezen ),
|
||||
GenderRace.ElezenMaleNpc => ( Gender.MaleNpc, ModelRace.Elezen ),
|
||||
GenderRace.ElezenFemale => ( Gender.Female, ModelRace.Elezen ),
|
||||
GenderRace.ElezenFemaleNpc => ( Gender.FemaleNpc, ModelRace.Elezen ),
|
||||
GenderRace.LalafellMale => ( Gender.Male, ModelRace.Lalafell ),
|
||||
GenderRace.LalafellMaleNpc => ( Gender.MaleNpc, ModelRace.Lalafell ),
|
||||
GenderRace.LalafellFemale => ( Gender.Female, ModelRace.Lalafell ),
|
||||
GenderRace.LalafellFemaleNpc => ( Gender.FemaleNpc, ModelRace.Lalafell ),
|
||||
GenderRace.MiqoteMale => ( Gender.Male, ModelRace.Miqote ),
|
||||
GenderRace.MiqoteMaleNpc => ( Gender.MaleNpc, ModelRace.Miqote ),
|
||||
GenderRace.MiqoteFemale => ( Gender.Female, ModelRace.Miqote ),
|
||||
GenderRace.MiqoteFemaleNpc => ( Gender.FemaleNpc, ModelRace.Miqote ),
|
||||
GenderRace.RoegadynMale => ( Gender.Male, ModelRace.Roegadyn ),
|
||||
GenderRace.RoegadynMaleNpc => ( Gender.MaleNpc, ModelRace.Roegadyn ),
|
||||
GenderRace.RoegadynFemale => ( Gender.Female, ModelRace.Roegadyn ),
|
||||
GenderRace.RoegadynFemaleNpc => ( Gender.FemaleNpc, ModelRace.Roegadyn ),
|
||||
GenderRace.AuRaMale => ( Gender.Male, ModelRace.AuRa ),
|
||||
GenderRace.AuRaMaleNpc => ( Gender.MaleNpc, ModelRace.AuRa ),
|
||||
GenderRace.AuRaFemale => ( Gender.Female, ModelRace.AuRa ),
|
||||
GenderRace.AuRaFemaleNpc => ( Gender.FemaleNpc, ModelRace.AuRa ),
|
||||
GenderRace.HrothgarMale => ( Gender.Male, ModelRace.Hrothgar ),
|
||||
GenderRace.HrothgarMaleNpc => ( Gender.MaleNpc, ModelRace.Hrothgar ),
|
||||
GenderRace.HrothgarFemale => ( Gender.Female, ModelRace.Hrothgar ),
|
||||
GenderRace.HrothgarFemaleNpc => ( Gender.FemaleNpc, ModelRace.Hrothgar ),
|
||||
GenderRace.VieraMale => ( Gender.Male, ModelRace.Viera ),
|
||||
GenderRace.VieraMaleNpc => ( Gender.Male, ModelRace.Viera ),
|
||||
GenderRace.VieraFemale => ( Gender.Female, ModelRace.Viera ),
|
||||
GenderRace.VieraFemaleNpc => ( Gender.FemaleNpc, ModelRace.Viera ),
|
||||
GenderRace.UnknownMaleNpc => ( Gender.MaleNpc, ModelRace.Unknown ),
|
||||
GenderRace.UnknownFemaleNpc => ( Gender.FemaleNpc, ModelRace.Unknown ),
|
||||
_ => throw new InvalidEnumArgumentException(),
|
||||
Unknown => (Gender.Unknown, ModelRace.Unknown),
|
||||
MidlanderMale => (Gender.Male, ModelRace.Midlander),
|
||||
MidlanderMaleNpc => (Gender.MaleNpc, ModelRace.Midlander),
|
||||
MidlanderFemale => (Gender.Female, ModelRace.Midlander),
|
||||
MidlanderFemaleNpc => (Gender.FemaleNpc, ModelRace.Midlander),
|
||||
HighlanderMale => (Gender.Male, ModelRace.Highlander),
|
||||
HighlanderMaleNpc => (Gender.MaleNpc, ModelRace.Highlander),
|
||||
HighlanderFemale => (Gender.Female, ModelRace.Highlander),
|
||||
HighlanderFemaleNpc => (Gender.FemaleNpc, ModelRace.Highlander),
|
||||
ElezenMale => (Gender.Male, ModelRace.Elezen),
|
||||
ElezenMaleNpc => (Gender.MaleNpc, ModelRace.Elezen),
|
||||
ElezenFemale => (Gender.Female, ModelRace.Elezen),
|
||||
ElezenFemaleNpc => (Gender.FemaleNpc, ModelRace.Elezen),
|
||||
LalafellMale => (Gender.Male, ModelRace.Lalafell),
|
||||
LalafellMaleNpc => (Gender.MaleNpc, ModelRace.Lalafell),
|
||||
LalafellFemale => (Gender.Female, ModelRace.Lalafell),
|
||||
LalafellFemaleNpc => (Gender.FemaleNpc, ModelRace.Lalafell),
|
||||
MiqoteMale => (Gender.Male, ModelRace.Miqote),
|
||||
MiqoteMaleNpc => (Gender.MaleNpc, ModelRace.Miqote),
|
||||
MiqoteFemale => (Gender.Female, ModelRace.Miqote),
|
||||
MiqoteFemaleNpc => (Gender.FemaleNpc, ModelRace.Miqote),
|
||||
RoegadynMale => (Gender.Male, ModelRace.Roegadyn),
|
||||
RoegadynMaleNpc => (Gender.MaleNpc, ModelRace.Roegadyn),
|
||||
RoegadynFemale => (Gender.Female, ModelRace.Roegadyn),
|
||||
RoegadynFemaleNpc => (Gender.FemaleNpc, ModelRace.Roegadyn),
|
||||
AuRaMale => (Gender.Male, ModelRace.AuRa),
|
||||
AuRaMaleNpc => (Gender.MaleNpc, ModelRace.AuRa),
|
||||
AuRaFemale => (Gender.Female, ModelRace.AuRa),
|
||||
AuRaFemaleNpc => (Gender.FemaleNpc, ModelRace.AuRa),
|
||||
HrothgarMale => (Gender.Male, ModelRace.Hrothgar),
|
||||
HrothgarMaleNpc => (Gender.MaleNpc, ModelRace.Hrothgar),
|
||||
HrothgarFemale => (Gender.Female, ModelRace.Hrothgar),
|
||||
HrothgarFemaleNpc => (Gender.FemaleNpc, ModelRace.Hrothgar),
|
||||
VieraMale => (Gender.Male, ModelRace.Viera),
|
||||
VieraMaleNpc => (Gender.Male, ModelRace.Viera),
|
||||
VieraFemale => (Gender.Female, ModelRace.Viera),
|
||||
VieraFemaleNpc => (Gender.FemaleNpc, ModelRace.Viera),
|
||||
UnknownMaleNpc => (Gender.MaleNpc, ModelRace.Unknown),
|
||||
UnknownFemaleNpc => (Gender.FemaleNpc, ModelRace.Unknown),
|
||||
_ => throw new InvalidEnumArgumentException(),
|
||||
};
|
||||
}
|
||||
|
||||
public static bool IsValid( this GenderRace value )
|
||||
=> value != GenderRace.Unknown && Enum.IsDefined( typeof( GenderRace ), value );
|
||||
public static bool IsValid(this GenderRace value)
|
||||
=> value != Unknown && Enum.IsDefined(typeof(GenderRace), value);
|
||||
|
||||
public static string ToRaceCode( this GenderRace value )
|
||||
public static string ToRaceCode(this GenderRace value)
|
||||
{
|
||||
return value switch
|
||||
{
|
||||
GenderRace.MidlanderMale => "0101",
|
||||
GenderRace.MidlanderMaleNpc => "0104",
|
||||
GenderRace.MidlanderFemale => "0201",
|
||||
GenderRace.MidlanderFemaleNpc => "0204",
|
||||
GenderRace.HighlanderMale => "0301",
|
||||
GenderRace.HighlanderMaleNpc => "0304",
|
||||
GenderRace.HighlanderFemale => "0401",
|
||||
GenderRace.HighlanderFemaleNpc => "0404",
|
||||
GenderRace.ElezenMale => "0501",
|
||||
GenderRace.ElezenMaleNpc => "0504",
|
||||
GenderRace.ElezenFemale => "0601",
|
||||
GenderRace.ElezenFemaleNpc => "0604",
|
||||
GenderRace.MiqoteMale => "0701",
|
||||
GenderRace.MiqoteMaleNpc => "0704",
|
||||
GenderRace.MiqoteFemale => "0801",
|
||||
GenderRace.MiqoteFemaleNpc => "0804",
|
||||
GenderRace.RoegadynMale => "0901",
|
||||
GenderRace.RoegadynMaleNpc => "0904",
|
||||
GenderRace.RoegadynFemale => "1001",
|
||||
GenderRace.RoegadynFemaleNpc => "1004",
|
||||
GenderRace.LalafellMale => "1101",
|
||||
GenderRace.LalafellMaleNpc => "1104",
|
||||
GenderRace.LalafellFemale => "1201",
|
||||
GenderRace.LalafellFemaleNpc => "1204",
|
||||
GenderRace.AuRaMale => "1301",
|
||||
GenderRace.AuRaMaleNpc => "1304",
|
||||
GenderRace.AuRaFemale => "1401",
|
||||
GenderRace.AuRaFemaleNpc => "1404",
|
||||
GenderRace.HrothgarMale => "1501",
|
||||
GenderRace.HrothgarMaleNpc => "1504",
|
||||
GenderRace.HrothgarFemale => "1601",
|
||||
GenderRace.HrothgarFemaleNpc => "1604",
|
||||
GenderRace.VieraMale => "1701",
|
||||
GenderRace.VieraMaleNpc => "1704",
|
||||
GenderRace.VieraFemale => "1801",
|
||||
GenderRace.VieraFemaleNpc => "1804",
|
||||
GenderRace.UnknownMaleNpc => "9104",
|
||||
GenderRace.UnknownFemaleNpc => "9204",
|
||||
_ => throw new InvalidEnumArgumentException(),
|
||||
MidlanderMale => "0101",
|
||||
MidlanderMaleNpc => "0104",
|
||||
MidlanderFemale => "0201",
|
||||
MidlanderFemaleNpc => "0204",
|
||||
HighlanderMale => "0301",
|
||||
HighlanderMaleNpc => "0304",
|
||||
HighlanderFemale => "0401",
|
||||
HighlanderFemaleNpc => "0404",
|
||||
ElezenMale => "0501",
|
||||
ElezenMaleNpc => "0504",
|
||||
ElezenFemale => "0601",
|
||||
ElezenFemaleNpc => "0604",
|
||||
MiqoteMale => "0701",
|
||||
MiqoteMaleNpc => "0704",
|
||||
MiqoteFemale => "0801",
|
||||
MiqoteFemaleNpc => "0804",
|
||||
RoegadynMale => "0901",
|
||||
RoegadynMaleNpc => "0904",
|
||||
RoegadynFemale => "1001",
|
||||
RoegadynFemaleNpc => "1004",
|
||||
LalafellMale => "1101",
|
||||
LalafellMaleNpc => "1104",
|
||||
LalafellFemale => "1201",
|
||||
LalafellFemaleNpc => "1204",
|
||||
AuRaMale => "1301",
|
||||
AuRaMaleNpc => "1304",
|
||||
AuRaFemale => "1401",
|
||||
AuRaFemaleNpc => "1404",
|
||||
HrothgarMale => "1501",
|
||||
HrothgarMaleNpc => "1504",
|
||||
HrothgarFemale => "1601",
|
||||
HrothgarFemaleNpc => "1604",
|
||||
VieraMale => "1701",
|
||||
VieraMaleNpc => "1704",
|
||||
VieraFemale => "1801",
|
||||
VieraFemaleNpc => "1804",
|
||||
UnknownMaleNpc => "9104",
|
||||
UnknownFemaleNpc => "9204",
|
||||
_ => throw new InvalidEnumArgumentException(),
|
||||
};
|
||||
}
|
||||
|
||||
public static GenderRace[] Dependencies(this GenderRace raceCode)
|
||||
=> DependencyList.TryGetValue(raceCode, out var dep) ? dep : Array.Empty<GenderRace>();
|
||||
|
||||
public static IEnumerable<GenderRace> OnlyDependencies(this GenderRace raceCode)
|
||||
=> DependencyList.TryGetValue(raceCode, out var dep) ? dep.Skip(1) : Array.Empty<GenderRace>();
|
||||
|
||||
private static readonly Dictionary<GenderRace, GenderRace[]> DependencyList = new()
|
||||
{
|
||||
// @formatter:off
|
||||
[MidlanderMale] = new[]{ MidlanderMale },
|
||||
[HighlanderMale] = new[]{ HighlanderMale, MidlanderMale },
|
||||
[ElezenMale] = new[]{ ElezenMale, MidlanderMale },
|
||||
[MiqoteMale] = new[]{ MiqoteMale, MidlanderMale },
|
||||
[RoegadynMale] = new[]{ RoegadynMale, MidlanderMale },
|
||||
[LalafellMale] = new[]{ LalafellMale, MidlanderMale },
|
||||
[AuRaMale] = new[]{ AuRaMale, MidlanderMale },
|
||||
[HrothgarMale] = new[]{ HrothgarMale, RoegadynMale, MidlanderMale },
|
||||
[VieraMale] = new[]{ VieraMale, MidlanderMale },
|
||||
[MidlanderFemale] = new[]{ MidlanderFemale, MidlanderMale },
|
||||
[HighlanderFemale] = new[]{ HighlanderFemale, MidlanderFemale, MidlanderMale },
|
||||
[ElezenFemale] = new[]{ ElezenFemale, MidlanderFemale, MidlanderMale },
|
||||
[MiqoteFemale] = new[]{ MiqoteFemale, MidlanderFemale, MidlanderMale },
|
||||
[RoegadynFemale] = new[]{ RoegadynFemale, MidlanderFemale, MidlanderMale },
|
||||
[LalafellFemale] = new[]{ LalafellFemale, LalafellMale, MidlanderMale },
|
||||
[AuRaFemale] = new[]{ AuRaFemale, MidlanderFemale, MidlanderMale },
|
||||
[HrothgarFemale] = new[]{ HrothgarFemale, RoegadynFemale, MidlanderFemale, MidlanderMale },
|
||||
[VieraFemale] = new[]{ VieraFemale, MidlanderFemale, MidlanderMale },
|
||||
[MidlanderMaleNpc] = new[]{ MidlanderMaleNpc, MidlanderMale },
|
||||
[HighlanderMaleNpc] = new[]{ HighlanderMaleNpc, HighlanderMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[ElezenMaleNpc] = new[]{ ElezenMaleNpc, ElezenMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[MiqoteMaleNpc] = new[]{ MiqoteMaleNpc, MiqoteMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[RoegadynMaleNpc] = new[]{ RoegadynMaleNpc, RoegadynMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[LalafellMaleNpc] = new[]{ LalafellMaleNpc, LalafellMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[AuRaMaleNpc] = new[]{ AuRaMaleNpc, AuRaMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[HrothgarMaleNpc] = new[]{ HrothgarMaleNpc, HrothgarMale, RoegadynMaleNpc, RoegadynMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[VieraMaleNpc] = new[]{ VieraMaleNpc, VieraMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[MidlanderFemaleNpc] = new[]{ MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
[HighlanderFemaleNpc] = new[]{ HighlanderFemaleNpc, HighlanderFemale, MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
[ElezenFemaleNpc] = new[]{ ElezenFemaleNpc, ElezenFemale, MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
[MiqoteFemaleNpc] = new[]{ MiqoteFemaleNpc, MiqoteFemale, MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
[RoegadynFemaleNpc] = new[]{ RoegadynFemaleNpc, RoegadynFemale, MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
[LalafellFemaleNpc] = new[]{ LalafellFemaleNpc, LalafellFemale, LalafellMaleNpc, LalafellMale, MidlanderMaleNpc, MidlanderMale },
|
||||
[AuRaFemaleNpc] = new[]{ AuRaFemaleNpc, AuRaFemale, MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
[HrothgarFemaleNpc] = new[]{ HrothgarFemaleNpc, HrothgarFemale, RoegadynFemaleNpc, RoegadynFemale, MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
[VieraFemaleNpc] = new[]{ VieraFemaleNpc, VieraFemale, MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
[UnknownMaleNpc] = new[]{ UnknownMaleNpc, MidlanderMaleNpc, MidlanderMale },
|
||||
[UnknownFemaleNpc] = new[]{ UnknownFemaleNpc, MidlanderFemaleNpc, MidlanderFemale, MidlanderMaleNpc, MidlanderMale },
|
||||
// @formatter:on
|
||||
};
|
||||
}
|
||||
|
||||
public static partial class Names
|
||||
{
|
||||
public static GenderRace GenderRaceFromCode( string code )
|
||||
public static GenderRace GenderRaceFromCode(string code)
|
||||
{
|
||||
return code switch
|
||||
{
|
||||
"0101" => GenderRace.MidlanderMale,
|
||||
"0104" => GenderRace.MidlanderMaleNpc,
|
||||
"0201" => GenderRace.MidlanderFemale,
|
||||
"0204" => GenderRace.MidlanderFemaleNpc,
|
||||
"0301" => GenderRace.HighlanderMale,
|
||||
"0304" => GenderRace.HighlanderMaleNpc,
|
||||
"0401" => GenderRace.HighlanderFemale,
|
||||
"0404" => GenderRace.HighlanderFemaleNpc,
|
||||
"0501" => GenderRace.ElezenMale,
|
||||
"0504" => GenderRace.ElezenMaleNpc,
|
||||
"0601" => GenderRace.ElezenFemale,
|
||||
"0604" => GenderRace.ElezenFemaleNpc,
|
||||
"0701" => GenderRace.MiqoteMale,
|
||||
"0704" => GenderRace.MiqoteMaleNpc,
|
||||
"0801" => GenderRace.MiqoteFemale,
|
||||
"0804" => GenderRace.MiqoteFemaleNpc,
|
||||
"0901" => GenderRace.RoegadynMale,
|
||||
"0904" => GenderRace.RoegadynMaleNpc,
|
||||
"1001" => GenderRace.RoegadynFemale,
|
||||
"1004" => GenderRace.RoegadynFemaleNpc,
|
||||
"1101" => GenderRace.LalafellMale,
|
||||
"1104" => GenderRace.LalafellMaleNpc,
|
||||
"1201" => GenderRace.LalafellFemale,
|
||||
"1204" => GenderRace.LalafellFemaleNpc,
|
||||
"1301" => GenderRace.AuRaMale,
|
||||
"1304" => GenderRace.AuRaMaleNpc,
|
||||
"1401" => GenderRace.AuRaFemale,
|
||||
"1404" => GenderRace.AuRaFemaleNpc,
|
||||
"1501" => GenderRace.HrothgarMale,
|
||||
"1504" => GenderRace.HrothgarMaleNpc,
|
||||
"1601" => GenderRace.HrothgarFemale,
|
||||
"1604" => GenderRace.HrothgarFemaleNpc,
|
||||
"1701" => GenderRace.VieraMale,
|
||||
"1704" => GenderRace.VieraMaleNpc,
|
||||
"1801" => GenderRace.VieraFemale,
|
||||
"1804" => GenderRace.VieraFemaleNpc,
|
||||
"9104" => GenderRace.UnknownMaleNpc,
|
||||
"9204" => GenderRace.UnknownFemaleNpc,
|
||||
"0101" => MidlanderMale,
|
||||
"0104" => MidlanderMaleNpc,
|
||||
"0201" => MidlanderFemale,
|
||||
"0204" => MidlanderFemaleNpc,
|
||||
"0301" => HighlanderMale,
|
||||
"0304" => HighlanderMaleNpc,
|
||||
"0401" => HighlanderFemale,
|
||||
"0404" => HighlanderFemaleNpc,
|
||||
"0501" => ElezenMale,
|
||||
"0504" => ElezenMaleNpc,
|
||||
"0601" => ElezenFemale,
|
||||
"0604" => ElezenFemaleNpc,
|
||||
"0701" => MiqoteMale,
|
||||
"0704" => MiqoteMaleNpc,
|
||||
"0801" => MiqoteFemale,
|
||||
"0804" => MiqoteFemaleNpc,
|
||||
"0901" => RoegadynMale,
|
||||
"0904" => RoegadynMaleNpc,
|
||||
"1001" => RoegadynFemale,
|
||||
"1004" => RoegadynFemaleNpc,
|
||||
"1101" => LalafellMale,
|
||||
"1104" => LalafellMaleNpc,
|
||||
"1201" => LalafellFemale,
|
||||
"1204" => LalafellFemaleNpc,
|
||||
"1301" => AuRaMale,
|
||||
"1304" => AuRaMaleNpc,
|
||||
"1401" => AuRaFemale,
|
||||
"1404" => AuRaFemaleNpc,
|
||||
"1501" => HrothgarMale,
|
||||
"1504" => HrothgarMaleNpc,
|
||||
"1601" => HrothgarFemale,
|
||||
"1604" => HrothgarFemaleNpc,
|
||||
"1701" => VieraMale,
|
||||
"1704" => VieraMaleNpc,
|
||||
"1801" => VieraFemale,
|
||||
"1804" => VieraFemaleNpc,
|
||||
"9104" => UnknownMaleNpc,
|
||||
"9204" => UnknownFemaleNpc,
|
||||
_ => throw new KeyNotFoundException(),
|
||||
};
|
||||
}
|
||||
|
||||
public static GenderRace GenderRaceFromByte( byte value )
|
||||
public static GenderRace GenderRaceFromByte(byte value)
|
||||
{
|
||||
var gender = ( Gender )( value & 0b111 );
|
||||
var race = ( ModelRace )( value >> 3 );
|
||||
return CombinedRace( gender, race );
|
||||
var gender = (Gender)(value & 0b111);
|
||||
var race = (ModelRace)(value >> 3);
|
||||
return CombinedRace(gender, race);
|
||||
}
|
||||
|
||||
public static GenderRace CombinedRace( Gender gender, ModelRace modelRace )
|
||||
public static GenderRace CombinedRace(Gender gender, ModelRace modelRace)
|
||||
{
|
||||
return gender switch
|
||||
{
|
||||
Gender.Male => modelRace switch
|
||||
{
|
||||
ModelRace.Midlander => GenderRace.MidlanderMale,
|
||||
ModelRace.Highlander => GenderRace.HighlanderMale,
|
||||
ModelRace.Elezen => GenderRace.ElezenMale,
|
||||
ModelRace.Lalafell => GenderRace.LalafellMale,
|
||||
ModelRace.Miqote => GenderRace.MiqoteMale,
|
||||
ModelRace.Roegadyn => GenderRace.RoegadynMale,
|
||||
ModelRace.AuRa => GenderRace.AuRaMale,
|
||||
ModelRace.Hrothgar => GenderRace.HrothgarMale,
|
||||
ModelRace.Viera => GenderRace.VieraMale,
|
||||
_ => GenderRace.Unknown,
|
||||
ModelRace.Midlander => MidlanderMale,
|
||||
ModelRace.Highlander => HighlanderMale,
|
||||
ModelRace.Elezen => ElezenMale,
|
||||
ModelRace.Lalafell => LalafellMale,
|
||||
ModelRace.Miqote => MiqoteMale,
|
||||
ModelRace.Roegadyn => RoegadynMale,
|
||||
ModelRace.AuRa => AuRaMale,
|
||||
ModelRace.Hrothgar => HrothgarMale,
|
||||
ModelRace.Viera => VieraMale,
|
||||
_ => Unknown,
|
||||
},
|
||||
Gender.MaleNpc => modelRace switch
|
||||
{
|
||||
ModelRace.Midlander => GenderRace.MidlanderMaleNpc,
|
||||
ModelRace.Highlander => GenderRace.HighlanderMaleNpc,
|
||||
ModelRace.Elezen => GenderRace.ElezenMaleNpc,
|
||||
ModelRace.Lalafell => GenderRace.LalafellMaleNpc,
|
||||
ModelRace.Miqote => GenderRace.MiqoteMaleNpc,
|
||||
ModelRace.Roegadyn => GenderRace.RoegadynMaleNpc,
|
||||
ModelRace.AuRa => GenderRace.AuRaMaleNpc,
|
||||
ModelRace.Hrothgar => GenderRace.HrothgarMaleNpc,
|
||||
ModelRace.Viera => GenderRace.VieraMaleNpc,
|
||||
_ => GenderRace.Unknown,
|
||||
ModelRace.Midlander => MidlanderMaleNpc,
|
||||
ModelRace.Highlander => HighlanderMaleNpc,
|
||||
ModelRace.Elezen => ElezenMaleNpc,
|
||||
ModelRace.Lalafell => LalafellMaleNpc,
|
||||
ModelRace.Miqote => MiqoteMaleNpc,
|
||||
ModelRace.Roegadyn => RoegadynMaleNpc,
|
||||
ModelRace.AuRa => AuRaMaleNpc,
|
||||
ModelRace.Hrothgar => HrothgarMaleNpc,
|
||||
ModelRace.Viera => VieraMaleNpc,
|
||||
_ => Unknown,
|
||||
},
|
||||
Gender.Female => modelRace switch
|
||||
{
|
||||
ModelRace.Midlander => GenderRace.MidlanderFemale,
|
||||
ModelRace.Highlander => GenderRace.HighlanderFemale,
|
||||
ModelRace.Elezen => GenderRace.ElezenFemale,
|
||||
ModelRace.Lalafell => GenderRace.LalafellFemale,
|
||||
ModelRace.Miqote => GenderRace.MiqoteFemale,
|
||||
ModelRace.Roegadyn => GenderRace.RoegadynFemale,
|
||||
ModelRace.AuRa => GenderRace.AuRaFemale,
|
||||
ModelRace.Hrothgar => GenderRace.HrothgarFemale,
|
||||
ModelRace.Viera => GenderRace.VieraFemale,
|
||||
_ => GenderRace.Unknown,
|
||||
ModelRace.Midlander => MidlanderFemale,
|
||||
ModelRace.Highlander => HighlanderFemale,
|
||||
ModelRace.Elezen => ElezenFemale,
|
||||
ModelRace.Lalafell => LalafellFemale,
|
||||
ModelRace.Miqote => MiqoteFemale,
|
||||
ModelRace.Roegadyn => RoegadynFemale,
|
||||
ModelRace.AuRa => AuRaFemale,
|
||||
ModelRace.Hrothgar => HrothgarFemale,
|
||||
ModelRace.Viera => VieraFemale,
|
||||
_ => Unknown,
|
||||
},
|
||||
Gender.FemaleNpc => modelRace switch
|
||||
{
|
||||
ModelRace.Midlander => GenderRace.MidlanderFemaleNpc,
|
||||
ModelRace.Highlander => GenderRace.HighlanderFemaleNpc,
|
||||
ModelRace.Elezen => GenderRace.ElezenFemaleNpc,
|
||||
ModelRace.Lalafell => GenderRace.LalafellFemaleNpc,
|
||||
ModelRace.Miqote => GenderRace.MiqoteFemaleNpc,
|
||||
ModelRace.Roegadyn => GenderRace.RoegadynFemaleNpc,
|
||||
ModelRace.AuRa => GenderRace.AuRaFemaleNpc,
|
||||
ModelRace.Hrothgar => GenderRace.HrothgarFemaleNpc,
|
||||
ModelRace.Viera => GenderRace.VieraFemaleNpc,
|
||||
_ => GenderRace.Unknown,
|
||||
ModelRace.Midlander => MidlanderFemaleNpc,
|
||||
ModelRace.Highlander => HighlanderFemaleNpc,
|
||||
ModelRace.Elezen => ElezenFemaleNpc,
|
||||
ModelRace.Lalafell => LalafellFemaleNpc,
|
||||
ModelRace.Miqote => MiqoteFemaleNpc,
|
||||
ModelRace.Roegadyn => RoegadynFemaleNpc,
|
||||
ModelRace.AuRa => AuRaFemaleNpc,
|
||||
ModelRace.Hrothgar => HrothgarFemaleNpc,
|
||||
ModelRace.Viera => VieraFemaleNpc,
|
||||
_ => Unknown,
|
||||
},
|
||||
_ => GenderRace.Unknown,
|
||||
_ => Unknown,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue