mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-09 18:31:17 +03:00
* Axes the easy IMapManager references * Axes the references to unported (obsolete) IMapManager methods * Converts salvageruler command to a LocalizedEntityCommand so it can use SharedMapSystem * Removes IMapManager from GameTicker This required axing the map nuke during restart, but that should be fine? Maps are entities so EntityManager.FlushEntities should delete them all and that's the preceding line * submodule update(?) --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
99 lines
3.9 KiB
C#
99 lines
3.9 KiB
C#
using System.Numerics;
|
|
using Content.IntegrationTests.Fixtures;
|
|
using Content.IntegrationTests.Fixtures.Attributes;
|
|
using Content.Shared.CCVar;
|
|
using Robust.Server.GameObjects;
|
|
using Robust.Shared.Configuration;
|
|
using Robust.Shared.ContentPack;
|
|
using Robust.Shared.EntitySerialization.Systems;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.Map;
|
|
using Robust.Shared.Maths;
|
|
using Robust.Shared.Utility;
|
|
|
|
namespace Content.IntegrationTests.Tests
|
|
{
|
|
[TestFixture]
|
|
public sealed class SaveLoadMapTest : GameTest
|
|
{
|
|
[Test]
|
|
[EnsureCVar(Side.Server, typeof(CCVars), nameof(CCVars.GridFill), false)]
|
|
public async Task SaveLoadMultiGridMap()
|
|
{
|
|
var mapPath = new ResPath("/Maps/Test/TestMap.yml");
|
|
|
|
var pair = Pair;
|
|
var server = pair.Server;
|
|
var sEntities = server.ResolveDependency<IEntityManager>();
|
|
var mapLoader = sEntities.System<MapLoaderSystem>();
|
|
var mapSystem = sEntities.System<SharedMapSystem>();
|
|
var xformSystem = sEntities.EntitySysManager.GetEntitySystem<SharedTransformSystem>();
|
|
var resManager = server.ResolveDependency<IResourceManager>();
|
|
|
|
await server.WaitAssertion(() =>
|
|
{
|
|
var dir = mapPath.Directory;
|
|
resManager.UserData.CreateDir(dir);
|
|
|
|
mapSystem.CreateMap(out var mapId);
|
|
|
|
{
|
|
var mapGrid = mapSystem.CreateGridEntity(mapId);
|
|
xformSystem.SetWorldPosition(mapGrid, new Vector2(10, 10));
|
|
mapSystem.SetTile(mapGrid, new Vector2i(0, 0), new Tile(typeId: 1, flags: 1, variant: 255));
|
|
}
|
|
{
|
|
var mapGrid = mapSystem.CreateGridEntity(mapId);
|
|
xformSystem.SetWorldPosition(mapGrid, new Vector2(-8, -8));
|
|
mapSystem.SetTile(mapGrid, new Vector2i(0, 0), new Tile(typeId: 2, flags: 1, variant: 254));
|
|
}
|
|
|
|
Assert.That(mapLoader.TrySaveMap(mapId, mapPath));
|
|
mapSystem.DeleteMap(mapId);
|
|
});
|
|
|
|
await server.WaitIdleAsync();
|
|
|
|
MapId newMap = default;
|
|
await server.WaitAssertion(() =>
|
|
{
|
|
Assert.That(mapLoader.TryLoadMap(mapPath, out var map, out _));
|
|
newMap = map!.Value.Comp.MapId;
|
|
});
|
|
|
|
await server.WaitIdleAsync();
|
|
|
|
await server.WaitAssertion(() =>
|
|
{
|
|
{
|
|
if (!mapSystem.TryFindGridAt(newMap, new Vector2(10, 10), out var gridUid, out var mapGrid) ||
|
|
!sEntities.TryGetComponent<TransformComponent>(gridUid, out var gridXform))
|
|
{
|
|
Assert.Fail();
|
|
return;
|
|
}
|
|
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(xformSystem.GetWorldPosition(gridXform), Is.EqualTo(new Vector2(10, 10)));
|
|
Assert.That(mapSystem.GetTileRef(gridUid, mapGrid, new Vector2i(0, 0)).Tile, Is.EqualTo(new Tile(typeId: 1, flags: 1, variant: 255)));
|
|
});
|
|
}
|
|
{
|
|
if (!mapSystem.TryFindGridAt(newMap, new Vector2(-8, -8), out var gridUid, out var mapGrid) ||
|
|
!sEntities.TryGetComponent<TransformComponent>(gridUid, out var gridXform))
|
|
{
|
|
Assert.Fail();
|
|
return;
|
|
}
|
|
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(xformSystem.GetWorldPosition(gridXform), Is.EqualTo(new Vector2(-8, -8)));
|
|
Assert.That(mapSystem.GetTileRef(gridUid, mapGrid, new Vector2i(0, 0)).Tile, Is.EqualTo(new Tile(typeId: 2, flags: 1, variant: 254)));
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|