namespace XFEEDToolBox.Core.Galaxy;
/// <summary>Actual original compact-star appearance; nullable fields retain unavailable original inputs.</summary>
public sealed record GalaxyOriginalStellarAppearance(uint TypeRgba,uint? RealisticRgba,float? ColourBlend,uint RawScale,
ushort Classification,float Size,float SmallSize,bool? SmallSizeActive)
{
public bool? NavRouteMembership {get;init;}
public int? NavRouteMembershipMode {get;init;}
public int? NavRouteViewMode {get;init;}
private static readonly string[] SpectralTypes=["O","B","A","F","G","K","M","L","T","TTS","AeBe","Y","W","WN","WNC","WC","WO","CS","C","CN","CJ","CH","CHd","MS","S","D","DA","DAB","DAO","DAZ","DAV","DB","DBZ","DBV","DO","DOV","DQ","DC","DCV","DX","N","H","SupermassiveBlackHole","X","Nebula","RemnantNebula","BigText","NoSystem"];
private static readonly string[] Luminosities=["O","I","Ia0","Ia","Ib","Iab","II","IIa","IIab","IIb","III","IIIa","IIIab","IIIb","IV","IVa","IVab","IVb","V","Va","Vab","Vb","Vz","VI","VII","NoSystem","ERROR"];
public int SpectralTypeId=>Classification&0x3f;
public int LuminosityClassId=>(Classification&0x7c00)>>10;
public string SpectralType=>SpectralTypeId<SpectralTypes.Length?SpectralTypes[SpectralTypeId]:"Unknown";
public string? LuminosityClass=>LuminosityClassId<Luminosities.Length?Luminosities[LuminosityClassId]:null;
public float? ActiveSize=>SmallSizeActive is {} small?small?SmallSize:Size:null;
public static StarColour Colour(uint rgba)=>new((byte)rgba,(byte)(rgba>>8),(byte)(rgba>>16));
}
namespace XFEEDToolBox.Core.Galaxy;
/// <summary>Actual original compact-star appearance; nullable fields retain unavailable original inputs.</summary>
public sealed record GalaxyOriginalStellarAppearance(uint TypeRgba,uint? RealisticRgba,float? ColourBlend,uint RawScale,
ushort Classification,float Size,float SmallSize,bool? SmallSizeActive)
{
public bool? NavRouteMembership {get;init;}
public int? NavRouteMembershipMode {get;init;}
public int? NavRouteViewMode {get;init;}
private static readonly string[] SpectralTypes=["O","B","A","F","G","K","M","L","T","TTS","AeBe","Y","W","WN","WNC","WC","WO","CS","C","CN","CJ","CH","CHd","MS","S","D","DA","DAB","DAO","DAZ","DAV","DB","DBZ","DBV","DO","DOV","DQ","DC","DCV","DX","N","H","SupermassiveBlackHole","X","Nebula","RemnantNebula","BigText","NoSystem"];
private static readonly string[] Luminosities=["O","I","Ia0","Ia","Ib","Iab","II","IIa","IIab","IIb","III","IIIa","IIIab","IIIb","IV","IVa","IVab","IVb","V","Va","Vab","Vb","Vz","VI","VII","NoSystem","ERROR"];
public int SpectralTypeId=>Classification&0x3f;
public int LuminosityClassId=>(Classification&0x7c00)>>10;
public string SpectralType=>SpectralTypeId<SpectralTypes.Length?SpectralTypes[SpectralTypeId]:"Unknown";
public string? LuminosityClass=>LuminosityClassId<Luminosities.Length?Luminosities[LuminosityClassId]:null;
public float? ActiveSize=>SmallSizeActive is {} small?small?SmallSize:Size:null;
public static StarColour Colour(uint rgba)=>new((byte)rgba,(byte)(rgba>>8),(byte)(rgba>>16));
}