michaeldgg2
1a2d43fc99
WorldRenderer: use string.IsNullOrEmpty for check in Palette method
...
Unified usage of WorldRenderer.Palette method when it comes to appending player name (in case of player palette)
2023-07-25 13:33:11 +03:00
RoosterDragon
813d48dd70
Ensure save file is closed after saving.
...
If you attempt to load after saving, this prevents an exception from the file being "in use" due to the unclosed file handle.
2023-07-18 23:44:40 +02:00
RoosterDragon
4a02e6c6cc
Improve Exts.GetOrAdd method to avoid multiple lookups.
...
Use CollectionsMarshal to hold a ref to the dictionary entry. When the value needs to be added this allows us to set the value directly into it without having to locate the entry a second time.
2023-07-17 20:12:48 +02:00
RoosterDragon
d6a31bb0cc
MiniYaml performance tweaks.
...
- Seal the classes, and make SourceLocation a readonly struct.
- In ToDictionary, use TryAdd to avoid a try-catch.
- In Merge, use ToList to ensure sources is only enumerated once.
2023-07-17 20:12:48 +02:00
RoosterDragon
f5daa19a1c
Improve MiniYaml MergePartial performance.
...
- Track plain keys in a set, to avoid quadratic searches for plain node keys.
- Avoid the Concat iterator by looping twice instead.
2023-07-17 20:12:48 +02:00
RoosterDragon
a96e445e4d
Handle duplicate nodes key checks in MiniYaml in a better place.
...
Moving the key duplication check allows a redundant check on top-level nodes to be avoided. Add tests to ensure key checks are functioning as expected.
2023-07-17 20:12:48 +02:00
RoosterDragon
30b1f926f2
Improve performance of MiniYaml inheritance tree tracking.
...
Use an ImmutableDictionary to avoid having to clone the inheritance tree in ResolveInherits. This avoids a lot of dictionary clones.
2023-07-17 20:12:48 +02:00
RoosterDragon
58e8b123db
Avoid some allocations during loading.
...
- In FieldLoader, cache boxed bools and some boxed ints.
- In FieldLoader, presize collections when parsing a List, HashSet or Dictionary.
- In FieldLoader, don't allocate a list of missing items until required.
- In FieldLoader, when a string value is passed, avoid wrapping this in a MiniYaml object by allowing both strings and yaml to be passed in the GetValue overload that does the real work.
- In Animation, avoid allocating no-op actions.
- In VxlReader, use EnsureCapcity to better size the Dictionary.
- In VxlReader change VxlElement to a struct.
- In Locomotor, presize TerrainSpeeds dictionary.
2023-07-16 23:21:20 +02:00
RoosterDragon
be04d232c0
Avoid some allocations on the large object heap during loading.
...
- In MixFile, the Distinct call doesn't presize the HashSet it uses internally. As we know we will enumerate all results, create the HashSet ourselves so that is it presized correctly.
- In ObjectCreator, stream the assembly when hashing rather than reading all bytes into memory.
These changes avoid some allocations on the large object heap, in turn this means the GC can avoid performing unnecessary Gen 2 collections just to clear down the LOH.
2023-07-16 23:21:20 +02:00
Paul Chote
7f37454666
Include Linux DE in OS sysinfo string.
2023-07-13 14:34:38 +03:00
Vapre
edbded8f0a
PerfTickLogger, reduce overhead of logging long ticks.
2023-07-01 18:07:27 +02:00
RoosterDragon
0c32fca6c0
Fix slow saving of map previews.
...
Avoid quadratic behaviour when searching through actors by creating a dictionary lookup outside the loop.
2023-07-01 12:48:32 +02:00
RoosterDragon
4f3d8f4caa
Fix Png parsing.
...
A regression from 06df75ffee causes this parsing to fail depending on how the image was compressed.
2023-06-26 19:28:06 +02:00
RoosterDragon
231bf01f18
Fix CA1854
2023-06-20 17:57:40 +02:00
RoosterDragon
f752e04b03
Fix CA1816
2023-06-20 17:57:40 +02:00
RoosterDragon
a50e72f68d
Fix CA1802
2023-06-20 17:57:40 +02:00
RoosterDragon
0958197df2
Fix CA1052
2023-06-20 17:57:40 +02:00
RoosterDragon
f336a956cf
Fix CA1012
2023-06-20 17:57:40 +02:00
RoosterDragon
fa65e7fd3f
Bump Linguini.Bundle to 0.5.0.
...
This version contains performance improvements for the parser, improving the loading time of translations.
2023-06-15 17:48:37 +02:00
RoosterDragon
f794cf69f9
In TypeDictionary.TrimExcess, also TrimExcess on the internal data dictionary size.
...
As TypeDictionary instances tend to live a long time without edits after being initially populated, this will reduce their long term memory footprint.
2023-06-13 23:52:44 +02:00
Paul Chote
1f37728ecf
Return proper sysinfo OS names for Linux/macOS.
2023-06-11 13:18:49 +02:00
penev92
c0cd7259b3
Updated native dependencies NuGet packages
2023-06-11 10:41:02 +02:00
RoosterDragon
06df75ffee
Improve PNG parsing performance.
...
Switch on the filter once per row rather than once per byte. This allows each row to be processed with a much tighter loop.
2023-06-10 16:20:02 +02:00
RoosterDragon
f4af5c1764
Fix CA1852
2023-06-06 11:51:47 +03:00
RoosterDragon
277699cbd5
Fix CA1822
2023-06-06 11:51:47 +03:00
Matthias Mailänder
94abd8a928
Revert "Revert "Replace legacy Evaluator with IntegerExpressions.""
...
This reverts commit 4f16b0d464 .
2023-06-04 21:29:15 +03:00
RoosterDragon
300281695a
Deserialize mod rules only once when loading all maps.
...
This avoids loading, parsing and merging YAML rules for the mod during loading of each individual map. This saves significant time resolving custom rules on each map loaded.
2023-06-01 12:59:53 +02:00
Matthias Mailänder
5bcb1a678c
Fix fluent plural forms.
2023-06-01 12:43:10 +02:00
Matthias Mailänder
8a9426a0d4
Add a test case for Fluent plural forms.
2023-06-01 12:43:10 +02:00
Matthias Mailänder
b58a8aaa0f
Fix benchmark CSV export on non-US systems.
2023-05-28 23:11:25 +03:00
Matthias Mailänder
8433bc0948
Throw early when Lua function parameters are null.
2023-05-23 17:30:03 +03:00
abcdefg30
b5f5d5f9d5
Fix ScriptContext crashing without a WorldLoaded function
2023-05-21 13:11:17 +02:00
abcdefg30
f2b3a9f837
Fix ScriptContext crashing without a Tick function
2023-05-21 13:11:17 +02:00
Gustas
211f7160dc
Remove \r
...
we use \n everywhere else in the engine
2023-05-20 20:47:56 +03:00
Matthias Mailänder
445b736885
Replace sandbox wrapper scripts.
2023-05-20 13:19:48 +02:00
RoosterDragon
6d288aba2f
Track keys during MiniYaml Merge.
...
This improves performance by avoiding repeated linear scans over the nodes to match the keys.
2023-05-15 23:48:39 +02:00
Matthias Mailänder
65c0cf1065
Deprecate string format shorthand.
2023-05-05 19:03:09 +02:00
Matthias Mailänder
1c2ce0dcc0
Deprecate string format log shorthand.
2023-05-05 19:03:09 +02:00
Matthias Mailänder
e251126dd4
Remove unused log proxy.
2023-05-05 19:03:09 +02:00
Gustas
44f1af7059
Move TileScale to MapGrid
2023-05-02 16:37:30 +03:00
Nate Nichols
8f511a3bb6
Added ability to use Mouse 4 and Mouse 5 as hotkeys
2023-04-28 15:22:25 +03:00
Matthias Mailänder
4f7a01a291
Localize difficulty settings.
2023-04-25 21:33:02 +03:00
Matthias Mailänder
af6330b1bd
Allow localisation of dictionary values.
2023-04-25 21:33:02 +03:00
Matthias Mailänder
55ff0ac1f4
Inline variables.
2023-04-25 21:33:02 +03:00
Gustas
a9a7777293
Report linguini parse errors
...
Reports duplicate keys
2023-04-22 19:23:41 +02:00
Matthias Mailänder
68eec52cef
Add TranslationProvider
2023-04-22 19:23:41 +02:00
Gustas
a065e6a47c
Fix map level lobby options not being translated
2023-04-22 19:23:41 +02:00
Gustas
efe135e38b
Add Translations to MapPreview
2023-04-22 19:23:41 +02:00
Gustas
8f5d8de1c2
Allow empty translation keys
2023-04-22 19:23:41 +02:00
Matthias Mailänder
2867334c00
Less verbose logging for untranslated strings.
2023-04-22 19:23:41 +02:00