* Add parsing for arrays of values via ValueArray<T>.
* oops forgot command description
* add valarr to engine toolshed perms, fix stupidness, remove useless code in parser
* make optional not suck
* support for skipping optional parameters
* Switch to List<T> because I'm dumb and that just works™
* remove optional stuff to separate into its own PR
* Remove ValArr command
`valarr int [ 1, 2 ]` can just be replaced with ` val List<int> [ 1, 2 ]` or ` val int[] [ 1, 2 ]`
* Fix namespace
* Add support for array parsing
* Make ListTypeParser output nullable
* Pass ListLengthAttribute in the CommandArgument struct
The current method of trying to fetch the attribute for argument doesn't actually work. i.e., the argIndex calculation isn't always correct. This is still kinda janky and I hate it, but it should work better.
* Fix empty list parsing, add tests
* rename flag, and clarify description
* More tests
---------
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
* Move MapManager queries to SharedMapSystem
Moves all variants of FindGridsIntersecting/TryFindGridAt to SharedMapSystem
Hollows out the MapManager methods and converts them into relays to SharedMapSystem
* Move CreateGrid to SharedMapSystem
Moves the functionality for CreateGrid and its variants to SharedMapSystem
Hollows out the MapManager methods and converts them into relays for the SharedMapSystem methods
Obsoletes them too
Also moves over the GetAllMapGrids and GetAllGrids methods
* Move RaiseOnTileChanged to SharedMapSystem
Also moves the SuppressOnTileChanged flag member to SharedMapSystem
Hollows out and obsoletes the MapManager versions
* Move default value constants to SharedMapSystem
* Converts map pausing events into LocalizedEntityCommands
* Move MapManager related delegates/structs to SharedMapSystem
Moves the GridCreationOptions struct to the same namespace as SharedMapSystem and converts it into a record struct
Move the GridCallback delegates to the same namespace as SharedMapSystem
* Move CullDeletionHistory to SharedMapSystem
Well, that was less painful than I thought it would be
* Actually obsolete the NetworkedMapManager method
* Rename file
* Doc comments for new SharedMapSystem methods
* Doc comment
* Doc comments
* Fix access
* Purge all references to IMapManagerInternal
* Cull easy IMapManager references
* The rest
* Purge IMapManager
* Private internal FindGridsIntersecting method
* please die
* 41
* notes
---------
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
* [Dependency] source generator
No more reflection, no more codegen at runtime
Also various changes to Roslyn helpers to make this easier to write.
Requires all types with dependencies to be partial and not have readonly dependency fields. An analyzer enforces this at warning level, the previous injection strategies have remained in the code *for now* as a fallback.
No fallback is available for [field: Dependency] properties, due to a Roslyn bug.
Code Fixes exist. We love Roslyn
* Apply dependencies generator changes to all code
* Release notes
* Preprocessor got hands
* Handle nullable dependencies
These are bad but gotta deal with it.
* Apply suggestions from code review
Co-authored-by: Moony <moony@hellomouse.net>
* Fine, let's not use collection expressions
---------
Co-authored-by: Moony <moony@hellomouse.net>
* Make EntitySystemManager.DependencyCollection inject EntityQuery
* Make BUIs inject systems and entity queries
* Fix import
* We parallelize those
* RIDER I BEG YOU
* Mocked unit tests are my passion
* Perhaps we do not care about fractional milliseconds
* Forgor to make it debug only
* Use Parallel.For instead of ForEach
* Rider I am going to become the joker
* Fix EntMan resolve
* Now with lazy resolve technology
* Use GetOrAdd
Apparently cheat clients have figured out that none of SS14's code does validation against NaN inputs. Uh oh.
IRobustSerializer can now be configured to remove NaN values when reading. This is intended to be set on the server to completely block the issue.
Added "Unsafe" float types that can be used to bypass the new configurable behavior, in case somebody *really* needs NaNs.
An alternative option was to make a "SafeFloat" type, and only apply the sanitization to that. The problem is that would require updating hundreds if not thousands of messages in SS14, and probably significantly confuse contributors on "when use what." Blocking NaNs by default is likely to cause little issues while ensuring the entire exploit is guaranteed impossible.
* WebSocket-based data transfer system
* Move resource downloads/uploads to the new transfer system
Should drastically increase the permitted practical size
* Transfer impl for Lidgren
* Async impl for receive stream
* Use unbounded channel for Lidgren
* Add metrics
* More comments
* Add serverside stream limit to avoid being a DoS vector
* Fix tests
* Oops forgot to actually implement sequence channels in NetMessage
* Doc comment for NetMessage.SequenceChannel
* Release notes