From b340c42ab1e2aaa77035f5ec54ba9f26960210f7 Mon Sep 17 00:00:00 2001 From: Gustas <37534529+PunkPun@users.noreply.github.com> Date: Fri, 26 Sep 2025 16:19:14 +0300 Subject: [PATCH] We get get sprites earlier --- .../Traits/World/TSVeinsRenderer.cs | 6 +++--- .../Traits/World/ResourceRenderer.cs | 18 +++++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs b/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs index 66ec4d60ea..88156e6ba9 100644 --- a/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs +++ b/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs @@ -158,7 +158,7 @@ namespace OpenRA.Mods.Cnc.Traits readonly byte maxDensity; readonly Color veinRadarColor; - ISpriteSequence veinSequence; + readonly ISpriteSequence veinSequence; PaletteReference veinPalette; TerrainSpriteLayer spriteLayer; @@ -177,6 +177,8 @@ namespace OpenRA.Mods.Cnc.Traits renderIndices = new CellLayer(world.Map); borders = new CellLayer(world.Map); + + veinSequence = self.World.Map.Sequences.GetSequence(info.Image, info.Sequence); } void AddDirtyCell(CPos cell, string resourceType) @@ -194,9 +196,7 @@ namespace OpenRA.Mods.Cnc.Traits foreach (var a in w.Actors) ActorAddedToWorld(a); - veinSequence = w.Map.Sequences.GetSequence(info.Image, info.Sequence); veinPalette = wr.Palette(info.Palette); - var first = veinSequence.GetSprite(0); var emptySprite = new Sprite(first.Sheet, Rectangle.Empty, TextureChannel.Alpha); spriteLayer = new TerrainSpriteLayer(w, wr, emptySprite, first.BlendMode, wr.World.Type != WorldType.Editor); diff --git a/OpenRA.Mods.Common/Traits/World/ResourceRenderer.cs b/OpenRA.Mods.Common/Traits/World/ResourceRenderer.cs index 0e68ed0022..ed141ea9b2 100644 --- a/OpenRA.Mods.Common/Traits/World/ResourceRenderer.cs +++ b/OpenRA.Mods.Common/Traits/World/ResourceRenderer.cs @@ -116,6 +116,15 @@ namespace OpenRA.Mods.Common.Traits ResourceLayer = self.Trait(); ResourceLayer.CellChanged += AddDirtyCell; RenderContents = new CellLayer(self.World.Map); + + var sequences = self.World.Map.Sequences; + foreach (var kv in Info.ResourceTypes) + { + var resourceInfo = kv.Value; + var resourceVariants = resourceInfo.Sequences + .ToDictionary(v => v, v => sequences.GetSequence(resourceInfo.Image, v)); + Variants.Add(kv.Key, resourceVariants); + } } void AddDirtyCell(CPos cell, string resourceType) @@ -126,14 +135,9 @@ namespace OpenRA.Mods.Common.Traits protected virtual void WorldLoaded(World w, WorldRenderer wr) { - var sequences = w.Map.Sequences; - foreach (var kv in Info.ResourceTypes) + foreach (var kv in Variants) { - var resourceInfo = kv.Value; - var resourceVariants = resourceInfo.Sequences - .ToDictionary(v => v, v => sequences.GetSequence(resourceInfo.Image, v)); - Variants.Add(kv.Key, resourceVariants); - + var resourceVariants = kv.Value; if (spriteLayer == null) { var first = resourceVariants.First().Value.GetSprite(0);