* Content - change the (should-be-obsolete) DisposeAllChildren into the more robust RemoveAllChildren.
* Remove duplicate calls.
---------
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
* Make ghost roles collapsible
* Save `BodyVisible` state of each `Collapsible` box
* Make ghost role collapsible only when group has more than 1 role
* Make it a little prettier
* Make only ghost role buttons collapsible
* Apply requested changes
* Typo
* Small cleanup
* Store in list, instead of iterating
* Make unique ids more unique
* Move it out of the cycle
* Make _collapsibleBoxes into dictionary and use key instead of Collapsible boxes names
Added TODO. So after the problem will be fixed in `GhostRolesEui`, it should be mirrored and fixed here too.
* Put TODO in GhostRolesEui. I guess Issue must be made for this
* Use HashSet instead of Dictionary as suggested. Invert the HashSet, so being present means it uncollapsed
I decided to invert HashSet to _uncollapsedStates, because players surely will have more collapsed buttons than opened, so we optimise memory usage a little bit.
* Remove extra space from ghost roles window
* Add buttons stretching. Size 3:1
* Use new Subs.CVar helper
Removes manual config OnValueChanged calls, removes need to remember to manually unsubscribe.
This both reduces boilerplate and fixes many issues where subscriptions weren't removed on entity system shutdown.
* Fix a bunch of warnings
* More warning fixes
* Use new DateTime serializer to get rid of ISerializationHooks in changelog code.
* Get rid of some more ISerializationHooks for enums
* And a little more
* Apply suggestions from code review
Co-authored-by: 0x6273 <0x40@keemail.me>
---------
Co-authored-by: 0x6273 <0x40@keemail.me>