Moar engine changes

This commit is contained in:
ElectroJr
2024-12-24 18:57:52 +13:00
parent eef7d02e11
commit a8cc0397c2
10 changed files with 28 additions and 30 deletions

View File

@@ -2,7 +2,6 @@
using System.Linq; using System.Linq;
using Content.Shared.Body.Components; using Content.Shared.Body.Components;
using Content.Shared.Body.Systems; using Content.Shared.Body.Systems;
using Robust.Server.GameObjects;
using Robust.Shared.Containers; using Robust.Shared.Containers;
using Robust.Shared.EntitySerialization.Systems; using Robust.Shared.EntitySerialization.Systems;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -115,7 +114,7 @@ public sealed class SaveLoadReparentTest
var mapPath = new ResPath($"/{nameof(SaveLoadReparentTest)}{nameof(Test)}map.yml"); var mapPath = new ResPath($"/{nameof(SaveLoadReparentTest)}{nameof(Test)}map.yml");
mapLoader.SaveMap(mapId, mapPath); Assert.That(mapLoader.TrySaveMap(mapId, mapPath));
mapSys.DeleteMap(mapId); mapSys.DeleteMap(mapId);
Assert.That(mapLoader.TryLoadMap(mapPath, out var map, out _), Is.True); Assert.That(mapLoader.TryLoadMap(mapPath, out var map, out _), Is.True);

View File

@@ -170,12 +170,12 @@ namespace Content.IntegrationTests.Tests
// First check that a pre-init version passes // First check that a pre-init version passes
var path = new ResPath($"{nameof(NoSavedPostMapInitTest)}.yml"); var path = new ResPath($"{nameof(NoSavedPostMapInitTest)}.yml");
loader.SaveMap(id, path); Assert.That(loader.TrySaveMap(id, path));
Assert.That(IsPreInit(path, loader, deps)); Assert.That(IsPreInit(path, loader, deps));
// and the post-init version fails. // and the post-init version fails.
await server.WaitPost(() => mapSys.InitializeMap(id)); await server.WaitPost(() => mapSys.InitializeMap(id));
loader.SaveMap(id, path); Assert.That(loader.TrySaveMap(id, path));
Assert.That(IsPreInit(path, loader, deps), Is.False); Assert.That(IsPreInit(path, loader, deps), Is.False);
await pair.CleanReturnAsync(); await pair.CleanReturnAsync();

View File

@@ -48,8 +48,8 @@ namespace Content.IntegrationTests.Tests
mapSystem.SetTile(mapGrid, new Vector2i(0, 0), new Tile(2, (TileRenderFlag) 1, 254)); mapSystem.SetTile(mapGrid, new Vector2i(0, 0), new Tile(2, (TileRenderFlag) 1, 254));
} }
Assert.Multiple(() => mapLoader.SaveMap(mapId, mapPath)); Assert.That(mapLoader.TrySaveMap(mapId, mapPath));
Assert.Multiple(() => mapSystem.DeleteMap(mapId)); mapSystem.DeleteMap(mapId);
}); });
await server.WaitIdleAsync(); await server.WaitIdleAsync();

View File

