From 5769bf38f8c995735b9c08f3cfc8824fc0f1cfdf Mon Sep 17 00:00:00 2001 From: Vasilis Date: Thu, 18 Apr 2024 17:06:56 +0200 Subject: [PATCH] Revert #26994 and #27077 (#27090) --- Content.IntegrationTests/Pair/TestMapData.cs | 7 ++- .../Pair/TestPair.Helpers.cs | 26 ++++----- .../Tests/Administration/Logs/AddTests.cs | 4 +- .../Tests/DeviceNetwork/DeviceNetworkTest.cs | 2 +- Content.IntegrationTests/Tests/EntityTest.cs | 27 ++++++++- .../Tests/Fluids/PuddleTest.cs | 5 +- .../Interaction/InteractionTest.Helpers.cs | 2 +- .../Tests/Interaction/InteractionTest.cs | 2 +- .../Tests/Interaction/MovementTest.cs | 2 +- .../Tests/PrototypeSaveTest.cs | 22 ++++++- .../Tests/Shuttle/DockTest.cs | 4 +- .../Tests/Tiles/TileConstructionTests.cs | 4 +- .../GameTicking/Rules/PiratesRuleSystem.cs | 3 +- Content.Server/Mapping/MappingCommand.cs | 57 ++++++++++--------- .../Salvage/SalvageSystem.Expeditions.cs | 1 - Content.Server/Salvage/SalvageSystem.cs | 2 +- .../Salvage/SpawnSalvageMissionJob.cs | 7 +-- RobustToolbox | 2 +- 18 files changed, 111 insertions(+), 68 deletions(-) diff --git a/Content.IntegrationTests/Pair/TestMapData.cs b/Content.IntegrationTests/Pair/TestMapData.cs index 343641e161..bdf1208038 100644 --- a/Content.IntegrationTests/Pair/TestMapData.cs +++ b/Content.IntegrationTests/Pair/TestMapData.cs @@ -10,8 +10,9 @@ namespace Content.IntegrationTests.Pair; public sealed class TestMapData { public EntityUid MapUid { get; set; } - public Entity Grid; - public MapId MapId; + public EntityUid GridUid { get; set; } + public MapId MapId { get; set; } + public MapGridComponent MapGrid { get; set; } = default!; public EntityCoordinates GridCoords { get; set; } public MapCoordinates MapCoords { get; set; } public TileRef Tile { get; set; } @@ -20,4 +21,4 @@ public sealed class TestMapData public EntityUid CMapUid { get; set; } public EntityUid CGridUid { get; set; } public EntityCoordinates CGridCoords { get; set; } -} +} \ No newline at end of file diff --git a/Content.IntegrationTests/Pair/TestPair.Helpers.cs b/Content.IntegrationTests/Pair/TestPair.Helpers.cs index 0ea6d3e2dc..554807b2d2 100644 --- a/Content.IntegrationTests/Pair/TestPair.Helpers.cs +++ b/Content.IntegrationTests/Pair/TestPair.Helpers.cs @@ -1,6 +1,5 @@ #nullable enable using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using System.Linq; using Robust.Shared.GameObjects; using Robust.Shared.Map; @@ -15,37 +14,36 @@ public sealed partial class TestPair /// /// Creates a map, a grid, and a tile, and gives back references to them. /// - [MemberNotNull(nameof(TestMap))] - public async Task CreateTestMap(bool initialized = true, string tile = "Plating") + public async Task CreateTestMap() { - var mapData = new TestMapData(); - TestMap = mapData; await Server.WaitIdleAsync(); var tileDefinitionManager = Server.ResolveDependency(); + var mapData = new TestMapData(); TestMap = mapData; await Server.WaitPost(() => { - mapData.MapUid = Server.System().CreateMap(out mapData.MapId, runMapInit: initialized); - mapData.Grid = Server.MapMan.CreateGridEntity(mapData.MapId); - mapData.GridCoords = new EntityCoordinates(mapData.Grid, 0, 0); - var plating = tileDefinitionManager[tile]; + mapData.MapId = Server.MapMan.CreateMap(); + mapData.MapUid = Server.MapMan.GetMapEntityId(mapData.MapId); + var mapGrid = Server.MapMan.CreateGridEntity(mapData.MapId); + mapData.MapGrid = mapGrid; + mapData.GridUid = mapGrid.Owner; // Fixing this requires an engine PR. + mapData.GridCoords = new EntityCoordinates(mapData.GridUid, 0, 0); + var plating = tileDefinitionManager["Plating"]; var platingTile = new Tile(plating.TileId); - mapData.Grid.Comp.SetTile(mapData.GridCoords, platingTile); + mapData.MapGrid.SetTile(mapData.GridCoords, platingTile); mapData.MapCoords = new MapCoordinates(0, 0, mapData.MapId); - mapData.Tile = mapData.Grid.Comp.GetAllTiles().First(); + mapData.Tile = mapData.MapGrid.GetAllTiles().First(); }); - TestMap = mapData; if (!Settings.Connected) return mapData; await RunTicksSync(10); mapData.CMapUid = ToClientUid(mapData.MapUid); - mapData.CGridUid = ToClientUid(mapData.Grid); + mapData.CGridUid = ToClientUid(mapData.GridUid); mapData.CGridCoords = new EntityCoordinates(mapData.CGridUid, 0, 0); - TestMap = mapData; return mapData; } diff --git a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs index 772af337a1..98c7363a6c 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs @@ -32,8 +32,8 @@ public sealed class AddTests var guid = Guid.NewGuid(); - await pair.CreateTestMap(); - var coordinates = pair.TestMap.GridCoords; + var testMap = await pair.CreateTestMap(); + var coordinates = testMap.GridCoords; await server.WaitPost(() => { var entity = sEntities.SpawnEntity(null, coordinates); diff --git a/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs b/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs index b37f7cfa46..26ea726211 100644 --- a/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs +++ b/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs @@ -212,7 +212,7 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork DeviceNetworkComponent networkComponent1 = null; DeviceNetworkComponent networkComponent2 = null; WiredNetworkComponent wiredNetworkComponent = null; - var grid = testMap.Grid.Comp; + var grid = testMap.MapGrid; var testValue = "test"; var payload = new NetworkPayload diff --git a/Content.IntegrationTests/Tests/EntityTest.cs b/Content.IntegrationTests/Tests/EntityTest.cs index d3b1fb4722..152eb72522 100644 --- a/Content.IntegrationTests/Tests/EntityTest.cs +++ b/Content.IntegrationTests/Tests/EntityTest.cs @@ -354,18 +354,41 @@ namespace Content.IntegrationTests.Tests await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; + + var mapManager = server.ResolveDependency(); var entityManager = server.ResolveDependency(); var componentFactory = server.ResolveDependency(); + var tileDefinitionManager = server.ResolveDependency(); + var mapSystem = entityManager.System(); var logmill = server.ResolveDependency().GetSawmill("EntityTest"); - await pair.CreateTestMap(); + Entity grid = default!; + + await server.WaitPost(() => + { + // Create a one tile grid to stave off the grid 0 monsters + var mapId = mapManager.CreateMap(); + + mapManager.AddUninitializedMap(mapId); + + grid = mapManager.CreateGridEntity(mapId); + + var tileDefinition = tileDefinitionManager["Plating"]; + var tile = new Tile(tileDefinition.TileId); + var coordinates = new EntityCoordinates(grid.Owner, Vector2.Zero); + + mapSystem.SetTile(grid.Owner, grid.Comp!, coordinates, tile); + + mapManager.DoMapInitialize(mapId); + }); + await server.WaitRunTicks(5); - var testLocation = pair.TestMap.GridCoords; await server.WaitAssertion(() => { Assert.Multiple(() => { + var testLocation = new EntityCoordinates(grid.Owner, Vector2.Zero); foreach (var type in componentFactory.AllRegisteredTypes) { diff --git a/Content.IntegrationTests/Tests/Fluids/PuddleTest.cs b/Content.IntegrationTests/Tests/Fluids/PuddleTest.cs index a9069892df..611af67380 100644 --- a/Content.IntegrationTests/Tests/Fluids/PuddleTest.cs +++ b/Content.IntegrationTests/Tests/Fluids/PuddleTest.cs @@ -46,14 +46,17 @@ namespace Content.IntegrationTests.Tests.Fluids var server = pair.Server; var testMap = await pair.CreateTestMap(); - var grid = testMap.Grid.Comp; var entitySystemManager = server.ResolveDependency(); var spillSystem = entitySystemManager.GetEntitySystem(); + MapGridComponent grid = null; + // Remove all tiles await server.WaitPost(() => { + grid = testMap.MapGrid; + foreach (var tile in grid.GetAllTiles()) { grid.SetTile(tile.GridIndices, Tile.Empty); diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs index 480fd9cde6..88448e7b80 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs @@ -989,7 +989,7 @@ public abstract partial class InteractionTest /// protected async Task AddGravity(EntityUid? uid = null) { - var target = uid ?? MapData.Grid; + var target = uid ?? MapData.GridUid; await Server.WaitPost(() => { var gravity = SEntMan.EnsureComponent(target); diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs index a4ed31e998..bed27ba6ef 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs @@ -184,7 +184,7 @@ public abstract partial class InteractionTest await Pair.CreateTestMap(); PlayerCoords = SEntMan.GetNetCoordinates(MapData.GridCoords.Offset(new Vector2(0.5f, 0.5f)).WithEntityId(MapData.MapUid, Transform, SEntMan)); TargetCoords = SEntMan.GetNetCoordinates(MapData.GridCoords.Offset(new Vector2(1.5f, 0.5f)).WithEntityId(MapData.MapUid, Transform, SEntMan)); - await SetTile(Plating, grid: MapData.Grid.Comp); + await SetTile(Plating, grid: MapData.MapGrid); // Get player data var sPlayerMan = Server.ResolveDependency(); diff --git a/Content.IntegrationTests/Tests/Interaction/MovementTest.cs b/Content.IntegrationTests/Tests/Interaction/MovementTest.cs index dc5aec92cf..553b031c2b 100644 --- a/Content.IntegrationTests/Tests/Interaction/MovementTest.cs +++ b/Content.IntegrationTests/Tests/Interaction/MovementTest.cs @@ -31,7 +31,7 @@ public abstract class MovementTest : InteractionTest for (var i = -Tiles; i <= Tiles; i++) { - await SetTile(Plating, SEntMan.GetNetCoordinates(pCoords.Offset(new Vector2(i, 0))), MapData.Grid.Comp); + await SetTile(Plating, SEntMan.GetNetCoordinates(pCoords.Offset(new Vector2(i, 0))), MapData.MapGrid); } AssertGridCount(1); diff --git a/Content.IntegrationTests/Tests/PrototypeSaveTest.cs b/Content.IntegrationTests/Tests/PrototypeSaveTest.cs index 9e26fa5eaa..e4a9c1a840 100644 --- a/Content.IntegrationTests/Tests/PrototypeSaveTest.cs +++ b/Content.IntegrationTests/Tests/PrototypeSaveTest.cs @@ -38,15 +38,31 @@ public sealed class PrototypeSaveTest var mapManager = server.ResolveDependency(); var entityMan = server.ResolveDependency(); var prototypeMan = server.ResolveDependency(); + var tileDefinitionManager = server.ResolveDependency(); var seriMan = server.ResolveDependency(); var compFact = server.ResolveDependency(); var prototypes = new List(); + MapGridComponent grid = default!; EntityUid uid; + MapId mapId = default; - await pair.CreateTestMap(false, "FloorSteel"); // Wires n such disable ambiance while under the floor - var mapId = pair.TestMap.MapId; - var grid = pair.TestMap.Grid; + //Build up test environment + await server.WaitPost(() => + { + // Create a one tile grid to stave off the grid 0 monsters + mapId = mapManager.CreateMap(); + + mapManager.AddUninitializedMap(mapId); + + grid = mapManager.CreateGrid(mapId); + + var tileDefinition = tileDefinitionManager["FloorSteel"]; // Wires n such disable ambiance while under the floor + var tile = new Tile(tileDefinition.TileId); + var coordinates = grid.Owner.ToCoordinates(); + + grid.SetTile(coordinates, tile); + }); await server.WaitRunTicks(5); diff --git a/Content.IntegrationTests/Tests/Shuttle/DockTest.cs b/Content.IntegrationTests/Tests/Shuttle/DockTest.cs index a1aa462a69..b6fc273570 100644 --- a/Content.IntegrationTests/Tests/Shuttle/DockTest.cs +++ b/Content.IntegrationTests/Tests/Shuttle/DockTest.cs @@ -39,7 +39,7 @@ public sealed class DockTest : ContentUnitTest await server.WaitAssertion(() => { - entManager.DeleteEntity(map.Grid); + entManager.DeleteEntity(map.GridUid); var grid1 = mapManager.CreateGridEntity(mapId); var grid2 = mapManager.CreateGridEntity(mapId); var grid1Ent = grid1.Owner; @@ -104,7 +104,7 @@ public sealed class DockTest : ContentUnitTest // Spawn shuttle and affirm no valid docks. await server.WaitAssertion(() => { - entManager.DeleteEntity(map.Grid); + entManager.DeleteEntity(map.GridUid); Assert.That(entManager.System().TryLoad(otherMap.MapId, "/Maps/Shuttles/emergency.yml", out var rootUids)); shuttle = rootUids[0]; diff --git a/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs b/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs index 083e817d69..0a2af88887 100644 --- a/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs +++ b/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs @@ -37,7 +37,7 @@ public sealed class TileConstructionTests : InteractionTest // Remove grid await SetTile(null); await SetTile(null, PlayerCoords); - Assert.That(MapData.Grid.Comp.Deleted); + Assert.That(MapData.MapGrid.Deleted); AssertGridCount(0); // Place Lattice @@ -70,7 +70,7 @@ public sealed class TileConstructionTests : InteractionTest // Remove grid await SetTile(null); await SetTile(null, PlayerCoords); - Assert.That(MapData.Grid.Comp.Deleted); + Assert.That(MapData.MapGrid.Deleted); AssertGridCount(0); // Space -> Lattice diff --git a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs index 0a749d2e01..818d3c6e94 100644 --- a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs @@ -24,7 +24,6 @@ using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; -using Robust.Shared.Map.Components; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -181,7 +180,7 @@ public sealed class PiratesRuleSystem : GameRuleSystem var aabbs = EntityQuery().SelectMany(x => x.Grids.Select(x => - xformQuery.GetComponent(x).WorldMatrix.TransformBox(Comp(x).LocalAABB))) + xformQuery.GetComponent(x).WorldMatrix.TransformBox(_mapManager.GetGridComp(x).LocalAABB))) .ToArray(); var aabb = aabbs[0]; diff --git a/Content.Server/Mapping/MappingCommand.cs b/Content.Server/Mapping/MappingCommand.cs index 08f3dcccf9..08ba0de833 100644 --- a/Content.Server/Mapping/MappingCommand.cs +++ b/Content.Server/Mapping/MappingCommand.cs @@ -1,14 +1,17 @@ +// ReSharper disable once RedundantUsingDirective +// Used to warn the player in big red letters in debug mode + using System.Linq; using Content.Server.Administration; using Content.Server.GameTicking; using Content.Shared.Administration; using Content.Shared.CCVar; -using Robust.Server.GameObjects; -using Robust.Server.Maps; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.ContentPack; using Robust.Shared.Map; +using Robust.Shared.Utility; namespace Content.Server.Mapping { @@ -16,8 +19,6 @@ namespace Content.Server.Mapping sealed class MappingCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entities = default!; - [Dependency] private readonly IMapManager _map = default!; - [Dependency] private readonly IConfigurationManager _cfg = default!; public string Command => "mapping"; public string Description => Loc.GetString("cmd-mapping-desc"); @@ -56,13 +57,13 @@ namespace Content.Server.Mapping shell.WriteError(Loc.GetString("cmd-mapping-warning")); #endif + var mapManager = IoCManager.Resolve(); MapId mapId; - string? toLoad = null; - var mapSys = _entities.System(); // Get the map ID to use if (args.Length is 1 or 2) { + if (!int.TryParse(args[0], out var intMapId)) { shell.WriteError(Loc.GetString("cmd-mapping-failure-integer", ("arg", args[0]))); @@ -78,33 +79,35 @@ namespace Content.Server.Mapping return; } - if (_map.MapExists(mapId)) + if (mapManager.MapExists(mapId)) { shell.WriteError(Loc.GetString("cmd-mapping-exists", ("mapId", mapId))); return; } - // either load a map or create a new one. - if (args.Length <= 1) - { - mapSys.CreateMap(mapId, runMapInit: false); - } - else - { - var loadOptions = new MapLoadOptions {StoreMapUids = true}; - _entities.System().TryLoad(mapId, args[1], out _, loadOptions); - } + } + else + { + mapId = mapManager.NextMapId(); + } - // was the map actually created or did it fail somehow? - if (!_map.MapExists(mapId)) - { - shell.WriteError(Loc.GetString("cmd-mapping-error")); - return; - } + string? toLoad = null; + // either load a map or create a new one. + if (args.Length <= 1) + { + shell.ExecuteCommand($"addmap {mapId} false"); } else { - mapSys.CreateMap(out mapId, runMapInit: false); + toLoad = CommandParsing.Escape(args[1]); + shell.ExecuteCommand($"loadmap {mapId} \"{toLoad}\" 0 0 0 true"); + } + + // was the map actually created? + if (!mapManager.MapExists(mapId)) + { + shell.WriteError(Loc.GetString("cmd-mapping-error")); + return; } // map successfully created. run misc helpful mapping commands @@ -114,15 +117,17 @@ namespace Content.Server.Mapping shell.ExecuteCommand("aghost"); } + var cfg = IoCManager.Resolve(); + // don't interrupt mapping with events or auto-shuttle shell.ExecuteCommand("sudo cvar events.enabled false"); shell.ExecuteCommand("sudo cvar shuttle.auto_call_time 0"); - if (_cfg.GetCVar(CCVars.AutosaveEnabled)) + if (cfg.GetCVar(CCVars.AutosaveEnabled)) shell.ExecuteCommand($"toggleautosave {mapId} {toLoad ?? "NEWMAP"}"); shell.ExecuteCommand($"tp 0 0 {mapId}"); shell.RemoteExecuteCommand("mappingclientsidesetup"); - _map.SetMapPaused(mapId, true); + mapManager.SetMapPaused(mapId, true); if (args.Length == 2) shell.WriteLine(Loc.GetString("cmd-mapping-success-load",("mapId",mapId),("path", args[1]))); diff --git a/Content.Server/Salvage/SalvageSystem.Expeditions.cs b/Content.Server/Salvage/SalvageSystem.Expeditions.cs index 4d5d569dab..839730ec87 100644 --- a/Content.Server/Salvage/SalvageSystem.Expeditions.cs +++ b/Content.Server/Salvage/SalvageSystem.Expeditions.cs @@ -164,7 +164,6 @@ public sealed partial class SalvageSystem _dungeon, _metaData, _transform, - _mapSystem, station, coordinatesDisk, missionParams, diff --git a/Content.Server/Salvage/SalvageSystem.cs b/Content.Server/Salvage/SalvageSystem.cs index eb5719c892..9af4736345 100644 --- a/Content.Server/Salvage/SalvageSystem.cs +++ b/Content.Server/Salvage/SalvageSystem.cs @@ -40,6 +40,7 @@ namespace Content.Server.Salvage { [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly IConfigurationManager _configurationManager = default!; + [Dependency] private readonly IEntityManager _entManager = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly ILogManager _logManager = default!; [Dependency] private readonly IMapManager _mapManager = default!; @@ -55,7 +56,6 @@ namespace Content.Server.Salvage [Dependency] private readonly RadioSystem _radioSystem = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly SharedMapSystem _mapSystem = default!; [Dependency] private readonly ShuttleSystem _shuttle = default!; [Dependency] private readonly ShuttleConsoleSystem _shuttleConsoles = default!; [Dependency] private readonly StationSystem _station = default!; diff --git a/Content.Server/Salvage/SpawnSalvageMissionJob.cs b/Content.Server/Salvage/SpawnSalvageMissionJob.cs index 47123e9784..180c8d145c 100644 --- a/Content.Server/Salvage/SpawnSalvageMissionJob.cs +++ b/Content.Server/Salvage/SpawnSalvageMissionJob.cs @@ -50,7 +50,6 @@ public sealed class SpawnSalvageMissionJob : Job private readonly DungeonSystem _dungeon; private readonly MetaDataSystem _metaData; private readonly SharedTransformSystem _xforms; - private readonly SharedMapSystem _map; public readonly EntityUid Station; public readonly EntityUid? CoordinatesDisk; @@ -70,7 +69,6 @@ public sealed class SpawnSalvageMissionJob : Job DungeonSystem dungeon, MetaDataSystem metaData, SharedTransformSystem xform, - SharedMapSystem map, EntityUid station, EntityUid? coordinatesDisk, SalvageMissionParams missionParams, @@ -85,7 +83,6 @@ public sealed class SpawnSalvageMissionJob : Job _dungeon = dungeon; _metaData = metaData; _xforms = xform; - _map = map; Station = station; CoordinatesDisk = coordinatesDisk; _missionParams = missionParams; @@ -98,7 +95,9 @@ public sealed class SpawnSalvageMissionJob : Job protected override async Task Process() { _sawmill.Debug("salvage", $"Spawning salvage mission with seed {_missionParams.Seed}"); - var mapUid = _map.CreateMap(out var mapId, runMapInit: false); + var mapId = _mapManager.CreateMap(); + var mapUid = _mapManager.GetMapEntityId(mapId); + _mapManager.AddUninitializedMap(mapId); MetaDataComponent? metadata = null; var grid = _entManager.EnsureComponent(mapUid); var random = new Random(_missionParams.Seed); diff --git a/RobustToolbox b/RobustToolbox index f5a6e52c7f..1901059755 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit f5a6e52c7fefa568296d52aab9b894e1a8bd9122 +Subproject commit 19010597553d15f5ca239497ac66eab876ecc720 -- 2.52.0