using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
namespace Content.Shared.Humanoid.Prototypes;
///
/// Base sprites for a species (e.g., what replaces the empty tagged layer,
/// or settings per layer)
///
[Prototype("speciesBaseSprites")]
public sealed partial class HumanoidSpeciesBaseSpritesPrototype : IPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
///
/// Sprites that this species will use on the given humanoid
/// visual layer. If a key entry is empty, it is assumed that the
/// visual layer will not be in use on this species, and will
/// be ignored.
///
[DataField("sprites", required: true)]
public Dictionary Sprites = new();
}
///
/// Humanoid species sprite layer. This is what defines the base layer of
/// a humanoid species sprite, and also defines how markings can appear over
/// that sprite (or at least, the layer this sprite is on).
///
[Prototype("humanoidBaseSprite")]
public sealed partial class HumanoidSpeciesSpriteLayer : IPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
///
/// The base sprite for this sprite layer. This is what
/// will replace the empty layer tagged by the enum
/// tied to this layer.
///
/// If this is null, no sprite will be displayed, and the
/// layer will be invisible until otherwise set.
///
[DataField("baseSprite")]
public SpriteSpecifier? BaseSprite { get; private set; }
///
/// The alpha of this layer. Ensures that
/// this layer will start with this percentage
/// of alpha.
///
[DataField("layerAlpha")]
public float LayerAlpha { get; private set; } = 1.0f;
///
/// If this sprite layer should allow markings or not.
///
[DataField("allowsMarkings")]
public bool AllowsMarkings { get; private set; } = true;
///
/// If this layer should always match the
/// skin tone in a character profile.
///
[DataField("matchSkin")]
public bool MatchSkin { get; private set; } = true;
///
/// If any markings that go on this layer should
/// match the skin tone of this part, including
/// alpha.
///
[DataField("markingsMatchSkin")]
public bool MarkingsMatchSkin { get; private set; }
}