]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Forcemap can be cleared with empty string again (#29472)
authorTayrtahn <tayrtahn@gmail.com>
Wed, 26 Jun 2024 06:41:31 +0000 (02:41 -0400)
committerGitHub <noreply@github.com>
Wed, 26 Jun 2024 06:41:31 +0000 (16:41 +1000)
Content.IntegrationTests/Tests/Commands/ForceMapTest.cs
Content.Server/GameTicking/Commands/ForceMapCommand.cs
Resources/Locale/en-US/game-ticking/forcemap-command.ftl

index 5115996c21812b6dccd148f9f160348f01be45b0..3fa7e64f1a4b3bbc7a9ab03561c732ab58917d51 100644 (file)
@@ -1,3 +1,4 @@
+using Content.Server.Maps;
 using Content.Shared.CCVar;
 using Robust.Shared.Configuration;
 using Robust.Shared.Console;
@@ -49,27 +50,34 @@ public sealed class ForceMapTest
         var entMan = server.EntMan;
         var configManager = server.ResolveDependency<IConfigurationManager>();
         var consoleHost = server.ResolveDependency<IConsoleHost>();
+        var gameMapMan = server.ResolveDependency<IGameMapManager>();
 
         await server.WaitAssertion(() =>
         {
             // 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})!");
 
             // Try changing to a map that doesn't exist
             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})!");
 
             // Try changing to a valid map
             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})");
 
             // Try changing to a map that exists but is ineligible
             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})!");
+
+            // Try clearing the force-selected map
+            consoleHost.ExecuteCommand("forcemap \"\"");
+            Assert.That(gameMapMan.GetSelectedMap(), Is.Null,
+                $"Running 'forcemap \"\"' did not clear the forced map!");
+
         });
 
         // Cleanup
index 76777623a2bca747dfbc824b40dfb70db392c375..4cc30ff38af623bbc4db58122857fa9ad3e538dd 100644 (file)
@@ -29,14 +29,19 @@ namespace Content.Server.GameTicking.Commands
             var gameMap = IoCManager.Resolve<IGameMapManager>();
             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)));
                 return;
             }
 
             _configurationManager.SetCVar(CCVars.GameMap, name);
-            shell.WriteLine(Loc.GetString("forcemap-command-success", ("map", name)));
+
+            if (string.IsNullOrEmpty(name))
+                shell.WriteLine(Loc.GetString("forcemap-command-cleared"));
+            else
+                shell.WriteLine(Loc.GetString("forcemap-command-success", ("map", name)));
         }
 
         public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
index 6a4399cdcfef61e61c6cb68ce501371ddfb5814a..573aa78a2869fce5c3bbb7083cd32a030eb1a479 100644 (file)
@@ -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-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-cleared = Cleared the forced map setting.
 forcemap-command-arg-map = <map ID>