using Robust.Shared.Configuration; using Content.Server.Voting.Managers; using Content.Shared.GameTicking; using Content.Shared.Voting; using Content.Shared.CCVar; using Robust.Server.Player; using Content.Server.GameTicking; namespace Content.Server.AutoVote; public sealed class AutoVoteSystem : EntitySystem { [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] public readonly IVoteManager _voteManager = default!; [Dependency] public readonly IPlayerManager _playerManager = default!; public bool _shouldVoteNextJoin = false; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnReturnedToLobby); SubscribeLocalEvent(OnPlayerJoinedLobby); } public void OnReturnedToLobby(RoundRestartCleanupEvent ev) => CallAutovote(); public void OnPlayerJoinedLobby(PlayerJoinedLobbyEvent ev) { if (!_shouldVoteNextJoin) return; CallAutovote(); _shouldVoteNextJoin = false; } private void CallAutovote() { if (!_cfg.GetCVar(CCVars.AutoVoteEnabled)) return; if (_playerManager.PlayerCount == 0) { _shouldVoteNextJoin = true; return; } if (_cfg.GetCVar(CCVars.MapAutoVoteEnabled)) _voteManager.CreateStandardVote(null, StandardVoteType.Map); if (_cfg.GetCVar(CCVars.PresetAutoVoteEnabled)) _voteManager.CreateStandardVote(null, StandardVoteType.Preset); } }