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
}