Allow gamemodes to specify custom map pools (#18429)

* Allow game presets to require certain maps

* make preset maps ignore the game map pool

* make it use a map pool prototype

* Typo

---------

Co-authored-by: Kevin Zheng <kevinz5000@gmail.com>
This commit is contained in:
Nemanja
2023-08-01 17:11:50 -04:00
committed by GitHub
parent b7382646b6
commit 27231420bc
8 changed files with 102 additions and 29 deletions

View File

@@ -5,7 +5,6 @@ using System.Linq;
using Content.Server.Administration;
using Content.Server.Administration.Logs;
using Content.Server.Administration.Managers;
using Content.Server.Afk;
using Content.Server.Chat.Managers;
using Content.Server.GameTicking;
using Content.Server.Maps;
@@ -58,13 +57,15 @@ namespace Content.Server.Voting.Managers
_playerManager.PlayerStatusChanged += PlayerManagerOnPlayerStatusChanged;
_adminMgr.OnPermsChanged += AdminPermsChanged;
_cfg.OnValueChanged(CCVars.VoteEnabled, value => {
_cfg.OnValueChanged(CCVars.VoteEnabled, _ =>
{
DirtyCanCallVoteAll();
});
foreach (var kvp in _voteTypesToEnableCVars)
{
_cfg.OnValueChanged(kvp.Value, value => {
_cfg.OnValueChanged(kvp.Value, _ =>
{
DirtyCanCallVoteAll();
});
}
@@ -294,7 +295,7 @@ namespace Content.Server.Voting.Managers
var votesUnavailable = new List<(StandardVoteType, TimeSpan)>();
foreach (var v in _standardVoteTypeValues)
{
if (CanCallVote(player, v, out var _isAdmin, out var typeTimeSpan))
if (CanCallVote(player, v, out _, out var typeTimeSpan))
continue;
votesUnavailable.Add((v, typeTimeSpan));
}
@@ -324,7 +325,7 @@ namespace Content.Server.Voting.Managers
if (!_cfg.GetCVar(CCVars.VoteEnabled))
return false;
// Specific standard vote types can be disabled with cvars.
if ((voteType != null) && _voteTypesToEnableCVars.TryGetValue(voteType.Value, out var cvar) && !_cfg.GetCVar(cvar))
if (voteType != null && _voteTypesToEnableCVars.TryGetValue(voteType.Value, out var cvar) && !_cfg.GetCVar(cvar))
return false;
// Cannot start vote if vote is already active (as non-admin).
@@ -345,7 +346,7 @@ namespace Content.Server.Voting.Managers
if (voteType == StandardVoteType.Preset)
{
var presets = GetGamePresets();
if (presets.Count() == 1 && presets.Select(x => x.Key).Single() == EntitySystem.Get<GameTicker>().Preset?.ID)
if (presets.Count == 1 && presets.Select(x => x.Key).Single() == _entityManager.System<GameTicker>().Preset?.ID)
return false;
}