using Content.Shared.Inventory;
using Robust.Shared.GameStates;
namespace Content.Shared.Humanoid;
[NetworkedComponent, RegisterComponent, AutoGenerateComponentState(true)]
[Access(typeof(SharedHideableHumanoidLayersSystem))]
public sealed partial class HideableHumanoidLayersComponent : Component
{
///
/// A map of the visual layers currently hidden to the equipment
/// slots that are currently hiding them. This will affect the base
/// sprite on this humanoid layer, and any markings that sit above it.
///
[DataField, AutoNetworkedField]
public Dictionary HiddenLayers = new();
///
/// Client only - which layers were last actually hidden.
///
[ViewVariables]
public HashSet LastHiddenLayers = new();
}
///
/// Raised on an entity before one of its humanoid layers changes its visibility.
/// If is false, this event is a request to hide the layer.
/// If true, the layer will be shown again regardless.
///
[ByRefEvent]
public struct HumanoidLayerVisibilityChangedEvent(HumanoidVisualLayers layer, bool visible)
{
/// The layer whose visibility will change.
public readonly HumanoidVisualLayers Layer = layer;
/// The new visibility of the layer.
public readonly bool Visible = visible;
/// When Visible is true, set this true to allow the layer to be hidden.
public bool ShouldHide;
}