@@ -41,10 +41,10 @@ namespace Content.IntegrationTests.Tests
mapSystem.CreateMap(out var mapId0); mapSystem.CreateMap(out var mapId0);
var grid0 = mapManager.CreateGridEntity(mapId0); var grid0 = mapManager.CreateGridEntity(mapId0);
entManager.RunMapInit(grid0.Owner, entManager.GetComponent<MetaDataComponent>(grid0)); entManager.RunMapInit(grid0.Owner, entManager.GetComponent<MetaDataComponent>(grid0));
mapLoader.SaveGrid(grid0.Owner, rp1); Assert.That(mapLoader.TrySaveGrid(grid0.Owner, rp1));
mapSystem.CreateMap(out var mapId1); mapSystem.CreateMap(out var mapId1);
Assert.That(mapLoader.TryLoadGrid(mapId1, rp1, out var grid1)); Assert.That(mapLoader.TryLoadGrid(mapId1, rp1, out var grid1));
mapLoader.SaveGrid(grid1!.Value, rp2); Assert.That(mapLoader.TrySaveGrid(grid1!.Value, rp2));
}); });
await server.WaitIdleAsync(); await server.WaitIdleAsync();
@@ -116,7 +116,7 @@ namespace Content.IntegrationTests.Tests
var path = new ResPath(TestMap); var path = new ResPath(TestMap);
Assert.That(mapLoader.TryLoadMap(path, out var map, out _), $"Failed to load test map {TestMap}"); Assert.That(mapLoader.TryLoadMap(path, out var map, out _), $"Failed to load test map {TestMap}");
mapId = map!.Value.Comp.MapId; mapId = map!.Value.Comp.MapId;
mapLoader.SaveMap(mapId, rp1); Assert.That(mapLoader.TrySaveMap(mapId, rp1));
}); });
// Run 5 ticks. // Run 5 ticks.
@@ -124,7 +124,7 @@ namespace Content.IntegrationTests.Tests
await server.WaitPost(() => await server.WaitPost(() =>
{ {
mapLoader.SaveMap(mapId, rp2); Assert.That(mapLoader.TrySaveMap(mapId, rp2));
}); });
await server.WaitIdleAsync(); await server.WaitIdleAsync();
@@ -196,8 +196,8 @@ namespace Content.IntegrationTests.Tests
MapId mapId1 = default; MapId mapId1 = default;
MapId mapId2 = default; MapId mapId2 = default;
const string fileA = "/load tick load a.yml"; var fileA = new ResPath("/load tick load a.yml");
const string fileB = "/load tick load b.yml"; var fileB = new ResPath("/load tick load b.yml");
string yamlA; string yamlA;
string yamlB; string yamlB;
@@ -207,11 +207,11 @@ namespace Content.IntegrationTests.Tests
var path = new ResPath(TestMap); var path = new ResPath(TestMap);
Assert.That(mapLoader.TryLoadMap(path, out var map, out _), $"Failed to load test map {TestMap}"); Assert.That(mapLoader.TryLoadMap(path, out var map, out _), $"Failed to load test map {TestMap}");
mapId1 = map!.Value.Comp.MapId; mapId1 = map!.Value.Comp.MapId;
mapLoader.SaveMap(mapId1, fileA); Assert.That(mapLoader.TrySaveMap(mapId1, fileA));
}); });
await server.WaitIdleAsync(); await server.WaitIdleAsync();
await using (var stream = userData.Open(new ResPath(fileA), FileMode.Open)) await using (var stream = userData.Open(fileA, FileMode.Open))
using (var reader = new StreamReader(stream)) using (var reader = new StreamReader(stream))
{ {
yamlA = await reader.ReadToEndAsync(); yamlA = await reader.ReadToEndAsync();
@@ -225,12 +225,12 @@ namespace Content.IntegrationTests.Tests
var path = new ResPath(TestMap); var path = new ResPath(TestMap);
Assert.That(mapLoader.TryLoadMap(path, out var map, out _), $"Failed to load test map {TestMap}"); Assert.That(mapLoader.TryLoadMap(path, out var map, out _), $"Failed to load test map {TestMap}");
mapId2 = map!.Value.Comp.MapId; mapId2 = map!.Value.Comp.MapId;
mapLoader.SaveMap(mapId2, fileB); Assert.That(mapLoader.TrySaveMap(mapId2, fileB));
}); });
await server.WaitIdleAsync(); await server.WaitIdleAsync();
await using (var stream = userData.Open(new ResPath(fileB), FileMode.Open)) await using (var stream = userData.Open(fileB, FileMode.Open))
using (var reader = new StreamReader(stream)) using (var reader = new StreamReader(stream))
{ {
yamlB = await reader.ReadToEndAsync(); yamlB = await reader.ReadToEndAsync();
@@ -253,10 +253,10 @@ namespace Content.IntegrationTests.Tests
public bool Enabled; public bool Enabled;
public override void Initialize() public override void Initialize()
{ {
SubscribeLocalEvent<AfterSaveEvent>(OnAfterSave); SubscribeLocalEvent<AfterSerializationEvent>(OnAfterSave);
} }
private void OnAfterSave(AfterSaveEvent ev) private void OnAfterSave(AfterSerializationEvent ev)
{ {
if (!Enabled) if (!Enabled)
return; return;

View File

@@ -1,11 +1,10 @@
using Content.Shared.Administration; using Content.Shared.Administration;
using Content.Shared.CCVar; using Content.Shared.CCVar;
using Robust.Server.GameObjects;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.Console; using Robust.Shared.Console;
using Robust.Shared.Map; using Robust.Shared.Map;
using System.Linq;
using Robust.Shared.EntitySerialization.Systems; using Robust.Shared.EntitySerialization.Systems;
using Robust.Shared.Utility;
namespace Content.Server.Administration.Commands; namespace Content.Server.Administration.Commands;
@@ -49,7 +48,7 @@ public sealed class PersistenceSave : IConsoleCommand
} }
var mapLoader = _system.GetEntitySystem<MapLoaderSystem>(); var mapLoader = _system.GetEntitySystem<MapLoaderSystem>();
mapLoader.SaveMap(mapId, saveFilePath); mapLoader.TrySaveMap(mapId, new ResPath(saveFilePath));
shell.WriteLine(Loc.GetString("cmd-savemap-success")); shell.WriteLine(Loc.GetString("cmd-savemap-success"));
} }
} }

View File

