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
```
* fix(BytePatch): regression in world spawn bypass introduced in #2669
* fix(View/Network): session join options not updating after language change
* fix(RapidFire): prevent game from crashing by filling up the bullet pool
* refactor(Settings): don't save certain settings that users usually don't want to have enabled
* fix(CustomWeapons): render weapon names properly
* fix(reaction): names don't appear in chat
* Fixed nightclub ejecting the player if they had weapons equipped with Allow Weapons in Interiors on.
* Fix jittering weapons in the freakshop.
* Added all carmod shop scripts to prevent jittering in interiors.
+ World -> Gravity Editor (with presets for ease of use)
+ World -> Waypoint Beacon
+ World -> Objective Beacon
+ World -> Time And Weather -> Ground Snow
+ Self -> Mobile -> Request Gun Van (spawns the gun van right in front of you no matter where you are)
* Fixed edge case where a garage that contained only banned vehicles would show if the user was using Spawn Clone.
Refactored a large portion of the garage code to be production ready.
Formatting changes.
* Added singular garage items to the m_garage setter like the Terrorbyte.
* Fixed is_blacklisted_vehicle returning an inverted condition.
Fixed Garage drop-down not updating properly.
* Separated out m_garage's setter into a ctor function.
Replaced the 4 singular garages that use an overloaded index with a define to be able to shift them easier when new properties are added.
* Removed obsolete and incorrect player.character_slot config entry.
Removed deprecated local_player.hpp.
Added self::char_slot that is guaranteed to be correct.
* Removed extraneous semi-colon.
* Added more stuff to fillsnacks.
Removed more extraneous usages of MPPLY_LAST_MP_CHAR.
* Added the vehicle's name to player info.
* Fixed get_property_garage_size returning the incorrect size for the facility.
Fixed get_static_property_name returning the Nightclub's name instead of Nightclub Service Entrance to maintain consistency with the Mechanic.
Fixed garage_slot_iterator not starting and ending at the correct indexes.
* Shifted the singular properties down one to compensate for the new math.
* Fixed backwards math on Terrorbyte and Nightclub B1.
* Fixed garage not being updated when the player moved the vehicle.
* Fixed backwards comments.
* 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)
* Refactored weapons.bin into weapons.json for extensibility and human readability.
Added weapon attachments scraping from the meta files (currently is missing a lot of attachments, more than half, requires RPF reading refactoring to fix.)
Added Ammunation to Self -> Weapons, because it's vital you protect yourself, the patriotic way.
* Fixed weapons.xml not properly populating all the components.
Refactored buttons to use components::button.
* Refactored the Attachments code to implicitly trust that the attachments will be there now.
Added proper versioning to the weapons.json file.
Removed debug logging from gta_data_service.cpp.
* Fixed Ammunation buttons.
Added loading message for the new weapons.json system.
Fixed a bug where two components shared the same name, the user could not select the 2nd component.
Fixed Attachments displaying an attachment from a previous weapon if the user changed weapons.
* Fixed Tint Apply button not using the components::button template.
* fix(PlayerTP): Get Current only works once
* chore(README): removed features from TOC
* fix(ViewNetwork): SCTV join translation
* refactor: Use tunable service for no idle kick
* fix(Spoofing): check for valid model before spoofing
* feat(Spectate): Remove freeze and hide player blip
* fix(Spectate): case of chat not being visible as spectator.
* feat(Matchmaking): safer max search limit for match searching
* fix(Player/Toxic): Wanted Level small text translation