using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using Robust.Shared.ContentPack; using Robust.Shared.EntitySerialization.Systems; using Robust.Shared.Map.Events; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Markdown; using Robust.Shared.Serialization.Markdown.Mapping; using Robust.Shared.Serialization.Markdown.Value; using Robust.Shared.Utility; namespace Content.Server.Maps; /// /// Performs basic map migration operations by listening for engine events. /// public sealed class MapMigrationSystem : EntitySystem { #pragma warning disable CS0414 [Dependency] private readonly IPrototypeManager _protoMan = default!; #pragma warning restore CS0414 [Dependency] private readonly IResourceManager _resMan = default!; private static readonly string[] MigrationFiles = { "/migration.yml", "/nf_migration.yml", "/sh_migration.yml" }; // Frontier: use array of migration files public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnBeforeReadEvent); #if DEBUG if (!TryReadFiles(out var mappings)) // Frontier: TryReadFile(newId), $"{newId} is not an entity prototype."); } } // End Delta-V #endif } // Frontier: wrap single file reader private bool TryReadFiles([NotNullWhen(true)] out List? mappings) { mappings = null; if (MigrationFiles.Count() <= 0) return false; foreach (var migrationFile in MigrationFiles) { if (!TryReadFile(migrationFile, out var mapping)) continue; mappings ??= new(); mappings.Add(mapping); } return mappings != null && mappings.Count > 0; } // End Frontier private bool TryReadFile(string migrationFile, [NotNullWhen(true)] out MappingDataNode? mappings) // Frontier: add migrationFile { mappings = null; var path = new ResPath(migrationFile); // Frontier: MigrationFile