From db8c6e4bc820dba1a948ff145eddf82f4be4be89 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 11 Jan 2022 17:51:52 +1100 Subject: [PATCH] Replace loadbp usages with loadmap (#6085) --- .../GameTicking/Commands/MappingCommand.cs | 6 ++-- .../GameTicking/GameTicker.RoundFlow.cs | 34 +++++++++++++------ Content.Server/Maps/GameMapManager.cs | 1 - 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Content.Server/GameTicking/Commands/MappingCommand.cs b/Content.Server/GameTicking/Commands/MappingCommand.cs index 0edea9a995..1c3a5d6444 100644 --- a/Content.Server/GameTicking/Commands/MappingCommand.cs +++ b/Content.Server/GameTicking/Commands/MappingCommand.cs @@ -68,15 +68,15 @@ namespace Content.Server.GameTicking.Commands return; } + // loadmap checks for this on its own but we want to avoid running our other commands. if (mapManager.MapExists(new MapId(mapId))) { - shell.WriteLine($"Map {mapId} already exists"); + shell.WriteError($"Map {mapId} already exists"); return; } shell.ExecuteCommand("sudo cvar events.enabled false"); - shell.ExecuteCommand($"addmap {mapId} false"); - shell.ExecuteCommand($"loadbp {mapId} \"{CommandParsing.Escape(mapName)}\" true"); + shell.ExecuteCommand($"loadmap {mapId} \"{CommandParsing.Escape(mapName)}\" true"); if (player.AttachedEntity is {Valid: true} playerEntity && _entities.GetComponent(playerEntity).EntityPrototype?.ID != "AdminObserver") diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index 25419a3781..6a6651af48 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -17,6 +17,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Log; +using Robust.Shared.Map; using Robust.Shared.Maths; using Robust.Shared.Network; using Robust.Shared.Player; @@ -72,23 +73,39 @@ namespace Content.Server.GameTicking _startingRound = false; var startTime = _gameTiming.RealTime; var map = _gameMapManager.GetSelectedMapChecked(true); - var grid = _mapLoader.LoadBlueprint(DefaultMap, map.MapPath); + _mapLoader.LoadMap(DefaultMap, map.MapPath); + var grids = _mapManager.GetAllMapGrids(DefaultMap).ToList(); + StationId stationId = default; - if (grid == null) + if (grids.Count > 0) { - throw new InvalidOperationException($"No grid found for map {map.MapName}"); + var grid = grids[0]; + stationId = _stationSystem.InitialSetupStationGrid(grid.GridEntityId, map); + SetupGridStation(grid); + _spawnPoint = grid.ToCoordinates(); } - _stationSystem.InitialSetupStationGrid(grid.GridEntityId, map); + for (var i = 1; i < grids.Count; i++) + { + var grid = grids[i]; + SetupGridStation(grid); + _stationSystem.AddGridToStation(grid.GridEntityId, stationId); + } + var timeSpan = _gameTiming.RealTime - startTime; + Logger.InfoS("ticker", $"Loaded map in {timeSpan.TotalMilliseconds:N2}ms."); + } + + private void SetupGridStation(IMapGrid grid) + { var stationXform = EntityManager.GetComponent(grid.GridEntityId); if (StationOffset) { // Apply a random offset to the station grid entity. - var x = _robustRandom.NextFloat() * MaxStationOffset * 2 - MaxStationOffset; - var y = _robustRandom.NextFloat() * MaxStationOffset * 2 - MaxStationOffset; + var x = _robustRandom.NextFloat(-MaxStationOffset, MaxStationOffset); + var y = _robustRandom.NextFloat(-MaxStationOffset, MaxStationOffset); stationXform.LocalPosition = new Vector2(x, y); } @@ -96,11 +113,6 @@ namespace Content.Server.GameTicking { stationXform.LocalRotation = _robustRandom.NextFloat(MathF.Tau); } - - _spawnPoint = grid.ToCoordinates(); - - var timeSpan = _gameTiming.RealTime - startTime; - Logger.InfoS("ticker", $"Loaded map in {timeSpan.TotalMilliseconds:N2}ms."); } public async void StartRound(bool force = false) diff --git a/Content.Server/Maps/GameMapManager.cs b/Content.Server/Maps/GameMapManager.cs index 974c89057c..68cd21e9fe 100644 --- a/Content.Server/Maps/GameMapManager.cs +++ b/Content.Server/Maps/GameMapManager.cs @@ -21,7 +21,6 @@ public class GameMapManager : IGameMapManager [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IChatManager _chatManager = default!; - [Dependency] private readonly IMapLoader _mapLoader = default!; private GameMapPrototype _currentMap = default!; private bool _currentMapForced;