using Content.Shared.Arcade;
using Content.Shared.Dataset;
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
namespace Content.Server.Arcade.SpaceVillain;
[RegisterComponent]
public sealed partial class SpaceVillainArcadeComponent : SharedSpaceVillainArcadeComponent
{
///
/// Unused flag that can be hacked via wires.
/// Name suggests that it was intended to either make the health/mana values underflow while playing the game or turn the arcade machine into an infinite prize fountain.
///
[ViewVariables]
public bool OverflowFlag;
///
/// The current session of the SpaceVillain game for this arcade machine.
///
[ViewVariables]
public SpaceVillainGame? Game = null;
///
/// The sound played when a new session of the SpaceVillain game is begun.
///
[DataField]
public SoundSpecifier NewGameSound = new SoundPathSpecifier("/Audio/Effects/Arcade/newgame.ogg");
///
/// The sound played when the player chooses to attack.
///
[DataField]
public SoundSpecifier PlayerAttackSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_attack.ogg");
///
/// The sound played when the player chooses to heal.
///
[DataField]
public SoundSpecifier PlayerHealSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_heal.ogg");
///
/// The sound played when the player chooses to regain mana.
///
[DataField]
public SoundSpecifier PlayerChargeSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_charge.ogg");
///
/// The sound played when the player wins.
///
[DataField]
public SoundSpecifier WinSound = new SoundPathSpecifier("/Audio/Effects/Arcade/win.ogg");
///
/// The sound played when the player loses.
///
[DataField]
public SoundSpecifier GameOverSound = new SoundPathSpecifier("/Audio/Effects/Arcade/gameover.ogg");
///
/// The prefixes that can be used to create the game name.
///
[DataField]
public ProtoId PossibleFightVerbs = "SpaceVillainVerbsFight";
///
/// The first names/titles that can be used to construct the name of the villain.
///
[DataField]
public ProtoId PossibleFirstEnemyNames = "SpaceVillainNamesEnemyFirst";
///
/// The last names that can be used to construct the name of the villain.
///
[DataField]
public ProtoId PossibleLastEnemyNames = "SpaceVillainNamesEnemyLast";
///
/// The prototypes that can be dispensed as a reward for winning the game.
///
[DataField]
public List PossibleRewards = new();
///
/// The minimum number of prizes the arcade machine can have.
///
[DataField]
public int RewardMinAmount;
///
/// The maximum number of prizes the arcade machine can have.
///
[DataField]
public int RewardMaxAmount;
///
/// The remaining number of prizes the arcade machine can dispense.
///
[ViewVariables(VVAccess.ReadWrite)]
public int RewardAmount = 0;
}