Forcemap can be cleared with empty string again (#29472)
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
using Content.Server.Maps;
|
||||||
using Content.Shared.CCVar;
|
using Content.Shared.CCVar;
|
||||||
using Robust.Shared.Configuration;
|
using Robust.Shared.Configuration;
|
||||||
using Robust.Shared.Console;
|
using Robust.Shared.Console;
|
||||||
@@ -49,27 +50,34 @@ public sealed class ForceMapTest
|
|||||||
var entMan = server.EntMan;
|
var entMan = server.EntMan;
|
||||||
var configManager = server.ResolveDependency<IConfigurationManager>();
|
var configManager = server.ResolveDependency<IConfigurationManager>();
|
||||||
var consoleHost = server.ResolveDependency<IConsoleHost>();
|
var consoleHost = server.ResolveDependency<IConsoleHost>();
|
||||||
|
var gameMapMan = server.ResolveDependency<IGameMapManager>();
|
||||||
|
|
||||||
await server.WaitAssertion(() =>
|
await server.WaitAssertion(() =>
|
||||||
{
|
{
|
||||||
// Make sure we're set to the default map
|
// Make sure we're set to the default map
|
||||||
Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(DefaultMapName),
|
Assert.That(gameMapMan.GetSelectedMap()?.ID, Is.EqualTo(DefaultMapName),
|
||||||
$"Test didn't start on expected map ({DefaultMapName})!");
|
$"Test didn't start on expected map ({DefaultMapName})!");
|
||||||
|
|
||||||
// Try changing to a map that doesn't exist
|
// Try changing to a map that doesn't exist
|
||||||
consoleHost.ExecuteCommand($"forcemap {BadMapName}");
|
consoleHost.ExecuteCommand($"forcemap {BadMapName}");
|
||||||
Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(DefaultMapName),
|
Assert.That(gameMapMan.GetSelectedMap()?.ID, Is.EqualTo(DefaultMapName),
|
||||||
$"Forcemap succeeded with a map that does not exist ({BadMapName})!");
|
$"Forcemap succeeded with a map that does not exist ({BadMapName})!");
|
||||||
|
|
||||||
// Try changing to a valid map
|
// Try changing to a valid map
|
||||||
consoleHost.ExecuteCommand($"forcemap {TestMapEligibleName}");
|
consoleHost.ExecuteCommand($"forcemap {TestMapEligibleName}");
|
||||||
Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(TestMapEligibleName),
|
Assert.That(gameMapMan.GetSelectedMap()?.ID, Is.EqualTo(TestMapEligibleName),
|
||||||
$"Forcemap failed with a valid map ({TestMapEligibleName})");
|
$"Forcemap failed with a valid map ({TestMapEligibleName})");
|
||||||
|
|
||||||
// Try changing to a map that exists but is ineligible
|
// Try changing to a map that exists but is ineligible
|
||||||
consoleHost.ExecuteCommand($"forcemap {TestMapIneligibleName}");
|
consoleHost.ExecuteCommand($"forcemap {TestMapIneligibleName}");
|
||||||
Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(TestMapIneligibleName),
|
Assert.That(gameMapMan.GetSelectedMap()?.ID, Is.EqualTo(TestMapIneligibleName),
|
||||||
$"Forcemap failed with valid but ineligible map ({TestMapIneligibleName})!");
|
$"Forcemap failed with valid but ineligible map ({TestMapIneligibleName})!");
|
||||||
|
|
||||||
|
// Try clearing the force-selected map
|
||||||
|
consoleHost.ExecuteCommand("forcemap \"\"");
|
||||||
|
Assert.That(gameMapMan.GetSelectedMap(), Is.Null,
|
||||||
|
$"Running 'forcemap \"\"' did not clear the forced map!");
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Cleanup
|
// Cleanup
|
||||||
|
|||||||
@@ -29,13 +29,18 @@ namespace Content.Server.GameTicking.Commands
|
|||||||
var gameMap = IoCManager.Resolve<IGameMapManager>();
|
var gameMap = IoCManager.Resolve<IGameMapManager>();
|
||||||
var name = args[0];
|
var name = args[0];
|
||||||
|
|
||||||
if (!gameMap.CheckMapExists(name))
|
// An empty string clears the forced map
|
||||||
|
if (!string.IsNullOrEmpty(name) && !gameMap.CheckMapExists(name))
|
||||||
{
|
{
|
||||||
shell.WriteLine(Loc.GetString("forcemap-command-map-not-found", ("map", name)));
|
shell.WriteLine(Loc.GetString("forcemap-command-map-not-found", ("map", name)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_configurationManager.SetCVar(CCVars.GameMap, name);
|
_configurationManager.SetCVar(CCVars.GameMap, name);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(name))
|
||||||
|
shell.WriteLine(Loc.GetString("forcemap-command-cleared"));
|
||||||
|
else
|
||||||
shell.WriteLine(Loc.GetString("forcemap-command-success", ("map", name)));
|
shell.WriteLine(Loc.GetString("forcemap-command-success", ("map", name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,4 +5,5 @@ forcemap-command-help = forcemap <map ID>
|
|||||||
forcemap-command-need-one-argument = forcemap takes one argument, the path to the map file.
|
forcemap-command-need-one-argument = forcemap takes one argument, the path to the map file.
|
||||||
forcemap-command-map-not-found = No eligible map exists with name { $map }.
|
forcemap-command-map-not-found = No eligible map exists with name { $map }.
|
||||||
forcemap-command-success = Forced the game to start with map { $map } next round.
|
forcemap-command-success = Forced the game to start with map { $map } next round.
|
||||||
|
forcemap-command-cleared = Cleared the forced map setting.
|
||||||
forcemap-command-arg-map = <map ID>
|
forcemap-command-arg-map = <map ID>
|
||||||
|
|||||||
Reference in New Issue
Block a user