using Content.Shared.Humanoid; using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Body; /// /// Defines an organ that applies a sprite to the specified within the body /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] [Access(typeof(SharedVisualBodySystem))] public sealed partial class VisualOrganComponent : Component { /// /// The sprite layer on the entity that this contributes to /// [DataField(required: true)] public Enum Layer; /// /// The sprite data for the layer /// [DataField(required: true), AutoNetworkedField, AlwaysPushInheritance] public PrototypeLayerData Data; /// /// When applying a profile, if the sex is present in this dictionary, overrides the state of the sprite data. /// Used for e.g. male vs female torsoes. /// [DataField] public Dictionary? SexStateOverrides; /// /// The current profile data of this organ, used for alternate sprite selection and colouration. /// [DataField, AutoNetworkedField] public OrganProfileData Profile = new(); } /// /// Defines the coloration, sex, etc. of organs /// [DataDefinition] [Serializable, NetSerializable] public partial record struct OrganProfileData { /// /// The "sex" of this organ /// [DataField] public Sex Sex; /// /// The "eye color" of this organ /// [DataField] public Color EyeColor = Color.White; /// /// The "skin color" of this organ /// [DataField] public Color SkinColor = Color.White; // Delta V - Begin CD Height /// /// The "height" used in CD /// [DataField] public float Height = 1f; // Delta V - End CD Height }