using Content.Shared.Alert;
using Content.Shared.FixedPoint;
using Content.Shared.Mobs;
using Content.Shared.StatusIcon;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
namespace Content.Shared._Offbrand.Wounds;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
[Access(typeof(BrainDamageThresholdsSystem))]
public sealed partial class BrainDamageThresholdsComponent : Component
{
///
/// Which mob state to use, given brain damage. Highest key is selected.
///
[DataField(required: true)]
public SortedDictionary DamageStateThresholds = new();
///
/// Which mob state to use, given brain oxygen. Lowest key is selected.
///
[DataField(required: true)]
public SortedDictionary OxygenStateThresholds = new();
[DataField, AutoNetworkedField]
public MobState CurrentState = MobState.Alive;
///
/// Which status effect to apply, given brain damage. Highest key is selected.
///
[DataField(required: true)]
public SortedDictionary DamageEffectThresholds = new();
[DataField, AutoNetworkedField]
public EntProtoId? CurrentDamageEffect;
///
/// Which status effect to apply, given brain damage. Lowest key is selected.
///
[DataField(required: true)]
public SortedDictionary OxygenEffectThresholds = new();
[DataField, AutoNetworkedField]
public EntProtoId? CurrentOxygenEffect;
///
/// Damage icons to show on medical HUDs when the brain is alive and non-critical.
///
[DataField(required: true)]
public List> AliveDamageIcons;
///
/// Damage icons to show on medical HUDs when the brain is critical.
///
[DataField(required: true)]
public List> CriticalDamageIcons;
///
/// Damage icons to show on medical HUDs when the brain is dead.
///
[DataField(required: true)]
public ProtoId DeadIcon;
///
/// The alert to display depending on the amount of brain damage. Highest key is selected.
///
[DataField(required: true)]
public SortedDictionary> DamageAlertThresholds;
///
/// The alert category of the alerts.
///
[DataField(required: true)]
public ProtoId DamageAlertCategory;
///
/// The alert used to display oxygen level.
///
[DataField(required: true)]
public ProtoId OxygenAlert;
///
/// The alert category of the oxygen alerts.
///
[DataField(required: true)]
public ProtoId OxygenAlertCategory;
[DataField, AutoNetworkedField]
public ProtoId? CurrentDamageAlertThresholdState;
}