namespace AcDream.Core.CharGen;
///
/// One hair-style option in a
/// list. Retail schema: HairStyle_CG (nested inside
/// Sex_CG::Serialize @ 0x005C1600). Bald and
/// AlternateSetup handle the Gear Knight / Olthoi bald-head special
/// case ACE's SexCG.GetHeadObject comment documents.
///
public sealed record ChargenHairStyle(
uint IconId,
bool Bald,
uint AlternateSetup,
ChargenObjDesc ObjDesc);
///
/// One eye-strip option. Retail carries a SEPARATE bald variant
/// (BaldIconId / BaldObjDesc) because a bald hairstyle
/// selection changes which eye texture applies — see ACE's
/// SexCG.GetEyeTexture(strip, isBald).
///
public sealed record ChargenEyeStrip(
uint IconId,
uint BaldIconId,
ChargenObjDesc ObjDesc,
ChargenObjDesc BaldObjDesc);
/// One nose- or mouth-strip option (retail FaceStrip_CG).
public sealed record ChargenFaceStrip(uint IconId, ChargenObjDesc ObjDesc);
///
/// One clothing-slot option (headgear/shirt/pants/footwear). Retail schema:
/// Gear_CG. ClothingTableId resolves through
/// ClothingTable::BuildObjDesc; WeenieDefaultId is the weenie
/// class the character actually receives in inventory on creation (ACE's
/// SexCG.GetHeadgearWeenie family).
///
public sealed record ChargenGearOption(
string Name,
uint ClothingTableId,
uint WeenieDefaultId);