Multiplayer
Multiplayer copied to clipboard
Fix for #539 and refactor async quest management into modular system
Hey, The work is still in progress, but I'm opening this draft PR to avoid losing any changes — and in case someone else wants to pick it up. I'm pausing contributions for now and will check back in once Zetrith returns. 👍
Fix #539: Resolved the issue in the quest cache system by introducing a removal list that's processed after each async tick on the map.
And I started refactoring the async quest handling with the following goals in mind:
- Removed reliance on static quest cache data.
- Reorganized logic into non-static classes for better maintainability.
- Added a QuestManagerAsync, modeled after RimWorld’s source code.
- Abstracted the dependency on AsyncTimeComp via an interface — with the idea that time handling might eventually be tied to factions or players across maps.
- Simplified and clarified some complex LINQ queries.
- Aimed to make the code more expressive and easier to follow.
- Added TODOs for potential problems discovered during testing.
Cheers! :)