Editor marker tiles layer

This commit is contained in:
David Wilson
2024-01-26 23:52:51 +10:00
committed by Gustas
parent 714f2c6dc2
commit 25a6b4b6b9
36 changed files with 1595 additions and 54 deletions

View File

@@ -13,6 +13,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Newtonsoft.Json;
using OpenRA.FileSystem;
using OpenRA.Mods.Common.Traits;
using OpenRA.Widgets;
@@ -300,6 +301,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}
saveMap(combinedPath);
SaveMapMarkerTiles(map, modData, world);
}
public static void SaveMapInner(Map map, IReadWritePackage package, World world, ModData modData)
@@ -344,5 +347,33 @@ namespace OpenRA.Mods.Common.Widgets.Logic
},
confirmText: SaveMapFailedConfirm);
}
static void SaveMapMarkerTiles(Map map, ModData modData, World world)
{
try
{
var markerLayerOverlay = world.WorldActor.Trait<MarkerLayerOverlay>();
if (markerLayerOverlay.Tiles.Count == 0)
return;
var mod = modData.Manifest.Metadata;
var directory = Path.Combine(Platform.SupportDir, "Editor", modData.Manifest.Id, mod.Version, "MarkerTiles");
Directory.CreateDirectory(directory);
var markerTilesFile = markerLayerOverlay.ToFile();
var markerTilesContent = JsonConvert.SerializeObject(markerTilesFile);
var markerTileFilename = $"{Path.GetFileNameWithoutExtension(map.Package.Name)}.json";
using (var streamWriter = new StreamWriter(Path.Combine(directory, markerTileFilename), false))
{
streamWriter.Write(markerTilesContent);
}
}
catch (Exception e)
{
Log.Write("debug", "Failed to save map editor marker tiles.");
Log.Write("debug", e);
}
}
}
}