Made `RagfairRequiredItemService` a singleton
Made `RagfairRequiredItemService ` store offerIds instead of offer objects, reducing memory footprint
Reworked `GetOffersThatRequireItem` to work with `RagfairRequiredItemService` changes
Moved `GenerateDynamicOffers` to run after garbage colelction, this means GC will work on memory prior to new offers being added but after stale offers are removed
Made `PaymentHelper` a singleton + Store currency tpls in a hashset instead of list
Comment improvements
* Rename `Assets` to `SPT_Data`
* Added GZ 20+ variant to repeatable quest system #395
* Repeatable code cleanup
* Removed PMC level check for repeatable Quest pool generation #395
they will always generate for both GZ variants
* Rename `Assets` to `SPT_Data`
---------
Co-authored-by: Chomp <dev@dev.sp-tarkov.com>
* Further async changes
- SaveServer & Backup Server are now async
- Anything that ties in with SaveServer saving (Such as callbacks) are now async
- Various async util methods added
- Removed two wrapper methods and switched code over to use the actual method
* Update test
* Move Router, Callbacks and GetResponse over to ValueTask
* Assign empty deserializedObject for now, keep todo
* Cleanup GetResponse
* Re-add logger for request
We no longer remove old websocket connections
Converted `SptWebSocketConnectionHandler` to use a primary constructor
Removed websocket monitor from `SptWebSocketConnectionHandler`
* Added safety checks around dictionary lookups for Areas Stages
* Added lots of debug logs for websocket handling
* Removed debug comments
---------
Co-authored-by: Alex <alex@dm-me-for-questions.com>
* Removed ConcurrentDictionary in favor of locked dictionary, and added reconnection behaviour to OnConnection
* Refactored code to handle multiple ws connected at the same time and offer graceful disconnection of appropriate sockets
* removed unused usings
---------
Co-authored-by: Alex <clodanSPT@hotmail.com>
Co-authored-by: Chomp <27521899+chompDev@users.noreply.github.com>