Access sequences from Map.

This commit is contained in:
Paul Chote
2022-12-28 22:48:56 +13:00
committed by Gustas
parent 992ba1a9a2
commit 7cd4272350
21 changed files with 59 additions and 54 deletions

View File

@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Traits
throw new InvalidOperationException("Actor type '" + self.Info.Name + "' does not define a quantized body orientation.");
}
return qboi.QuantizedBodyFacings(self.Info, self.World.Map.Rules.Sequences, faction);
return qboi.QuantizedBodyFacings(self.Info, self.World.Map.Sequences, faction);
});
}

View File

@@ -65,20 +65,21 @@ namespace OpenRA.Mods.Common.Traits
topLeftScreenOffset = -wr.ScreenPxOffset(CenterOffset);
var tileset = world.Map.Tileset.ToLowerInvariant();
if (world.Map.Rules.Sequences.HasSequence("overlay", $"build-valid-{tileset}"))
var sequences = world.Map.Sequences;
if (sequences.HasSequence("overlay", $"build-valid-{tileset}"))
{
var validSequence = world.Map.Rules.Sequences.GetSequence("overlay", $"build-valid-{tileset}");
var validSequence = sequences.GetSequence("overlay", $"build-valid-{tileset}");
validTile = validSequence.GetSprite(0);
validAlpha = validSequence.GetAlpha(0);
}
else
{
var validSequence = world.Map.Rules.Sequences.GetSequence("overlay", "build-valid");
var validSequence = sequences.GetSequence("overlay", "build-valid");
validTile = validSequence.GetSprite(0);
validAlpha = validSequence.GetAlpha(0);
}
var blockedSequence = world.Map.Rules.Sequences.GetSequence("overlay", "build-invalid");
var blockedSequence = sequences.GetSequence("overlay", "build-invalid");
blockedTile = blockedSequence.GetSprite(0);
blockedAlpha = blockedSequence.GetAlpha(0);
}

View File

@@ -45,7 +45,7 @@ namespace OpenRA.Mods.Common.Traits.Render
public IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init)
{
var sequenceProvider = init.World.Map.Rules.Sequences;
var sequences = init.World.Map.Sequences;
var faction = init.GetValue<FactionInit, string>(this);
var ownerName = init.Get<OwnerInit>().InternalName;
var image = GetImage(init.Actor, faction);
@@ -60,7 +60,7 @@ namespace OpenRA.Mods.Common.Traits.Render
if (facings == -1)
{
var qbo = init.Actor.TraitInfoOrDefault<IQuantizeBodyOrientationInfo>();
facings = qbo?.QuantizedBodyFacings(init.Actor, sequenceProvider, faction) ?? 1;
facings = qbo?.QuantizedBodyFacings(init.Actor, sequences, faction) ?? 1;
}
}

View File

@@ -59,10 +59,10 @@ namespace OpenRA.Mods.Common.Traits.Render
var body = init.Actor.TraitInfo<BodyOrientationInfo>();
var faction = init.GetValue<FactionInit, string>(this);
var ownerName = init.Get<OwnerInit>().InternalName;
var sequenceProvider = init.World.Map.Rules.Sequences;
var sequences = init.World.Map.Sequences;
var image = Image ?? init.Actor.Name;
var facings = body.QuantizedFacings == -1 ?
init.Actor.TraitInfo<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(init.Actor, sequenceProvider, faction) :
init.Actor.TraitInfo<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(init.Actor, sequences, faction) :
body.QuantizedFacings;
var palette = init.WorldRenderer.Palette(Palette ?? PlayerPalette + ownerName);

View File

@@ -132,7 +132,7 @@ namespace OpenRA.Mods.Common.Traits
footprint = power.info.Footprint.Where(c => !char.IsWhiteSpace(c)).ToArray();
dimensions = power.info.Dimensions;
var sequence = world.Map.Rules.Sequences.GetSequence(power.info.FootprintImage, power.info.FootprintSequence);
var sequence = world.Map.Sequences.GetSequence(power.info.FootprintImage, power.info.FootprintSequence);
tile = sequence.GetSprite(0);
alpha = sequence.GetAlpha(0);
}

View File

@@ -164,7 +164,7 @@ namespace OpenRA.Mods.Common.Traits
for (var i = 0; i < noOfDividingPoints; i++)
{
var sprite = world.Map.Rules.Sequences.GetSequence(cursorAnimation, arrows[i]).GetSprite(0);
var sprite = world.Map.Sequences.GetSequence(cursorAnimation, arrows[i]).GetSprite(0);
var angle = i * partAngle;
var direction = WAngle.FromDegrees(angle);

View File

@@ -59,8 +59,7 @@ namespace OpenRA.Mods.Common.Traits
this.info = info;
world = self.World;
var rules = self.World.Map.Rules;
disabledSprite = rules.Sequences.GetSequence(info.Image, info.Sequence).GetSprite(0);
disabledSprite = self.World.Map.Sequences.GetSequence(info.Image, info.Sequence).GetSprite(0);
}
void IWorldLoaded.WorldLoaded(World w, WorldRenderer wr)

View File

