Add tileset to dump sheets

This commit is contained in:
Gustas
2025-01-27 17:07:04 +02:00
committed by Matthias Mailänder
parent 84378969c3
commit f5ecb9ad99
5 changed files with 32 additions and 13 deletions

View File

@@ -23,15 +23,15 @@ namespace OpenRA.Mods.Common.Terrain
public sealed class DefaultTileCache : IDisposable
{
public readonly Cache<SheetType, SheetBuilder> SheetBuilders;
readonly Dictionary<ushort, TheaterTemplate> templates = [];
readonly Cache<SheetType, SheetBuilder> sheetBuilders;
readonly MersenneTwister random;
public Sprite MissingTile { get; }
public DefaultTileCache(DefaultTerrain terrainInfo, Action<uint, string> onMissingImage = null)
{
sheetBuilders = new Cache<SheetType, SheetBuilder>(t => new SheetBuilder(t, terrainInfo.SheetSize));
SheetBuilders = new Cache<SheetType, SheetBuilder>(t => new SheetBuilder(t, terrainInfo.SheetSize));
random = new MersenneTwister();
@@ -101,14 +101,14 @@ namespace OpenRA.Mods.Common.Terrain
var offset = new float3(f.Offset, zOffset);
var type = SheetBuilder.FrameTypeToSheetType(f.Type);
var s = sheetBuilders[type].Allocate(f.Size, zRamp, offset);
var s = SheetBuilders[type].Allocate(f.Size, zRamp, offset);
OpenRA.Graphics.Util.FastCopyIntoChannel(s, f.Data, f.Type);
if (terrainInfo.EnableDepth)
{
var depthFrame = depthFrames != null ? depthFrames[j] : allFrames[j + frameCount];
var depthType = SheetBuilder.FrameTypeToSheetType(depthFrame.Type);
var ss = sheetBuilders[depthType].Allocate(depthFrame.Size, zRamp, offset);
var ss = SheetBuilders[depthType].Allocate(depthFrame.Size, zRamp, offset);
OpenRA.Graphics.Util.FastCopyIntoChannel(ss, depthFrame.Data, depthFrame.Type);
s = new SpriteWithSecondaryData(s, ss.Sheet, ss.Bounds, ss.Channel);
}
@@ -135,7 +135,7 @@ namespace OpenRA.Mods.Common.Terrain
var missingSheetType = SheetType.Indexed;
// Avoid creating an indexed sheet if all tiles are BGRA
var missing = sheetBuilders.FirstOrDefault();
var missing = SheetBuilders.FirstOrDefault();
if (missing.Value != null && missing.Key == SheetType.BGRA)
{
missingDataLength = 4;
@@ -143,8 +143,8 @@ namespace OpenRA.Mods.Common.Terrain
missingSheetType = SheetType.BGRA;
}
MissingTile = sheetBuilders[missingSheetType].Add(new byte[missingDataLength], missingFrameType, new Size(1, 1));
foreach (var sb in sheetBuilders.Values)
MissingTile = SheetBuilders[missingSheetType].Add(new byte[missingDataLength], missingFrameType, new Size(1, 1));
foreach (var sb in SheetBuilders.Values)
sb.Current?.ReleaseBuffer();
}
@@ -167,7 +167,7 @@ namespace OpenRA.Mods.Common.Terrain
public void Dispose()
{
foreach (var sb in sheetBuilders.Values)
foreach (var sb in SheetBuilders.Values)
sb.Dispose();
}
}