Refactor map loading & saving
This commit is contained in:
@@ -3,12 +3,13 @@ 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.Shared.Configuration;
|
||||
using Robust.Shared.Console;
|
||||
using Robust.Shared.ContentPack;
|
||||
using Robust.Shared.EntitySerialization;
|
||||
using Robust.Shared.EntitySerialization.Systems;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.Mapping
|
||||
{
|
||||
@@ -91,8 +92,9 @@ namespace Content.Server.Mapping
|
||||
}
|
||||
else
|
||||
{
|
||||
var loadOptions = new MapLoadOptions {StoreMapUids = true};
|
||||
_entities.System<MapLoaderSystem>().TryLoad(mapId, args[1], out _, loadOptions);
|
||||
var path = new ResPath(args[1]);
|
||||
var opts = new DeserializationOptions {StoreYamlUids = true};
|
||||
_entities.System<MapLoaderSystem>().TryLoadMapWithId(mapId, path, out _, out _, opts);
|
||||
}
|
||||
|
||||
// was the map actually created or did it fail somehow?
|
||||
|
||||
@@ -4,6 +4,8 @@ using Content.Shared.Administration;
|
||||
using Content.Shared.Mapping;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Server.Player;
|
||||
using Robust.Shared.EntitySerialization;
|
||||
using Robust.Shared.EntitySerialization.Systems;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Serialization;
|
||||
@@ -21,6 +23,7 @@ public sealed class MappingManager : IPostInjectInit
|
||||
[Dependency] private readonly IServerNetManager _net = default!;
|
||||
[Dependency] private readonly IPlayerManager _players = default!;
|
||||
[Dependency] private readonly IEntitySystemManager _systems = default!;
|
||||
[Dependency] private readonly IEntityManager _ent = default!;
|
||||
|
||||
private ISawmill _sawmill = default!;
|
||||
private ZStdCompressionContext _zstd = default!;
|
||||
@@ -45,14 +48,13 @@ public sealed class MappingManager : IPostInjectInit
|
||||
if (!_players.TryGetSessionByChannel(message.MsgChannel, out var session) ||
|
||||
!_admin.IsAdmin(session, true) ||
|
||||
!_admin.HasAdminFlag(session, AdminFlags.Host) ||
|
||||
session.AttachedEntity is not { } player)
|
||||
!_ent.TryGetComponent(session.AttachedEntity, out TransformComponent? xform) ||
|
||||
xform.MapUid is not {} mapUid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var mapId = _systems.GetEntitySystem<TransformSystem>().GetMapCoordinates(player).MapId;
|
||||
var mapEntity = _map.GetMapEntityIdOrThrow(mapId);
|
||||
var data = _systems.GetEntitySystem<MapLoaderSystem>().GetSaveData(mapEntity);
|
||||
var data = _systems.GetEntitySystem<MapLoaderSystem>().SerializeEntityRecursive(mapUid).Node;
|
||||
var document = new YamlDocument(data.ToYaml());
|
||||
var stream = new YamlStream { document };
|
||||
var writer = new StringWriter();
|
||||
|
||||
@@ -3,10 +3,10 @@ using Content.Server.Administration;
|
||||
using Content.Shared.Administration;
|
||||
using Content.Shared.CCVar;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Server.Maps;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Shared.Console;
|
||||
using Robust.Shared.ContentPack;
|
||||
using Robust.Shared.EntitySerialization.Systems;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Timing;
|
||||
using Robust.Shared.Utility;
|
||||
@@ -23,7 +23,7 @@ public sealed class MappingSystem : EntitySystem
|
||||
[Dependency] private readonly IConfigurationManager _cfg = default!;
|
||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
||||
[Dependency] private readonly IResourceManager _resMan = default!;
|
||||
[Dependency] private readonly MapLoaderSystem _map = default!;
|
||||
[Dependency] private readonly MapLoaderSystem _loader = default!;
|
||||
|
||||
// Not a comp because I don't want to deal with this getting saved onto maps ever
|
||||
/// <summary>
|
||||
@@ -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");
|
||||
_currentlyAutosaving[map] = (CalculateNextTime(), name);
|
||||
Log.Info($"Autosaving map {name} ({map}) to {path}. Next save in {ReadableTimeLeft(map)} seconds.");
|
||||
_map.SaveMap(map, path);
|
||||
_loader.SaveMap(map, path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user