abcdefg30
c095690619
Fix combined sequences using frames being broken
2023-07-01 12:56:50 +02:00
abcdefg30
ce7f9e71c1
DefaultSpriteSequence: Avoid an extra allocation and LINQ when adding shadow frames
2023-05-16 22:57:33 +03:00
abcdefg30
05f21fcbe2
DefaultSpriteSequence: Merge if statements for readability
2023-05-16 22:57:33 +03:00
abcdefg30
00f2ba1a53
DefaultSpriteSequence: Remove redundant modulo operations
...
frame is already bounded by length.Value
2023-05-16 22:57:33 +03:00
abcdefg30
991e0a4c9a
DefaultSpriteSequence: Use .Count == 0 over !.Any()
2023-05-16 22:57:33 +03:00
abcdefg30
aa28881726
DefaultSpriteSequence: Use List.Find instead of LINQ's FirstOrDefault
2023-05-16 22:57:33 +03:00
RoosterDragon
14c0d011ea
Fix SA1414
2023-04-08 16:51:51 +03:00
RoosterDragon
8a285f9b19
Fix IDE0090
2023-04-08 16:51:51 +03:00
RoosterDragon
83561d639d
Update LangVersion to C# 9.
...
mono was the bottleneck restricting our ability to use a newer C# version. mono 6.12 is currently available. Although poorly documented on their website, this supports C# 9. https://www.mono-project.com/docs/about-mono/versioning/#mono-source-versioning indicates mono 6.12 uses Roslyn 3.9.0. https://github.com/dotnet/roslyn/blob/main/docs/wiki/NuGet-packages.md#versioning indicates Roslyn 3.9.0 supports C# 9.
This unlocks C# 8 and C# 9 features previously unavailable to us.
- https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-80
- https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-9
A newer version of StyleCop is required to avoid rules tripping up on the new syntax. Currently only prerelease versions are available but their use is encouraged https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3420#issuecomment-994899135
Fix style rule violations on existing rules where the newer language version makes some existing casts redundant or allows use of the null coalescing assignment operator.
2023-04-05 15:27:41 +03:00
Paul Chote
3b0b15abb9
Reduce duplication and allocations around CalculateFrameIndices.
2023-03-10 20:11:33 +02:00
Paul Chote
c35ab081ff
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.
2023-03-10 20:11:33 +02:00
Paul Chote
a6f3db0a45
Allow all sprites to use interpolated facings.
2023-03-10 20:11:33 +02:00
Paul Chote
b051211842
Remove internal state from ISpriteSequence API.
2023-03-10 20:11:33 +02:00
Paul Chote
992ba1a9a2
Remove HasEmbeddedPalette from sequences.
2023-03-10 20:11:33 +02:00
RoosterDragon
8ee6957e6a
Fix IDE0048
2023-03-01 21:56:28 +02:00
RoosterDragon
0b01b73111
Fix IDE0060
2023-02-28 21:21:40 +02:00
RoosterDragon
d4135d608e
Fix IDE0039
2023-02-27 10:09:11 +01:00
Gustas
8d0fe52dd8
Remove unnecessary parentheses
2023-02-27 08:36:47 +02:00
Paul Chote
5b8f148c50
Simplify tileset-specific sequence definitions.
...
All magic behaviour for constructing sprite filenames
has been removed in favour of an explicit Filename
(and TilesetFilenames for tileset-specific sequences)
property.
2023-01-22 22:10:48 +02:00
Paul Chote
04c3cd6ec5
Reimplement sequence Defaults parsing:
...
The previous MiniYaml.Merge implementation interacted
poorly with yaml inheritance, making it complicated
(or impossible) to override certain keys from Defaults.
The new implementation is simpler: If a key is defined
it will be used. If it isn't, the default (if defined)
will be used. Defaults can be masked by making sure
the same key is defined (even with an empty value)
in the sequence.
This also fixes naming within the sequence code to
distinguish between images (a group of sequences),
sequences (defining a specific sprite/animation),
and filenames for a specific sprite/animation.
2023-01-22 22:10:48 +02:00
abcdefg30
5bf7fe852c
Remove the copyright year numbers
2023-01-11 11:58:54 +02:00
AspectInteractive2
a1a50d6c98
Added rotation logic to the renderer to enable the use of Interpolated Facings.
2022-07-17 17:03:53 +02:00
Paul Chote
c8df1e864c
Rework sequence docs plumbing.
2022-07-02 14:10:52 +03:00
Paul Chote
2037e37d4e
Replace Sequence EmbeddedPalette with HasEmbeddedPalette.
2022-07-02 14:10:52 +03:00
penev92
c3c5dbfa35
Unhardcoded SpriteSequence properties
...
To prepare them for documentation generation.
Also added descriptions to SpriteSequence implementations and their properties.
Also made a few code style fixes.
2022-06-26 15:41:19 +01:00
abcdefg30
6a31b1f9f3
Update the copyright header year
2022-05-28 00:35:10 -05:00
Eduardo Cáceres
7eb64ea6fc
Use read-only autoimplemented property when possible
2022-05-18 11:42:36 -05:00
Matthias Mailänder
0e7ad43425
Remove unused parameters.
2022-04-01 23:30:26 +02:00
Mustafa Alperen Seki
7e4c3acda3
Fix ZRamp only allowing integer values.
2022-03-02 19:41:49 +01:00
Paul Chote
be3412ee74
Fix depth offsets for sprite with non-zero ZRamp.
...
Bibs and other effects that should be drawn at ground level
can now simply define ZRamp: 1, Offset: <X>,<Y>,1, avoiding the
need to account for the Y offset or internal sprite offsets.
2021-08-20 20:17:55 +02:00
Andre Mohren
6810469634
Updated copyright years.
2021-06-29 18:33:21 -05:00
teinarss
10676be377
Replace F extension with string interpolation
2021-05-08 22:20:59 +02:00
teinarss
e12ff2c59d
Remove our own ReadOnlyDictionary and update usages
2021-04-03 11:33:31 +02:00
teinarss
4a1e4f3e16
Use expression body syntax
2021-03-07 13:00:52 +00:00
Paul Chote
0975102e92
Add Alpha support to sequences.
...
Alpha can specify a single value for the sequence
or values for each frame in the sequence.
AlphaFade: True can be specified to linearly fade
to transparent over the length of the animation.
2021-02-24 19:20:48 +01:00
Paul Chote
f6b40b2bce
Allow sequences to define a Scale factor.
2021-01-21 18:22:11 +01:00
Paul Chote
dd7b8b24af
Use tileset ID in sequences instead of the TileSet object.
2020-10-11 01:23:15 +02:00
Paul Chote
ad4d6eaec9
Improve --check-missing-sprites error handling.
2020-09-12 17:52:46 +02:00
Paul Chote
7803686aec
Rewrite sequence linting / missing file handling.
...
- Distinguish between missing sequences and missing sprites
- Lint default sequences as well as maps
- Improved performance
- Correctly handle null images
2020-09-12 17:52:46 +02:00
teinarss
27f1a7ab27
Use out var syntax
2020-08-19 18:11:07 +01:00
Paul Chote
ac7eda8ca2
Add support for rendering tinted artwork.
2020-07-13 14:02:02 +02:00
Paul Chote
c999b2d778
Convert QuantizeFacing to WAngle facings.
2020-05-28 21:23:51 +02:00
Paul Chote
bfb6c671fb
Change QuantizeFacing to return a facing instead of an index.
2020-05-28 21:23:51 +02:00
Paul Chote
361e2d463c
ISpriteSequence facing -> WAngle.
2020-05-09 10:20:23 -05:00
reaperrr
c10487d635
Move ClassicFacingFudge support to Mods.Cnc
...
This moves the TD/RA-specific re-mapping of sprite facings
and coordinates to Mods.Cnc.
2020-04-24 18:22:35 +02:00
reaperrr
eb007fc43c
Add Frames support to Combine
2020-02-27 18:44:34 +01:00
Paul Chote
2016ab105e
Fix Reverses parsing.
2020-02-23 16:41:57 +01:00
Paul Chote
def65b10bd
Don't crash with an unhelpful IndexOutOfRangeException.
2020-02-23 16:41:57 +01:00
Matthias Mailänder
2049d1b26a
Allow guessing of sprite sequence length from number of frames.
2020-02-23 16:41:57 +01:00
Matthias Mailänder
43cac2f051
Don't complain about shadow frame length when there are none.
2020-02-23 16:41:57 +01:00