The main goal was improving the readability of the original code however some ugliness remains.
- Swapped from pointer singleton to instance singleton
- Actually make use of the alpha logic that used to be present
- Added a counter to notifications to indicate if something is being spammed
- Notification timeouts reset if they're sent to the queue again
Why? Shorter to write and removes the macro usage
I used the following regex to find all occurrences:
```r
RAGE_JOAAT\("(.*?)"\)
```
then the following to replace it all:
```r
"$1"_J
```
* Keep Vehicle Repaired now uses CDecalManager to remove damage decals which allows it to ignore clan and livery decals.
* Added more conditions to call SET_VEHICLE_FIXED to fix things like the R88 breaking its shell off.
Fixed Seatbelt having inverted conditions.
* Fixed keep_vehicle_repaired repairing things it doesn't need to repair if godmode/always clean is on already.
Fixed spawn_vehicle_json not applying the radio station.
* Consolidated signature for CDecalMgr::ClearDecals and its static instance.
* feat(vscode): added launch.json to dbg
* feat(file_manager): Make use of a global instance
* feat(file_manager): Allow for file and folder instances to be empty
* refactor(GlobalsService): Update code of global service (untested)
* feat(native_hooks): removed useless bail kick hook
* feat(Translations): add button to force update languages
* refactor: reorganize GUI for world
* refactor: improve exception handler
Modified the exception handler to not catch C++ try/catch blocks before those could gracefully catch the error.
* chore: debug removed crash test button
* chore: removed script exception handler
* feat(OrbitalDrone): add translations
* feat(VehicleController): add translation keys
* feat: added player admin detected translation keys
* feat(Views): add cache sub menu
* fix(HandlingService): Correctly apply profile from storage
* fix(HandlingService): Name inconsistency in UI
* feat(HandlingService): Convert old handling profiles