Port Radial Menu Refactor - #364
Conversation
* it works! kinda * so it works now * minor cleanup * central button now is useful too * more cleanup * minor cleanup * more cleanup * refactor: migrated code from toolbox (as it was rejected as too specific) * feat: moved border drawing for radial menu into RadialMenuTextureButton. Radial menu position setting into was moved to OverrideArrange to not being called on every frame * refactor: major reworks! * renamed DrawBagleSector to DrawAnnulusSector * Remove strange indexing * Regularize math * refactor: re-orienting segment elements to be Y-mirrored * refactor: extracted radial menu radius multiplier property, changed color pallet for radial menu button * refactor: removed icon backgrounds on textures used in current radial menu buttons with sectors, RadialContainer Radius renamed and now actually changed control radius. * refactor: in RadialMenuTextureButtonWithSector all sector colors are converted to and from sRGB in property getter-setters * refactor: renamed srgb to include Srgb suffix so devs gonna see that its srgb clearly * fix: enabled any functional keys pressed when pushing radial menu buttons * fix: radial menu sector now scales with UIScale * fix: accept only one event when clicking on radial menu ContextualButton * fix: now radial menu buttons accepts only click/alt-click, now clicks outside menu closes menu always --------- Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru> Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
* it works! kinda * so it works now * minor cleanup * central button now is useful too * more cleanup * minor cleanup * more cleanup * refactor: migrated code from toolbox (as it was rejected as too specific) * feat: moved border drawing for radial menu into RadialMenuTextureButton. Radial menu position setting into was moved to OverrideArrange to not being called on every frame * refactor: major reworks! * renamed DrawBagleSector to DrawAnnulusSector * Remove strange indexing * Regularize math * refactor: re-orienting segment elements to be Y-mirrored * refactor: extracted radial menu radius multiplier property, changed color pallet for radial menu button * refactor: removed icon backgrounds on textures used in current radial menu buttons with sectors, RadialContainer Radius renamed and now actually changed control radius. * refactor: in RadialMenuTextureButtonWithSector all sector colors are converted to and from sRGB in property getter-setters * refactor: renamed srgb to include Srgb suffix so devs gonna see that its srgb clearly * fix: enabled any functional keys pressed when pushing radial menu buttons * fix: radial menu sector now scales with UIScale * fix: accept only one event when clicking on radial menu ContextualButton * fix: now radial menu buttons accepts only click/alt-click, now clicks outside menu closes menu always * feat: simple radial menu prototype for easier creation * refactor: cleanup, restored emote filtering, button models now have class hierarchy * refactor: remove usage of closure from 'outside code' * refactor: remove non existing type from UiControlTest * refactor: remove unused using * refactor: revert ability to declare radial menu layers in xaml, scale 32px sprites using scale in radial menu * refactor: whitespaces * refactor: subscribe for dispose on existing radial menus * feat: now simple radial menu button models can have custom color for each sector background (and hover background color). Also added OpenOverMouseScreenPosition inside SimpleRadialMenu * fix: AI door menu now can be closed by verb if it gets unpowered * refactor: simplify hiding border, extended xml-doc for simple radial menu settings * refactor: remove linq * fix: fix AI radial action serialization using invalid type * refactor: fix duplicate ShowDeviceNotRespondingPopup for AI by properly checking if it can interact * refactor: whitespaces, changed list to array in simple radial button preparing methods --------- Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru> Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
feat: now RCD can have recepies that are placed on the top level of radial menu - 'Main' category name is reserved for this Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
…ble in character select clothes.
…ter P for the pipe device is important it seems! Removes the virtual tag from the Radial Menu Button Base, to match parity with Wizden, and fix a virtual classes cannot be abstract error.
Adds the keybind down to both fields. Maybe this will fix the stack overflow? We don't have the IsClickOrAltClick function.
This reverts commit 7ca4a0f.
This reverts commit 54a5fe2. Apparently we are bootstrapping mirroring off the KeyBindDown, so that makes more sense now.
The radial refactor deleted RCDMenu, which the RPD picker embedded for its category radial. The interim rename made RPDMenu construct itself recursively and stack-overflow on open. The RPD BUI now builds the same button models as RCDMenuBoundUserInterface with the RPD atmos categories and feeds them to an embedded SimpleRadialMenu; the color strip is unchanged. Also restores the SPDX header dropped from RPDMenu.xaml.cs.
The ammo selector port renamed the C# loc key to ammo-selector-mode-selected without renaming the ftl entry, so the popup printed the raw key. Also drops a redundant Open() and duplicate Invalid check in the emotes controller and trailing whitespace.
|
For the sake of posterity and tracking I pushed two commits to fix the draft blockers. The RPD picker is rebuilt on SimpleRadialMenu: the BUI now builds the same button models as the RCD one with the RPD's atmos categories, and the color strip is untouched. The stack overflow was the interim rename making RPDMenu construct itself. Also restored the SPDX header on RPDMenu.xaml.cs, renamed the ammo selector ftl entry to match the new ammo-selector-mode-selected key (the popup was printing the raw key), and cleaned up a stray Open() in the emotes controller. UiControlTest passes again and the client builds. I have not done an in-game pass over every menu yet, so the new look still needs eyes before this leaves draft. |
|
Emotes, RPD, RCD, cards all seem to be working, and it is passing both linter and dotnet build. Will be taking out of draft for review/testing. |
About the PR
This PR ports the wizden radial menu refactor, various cleanups and fixes for it, and cherry-picks the work of sleepyyapril in fixes to the various radial menu changes.
The various prs that were cherry-picked:
space-wizards/space-station-14#32653
space-wizards/space-station-14#34639
space-wizards/space-station-14#36486
space-wizards/space-station-14#36690
TheDenSS14/TheDen#1874
rebaserHEAD has assisted with updating the RPD menu to the new system, and preserving our fork's addition of a pipe color selector as part of the menu.
Why / Balance
This refactor is a needed step for #238 to work as intended. (Emote wheel will display the actual allowed Emotes without needing to hard code them into the wheel.)
Additionally, this brings us to parity with wizden for this system.
Media
Please see original PRs.
Requirements
How to test
Breaking changes
(Pulled from the PRs:)
removed RadialMenuButton - was not used.
now RadialMenuTextureButton requires to be inside RadialContainer to work properly.
RadialMenuTextureButton.TargetLayer property is now of Control type, to get previous behaviour - use TargetLayerControlName property instead. Also consider using SimpleRadialMenu.
Changelog
🆑 Fildrance, SaphireLattice, eoineoineoin, Tayrtahn, sleepyyapril