* feat: New Condition APIs
- New methods for `ICondition`:
- `AnyExcept` ensures the listed conditions are *not* present.
- `OnlyAny` ensures that *only* the listed conditions are met.
- `EqualTo` ensures that the condition state matches the listed set.
- New `IsGameIdle` method in `IClientState` can be used to check if the player is not in any "active" game state.
* wip
* hacky fix for overlapping event text in profiler
* move IsResumeGameAfterPluginLoad logic to PluginManager
* fix some warnings
* handle exceptions properly
* remove ability to cancel, rename button to "hide" instead
* undo Dalamud.Service refactor for now
* warnings
* add explainer, show which plugins are still loading
* add some text if loading takes more than 3 minutes
* undo wrong CS merge
* feat: Add new `.GetMapCoordinates` extension method
- Used to easily resolve player-friendly map coordinates for any GameObject.
* feat: Add MapID to ClientState
- Provides easy access to the player's current map ID
* Hide scheduler from RunOnFrameworkThread
Creating new tasks via Task.Run and alike would fetch the current
scheduler, which we do not want in case of running stuff from the
framework thread. Change is to prevent the standard library from seeing
the "current scheduler". If one wants to use `await` with an async
function to be run in the framework thread, one can use
`RunOnFrameworkThreadAwaitable` instead now.
* TaskSchedulerWidget: test better stuff
* TaskSchedulerWidget: add freeze tests
* More comments
* Make TaskFactory a getter method instead of property to avoid bad suggestions
* Why are there stuff still not pushed
As some public properties of `IGameConfig` are being set on the first
`Framework` tick, there was a short window that those properties were
null, which goes against the interface declaration.
This commit fixes that, by making those properties block for the full
initialization of the class.
A possible side effect is that a plugin that is set to block the game
from loading until it loads will now hang the game if it tries to access
the game configuration from its constructor, instead of throwing a
`NullReferenceException`. As it would mean that the plugin was buggy at
the first place and it would have sometimes failed to load anyway, it
might as well be a non-breaking change.