@@ -59,11 +59,11 @@ namespace OpenRA.Mods.Common.Traits
this.info = info;
map = self.World.Map;
var copySequence = map.Rules.Sequences.GetSequence(info.Image, info.CopySequence);
var copySequence = map.Sequences.GetSequence(info.Image, info.CopySequence);
copyTile = copySequence.GetSprite(0);
copyAlpha = copySequence.GetAlpha(0);
var pasteSequence = map.Rules.Sequences.GetSequence(info.Image, info.PasteSequence);
var pasteSequence = map.Sequences.GetSequence(info.Image, info.PasteSequence);
pasteTile = pasteSequence.GetSprite(0);
pasteAlpha = pasteSequence.GetAlpha(0);
}

View File

@@ -124,7 +124,7 @@ namespace OpenRA.Mods.Common.Traits
protected virtual void WorldLoaded(World w, WorldRenderer wr)
{
var sequences = w.Map.Rules.Sequences;
var sequences = w.Map.Sequences;
foreach (var kv in Info.ResourceTypes)
{
var resourceInfo = kv.Value;
@@ -141,12 +141,13 @@ namespace OpenRA.Mods.Common.Traits
if (shadowLayer == null)
{
var firstWithShadow = resourceVariants.Values.FirstOrDefault(v => v.ShadowStart > 0);
if (firstWithShadow != null)
var firstShadow = resourceVariants.Values
.Select(v => v.GetShadow(0, WAngle.Zero))
.FirstOrDefault(s => s != null);
if (firstShadow != null)
{
var first = firstWithShadow.GetShadow(0, WAngle.Zero);
var emptySprite = new Sprite(first.Sheet, Rectangle.Empty, TextureChannel.Alpha);
shadowLayer = new TerrainSpriteLayer(w, wr, emptySprite, first.BlendMode, wr.World.Type != WorldType.Editor);
var emptySprite = new Sprite(firstShadow.Sheet, Rectangle.Empty, TextureChannel.Alpha);
shadowLayer = new TerrainSpriteLayer(w, wr, emptySprite, firstShadow.BlendMode, wr.World.Type != WorldType.Editor);
}
}

View File

@@ -156,11 +156,11 @@ namespace OpenRA.Mods.Common.Traits
shroudSprites = new (Sprite, float, float)[variantCount * variantStride];
fogSprites = new (Sprite, float, float)[variantCount * variantStride];
var sequenceProvider = map.Rules.Sequences;
var sequences = map.Sequences;
for (var j = 0; j < variantCount; j++)
{
var shroudSequence = sequenceProvider.GetSequence(info.Sequence, info.ShroudVariants[j]);
var fogSequence = sequenceProvider.GetSequence(info.Sequence, info.FogVariants[j]);
var shroudSequence = sequences.GetSequence(info.Sequence, info.ShroudVariants[j]);
var fogSequence = sequences.GetSequence(info.Sequence, info.FogVariants[j]);
for (var i = 0; i < info.Index.Length; i++)
{
shroudSprites[j * variantStride + i] = (shroudSequence.GetSprite(i), shroudSequence.Scale, shroudSequence.GetAlpha(i));
@@ -170,8 +170,8 @@ namespace OpenRA.Mods.Common.Traits
if (info.OverrideFullShroud != null)
{
var i = (j + 1) * variantStride - 1;
shroudSequence = sequenceProvider.GetSequence(info.Sequence, info.OverrideFullShroud);
fogSequence = sequenceProvider.GetSequence(info.Sequence, info.OverrideFullFog);
shroudSequence = sequences.GetSequence(info.Sequence, info.OverrideFullShroud);
fogSequence = sequences.GetSequence(info.Sequence, info.OverrideFullFog);
shroudSprites[i] = (shroudSequence.GetSprite(0), shroudSequence.Scale, shroudSequence.GetAlpha(0));
fogSprites[i] = (fogSequence.GetSprite(0), fogSequence.Scale, fogSequence.GetAlpha(0));
}

View File

@@ -106,10 +106,10 @@ namespace OpenRA.Mods.Common.Traits
world = self.World;
hasSmoke = !string.IsNullOrEmpty(info.SmokeImage) && info.SmokeSequences.Length > 0;
var sequenceProvider = world.Map.Rules.Sequences;
var types = sequenceProvider.Sequences(Info.Sequence);
var sequences = world.Map.Sequences;
var types = sequences.Sequences(Info.Sequence);
foreach (var t in types)
smudges.Add(t, sequenceProvider.GetSequence(Info.Sequence, t));
smudges.Add(t, sequences.GetSequence(Info.Sequence, t));
}
public void WorldLoaded(World w, WorldRenderer wr)

View File

@@ -37,7 +37,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
SequenceProvider sequences;
var mapPackage = new Folder(Platform.EngineDir).OpenPackage(args[2], modData.ModFiles);
if (mapPackage != null)
sequences = new Map(modData, mapPackage).Rules.Sequences;
sequences = new Map(modData, mapPackage).Sequences;
else if (!modData.DefaultSequences.TryGetValue(args[2], out sequences))
throw new InvalidOperationException($"{args[2]} is not a valid tileset or map path");

View File

@@ -505,7 +505,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var fileExtension = Path.GetExtension(filename.ToLowerInvariant());
if (allowedSpriteExtensions.Contains(fileExtension))
{
currentSprites = world.Map.Rules.Sequences.SpriteCache[prefix + filename];
currentSprites = world.Map.Sequences.SpriteCache[prefix + filename];
currentFrame = 0;
if (frameSlider != null && currentSprites?.Length > 0)