Rewrite sequence loading logic.

Multiple layers of Lazy<T>ness are replaced with
an explicit two-part loading scheme.

Sequences are parsed immediately, without the need
for the sprite assets, and tell the SpriteCache
which frames they need. Use-cases that want the
actual sprites can then tell the SpriteCache to
load the frames and the sequences to resolve the
sprites.
This commit is contained in:
Paul Chote
2023-03-09 20:39:17 +00:00
committed by Gustas
parent 1f3403717b
commit c35ab081ff
21 changed files with 780 additions and 632 deletions

View File

@@ -67,7 +67,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
Console.WriteLine($"Testing default sequences for {tileset}");
var sequences = new SequenceProvider(modData.DefaultFileSystem, modData, tileset, null);
var sequences = new SequenceSet(modData.DefaultFileSystem, modData, tileset, null);
CheckSequences(modData, modData.DefaultRules, sequences);
}
@@ -165,7 +165,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
}
void CheckSequences(ModData modData, Ruleset rules, SequenceProvider sequences)
void CheckSequences(ModData modData, Ruleset rules, SequenceSet sequences)
{
foreach (var customSequencesPassType in modData.ObjectCreator.GetTypesImplementing<ILintSequencesPass>())
{