using Content.Shared.Roles;
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
namespace Content.Server.GameTicking.Rules.Components;
[RegisterComponent, Access(typeof(ValleyPointsRuleSystem))]
public sealed partial class ValleyPointsComponent : Component
{
///
/// The current points for Blugoslavia.
///
[DataField]
public int BlugoslaviaPoints = 0;
///
/// The current points for the Insurgents.
///
[DataField]
public int InsurgentPoints = 0;
///
/// Points needed to win the match.
///
[DataField]
public int PointsToWin = 1000;
///
/// Match duration in minutes.
///
[DataField]
public float MatchDurationMinutes = 50f;
///
/// Points awarded for killing a Blugoslavian soldier.
///
[DataField]
public int KillPoints = 20;
///
/// Points awarded for delivering a supply box.
///
[DataField]
public int SupplyBoxDeliveryPoints = 50;
///
/// Points awarded for stealing a supply box.
///
[DataField]
public int StolenSupplyBoxPoints = 75;
///
/// Points awarded for escorting a convoy.
///
[DataField]
public int ConvoyEscortPoints = 100;
///
/// Points awarded for holding a checkpoint.
///
[DataField]
public int CheckpointHoldPoints = 5;
///
/// Bonus points for holding all checkpoints.
///
[DataField]
public int AllCheckpointsBonusPoints = 100;
///
/// Time in seconds to hold a checkpoint before earning points.
///
[DataField]
public float CheckpointHoldTime = 60f; // 1 minute
///
/// Time in seconds to secure a supply box at a checkpoint.
///
[DataField]
public float SupplyBoxSecureTime = 30f;
///
/// Interval in seconds for all-checkpoints bonus.
///
[DataField]
public float CheckpointBonusInterval = 300f; // 5 minutes
///
/// Initial count of civilian NPCs.
///
[DataField]
public int InitialCivilianCount = 0;
///
/// Total civilian NPCs.
///
[DataField]
public int TotalCivilianNPCs = 0;
///
/// Total civilian NPCs currently alive.
///
[DataField]
public int AliveCivilianNPCs = 0;
///
/// Required civilian survival rate for UN objectives (0.0 to 1.0).
///
[DataField]
public float RequiredCivilianSurvivalRate = 0.8f; // 80%
///
/// Whether the UN hospital zone is controlled by UN forces.
///
[DataField]
public bool UNHospitalZoneControlled = true;
///
/// Whether the UN has maintained neutrality.
///
[DataField]
public bool UNNeutralityMaintained = true;
///
/// When the game started.
///
[DataField]
public TimeSpan GameStartTime;
///
/// Last time the all-checkpoints bonus was awarded.
///
[DataField]
public TimeSpan LastCheckpointBonusTime;
///
/// Whether the game has ended.
///
[DataField]
public bool GameEnded = false;
///
/// Checkpoints currently held by Blugoslavia.
///
[DataField]
public List BlugoslaviaHeldCheckpoints = new();
///
/// When each checkpoint started being held.
///
[DataField]
public Dictionary CheckpointHoldStartTimes = new();
///
/// Supply boxes currently being secured.
///
[DataField]
public Dictionary SecuringSupplyBoxes = new();
///
/// Last time scores were announced.
///
[DataField]
public TimeSpan LastScoreAnnouncementTime;
}