@@ -20,7 +20,7 @@ public sealed class DeviceListSystem : SharedDeviceListSystem
SubscribeLocalEvent<DeviceListComponent, ComponentShutdown>(OnShutdown); SubscribeLocalEvent<DeviceListComponent, ComponentShutdown>(OnShutdown);
SubscribeLocalEvent<DeviceListComponent, BeforeBroadcastAttemptEvent>(OnBeforeBroadcast); SubscribeLocalEvent<DeviceListComponent, BeforeBroadcastAttemptEvent>(OnBeforeBroadcast);
SubscribeLocalEvent<DeviceListComponent, BeforePacketSentEvent>(OnBeforePacketSent); SubscribeLocalEvent<DeviceListComponent, BeforePacketSentEvent>(OnBeforePacketSent);
SubscribeLocalEvent<BeforeSaveEvent>(OnMapSave); SubscribeLocalEvent<BeforeSerializationEvent>(OnMapSave);
} }
private void OnShutdown(EntityUid uid, DeviceListComponent component, ComponentShutdown args) private void OnShutdown(EntityUid uid, DeviceListComponent component, ComponentShutdown args)
@@ -124,7 +124,7 @@ public sealed class DeviceListSystem : SharedDeviceListSystem
Dirty(list); Dirty(list);
} }
private void OnMapSave(BeforeSaveEvent ev) private void OnMapSave(BeforeSerializationEvent ev)
{ {
List<EntityUid> toRemove = new(); List<EntityUid> toRemove = new();
var query = GetEntityQuery<TransformComponent>(); var query = GetEntityQuery<TransformComponent>();

View File

@@ -67,10 +67,10 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem
SubscribeLocalEvent<DeviceListComponent, ComponentRemove>(OnComponentRemoved); SubscribeLocalEvent<DeviceListComponent, ComponentRemove>(OnComponentRemoved);
SubscribeLocalEvent<BeforeSaveEvent>(OnMapSave); SubscribeLocalEvent<BeforeSerializationEvent>(OnMapSave);
} }
private void OnMapSave(BeforeSaveEvent ev) private void OnMapSave(BeforeSerializationEvent ev)
{ {
var enumerator = AllEntityQuery<NetworkConfiguratorComponent>(); var enumerator = AllEntityQuery<NetworkConfiguratorComponent>();
while (enumerator.MoveNext(out var uid, out var conf)) while (enumerator.MoveNext(out var uid, out var conf))

View File

@@ -78,7 +78,7 @@ public sealed class MappingSystem : EntitySystem
var path = Path.Combine(saveDir, $"{DateTime.Now.ToString("yyyy-M-dd_HH.mm.ss")}-AUTO.yml"); var path = Path.Combine(saveDir, $"{DateTime.Now.ToString("yyyy-M-dd_HH.mm.ss")}-AUTO.yml");
_currentlyAutosaving[map] = (CalculateNextTime(), name); _currentlyAutosaving[map] = (CalculateNextTime(), name);
Log.Info($"Autosaving map {name} ({map}) to {path}. Next save in {ReadableTimeLeft(map)} seconds."); Log.Info($"Autosaving map {name} ({map}) to {path}. Next save in {ReadableTimeLeft(map)} seconds.");
_loader.SaveMap(map, path); _loader.TrySaveMap(map, new ResPath(path));
} }
} }

View File

@@ -62,11 +62,11 @@ public sealed class ResaveCommand : LocalizedCommands
if (_entManager.HasComponent<LoadedMapComponent>(map)) if (_entManager.HasComponent<LoadedMapComponent>(map))
{ {
loader.SaveMap(map.Comp.MapId, fn); loader.TrySaveMap(map.Comp.MapId, fn);
} }
else if (result.Grids.Count == 1) else if (result.Grids.Count == 1)
{ {
loader.SaveGrid(result.Grids.First(), fn); loader.TrySaveGrid(result.Grids.First(), fn);
} }
else else
{ {

View File

@@ -42,7 +42,7 @@ public sealed class FollowerSystem : EntitySystem
SubscribeLocalEvent<FollowedComponent, ComponentGetStateAttemptEvent>(OnFollowedAttempt); SubscribeLocalEvent<FollowedComponent, ComponentGetStateAttemptEvent>(OnFollowedAttempt);
SubscribeLocalEvent<FollowerComponent, GotEquippedHandEvent>(OnGotEquippedHand); SubscribeLocalEvent<FollowerComponent, GotEquippedHandEvent>(OnGotEquippedHand);
SubscribeLocalEvent<FollowedComponent, EntityTerminatingEvent>(OnFollowedTerminating); SubscribeLocalEvent<FollowedComponent, EntityTerminatingEvent>(OnFollowedTerminating);
SubscribeLocalEvent<BeforeSaveEvent>(OnBeforeSave); SubscribeLocalEvent<BeforeSerializationEvent>(OnBeforeSave);
} }
private void OnFollowedAttempt(Entity<FollowedComponent> ent, ref ComponentGetStateAttemptEvent args) private void OnFollowedAttempt(Entity<FollowedComponent> ent, ref ComponentGetStateAttemptEvent args)
@@ -60,7 +60,7 @@ public sealed class FollowerSystem : EntitySystem
} }
} }
private void OnBeforeSave(BeforeSaveEvent ev) private void OnBeforeSave(BeforeSerializationEvent ev)
{ {
// Some followers will not be map savable. This ensures that maps don't get saved with empty/invalid // Some followers will not be map savable. This ensures that maps don't get saved with empty/invalid
// followers, but just stopping any following on the map being saved. // followers, but just stopping any following on the map being saved.