From 58fa523c52a148aca8269825ca64971e1e609832 Mon Sep 17 00:00:00 2001 From: evanpelle Date: Fri, 25 Jul 2025 17:17:38 -0700 Subject: [PATCH] move ally button back to root radial (#1575) ## Description: The ally slot was removed in v24, add it back ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I process any text displayed to the user through translateText() and I've added it to the en.json file - [x] I have added relevant tests to the test directory - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I have read and accepted the CLA agreement (only required once). ## Please put your Discord username so you can be contacted if a bug or regression is found: evan --- src/client/graphics/layers/MainRadialMenu.ts | 12 +++++++----- src/client/graphics/layers/RadialMenu.ts | 18 +++--------------- .../graphics/layers/RadialMenuElements.ts | 19 ++++++++++++++----- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/client/graphics/layers/MainRadialMenu.ts b/src/client/graphics/layers/MainRadialMenu.ts index 7933ec702..e3822de4b 100644 --- a/src/client/graphics/layers/MainRadialMenu.ts +++ b/src/client/graphics/layers/MainRadialMenu.ts @@ -17,7 +17,7 @@ import { centerButtonElement, COLORS, MenuElementParams, - rootMenuItems, + rootMenuElement, } from "./RadialMenuElements"; import swordIcon from "../../../../resources/images/SwordIconWhite.svg"; @@ -56,7 +56,12 @@ export class MainRadialMenu extends LitElement implements Layer { `, }; - this.radialMenu = new RadialMenu(this.eventBus, menuConfig); + this.radialMenu = new RadialMenu( + this.eventBus, + rootMenuElement, + centerButtonElement, + menuConfig, + ); this.playerActionHandler = new PlayerActionHandler( this.eventBus, @@ -64,13 +69,10 @@ export class MainRadialMenu extends LitElement implements Layer { ); this.chatIntegration = new ChatIntegration(this.game, this.eventBus); - - this.radialMenu.setRootMenuItems(rootMenuItems, centerButtonElement); } init() { this.radialMenu.init(); - this.radialMenu.setRootMenuItems(rootMenuItems, centerButtonElement); this.eventBus.on(ContextMenuEvent, (event) => { const worldCoords = this.transformHandler.screenToWorldCoordinates( event.x, diff --git a/src/client/graphics/layers/RadialMenu.ts b/src/client/graphics/layers/RadialMenu.ts index a64c157e3..b8e26af9f 100644 --- a/src/client/graphics/layers/RadialMenu.ts +++ b/src/client/graphics/layers/RadialMenu.ts @@ -44,13 +44,11 @@ export class RadialMenu implements Layer { private currentLevel: number = 0; // Current menu level (0 = main menu, 1 = submenu, etc.) private menuStack: MenuElement[][] = []; // Stack to track menu navigation history private currentMenuItems: MenuElement[] = []; // Current active menu items (changes based on level) - private rootMenuItems: MenuElement[] = []; // Store the original root menu items private readonly config: RequiredRadialMenuConfig; private readonly backIconSize: number; private centerButtonState: CenterButtonState = "default"; - private centerButtonElement: CenterButtonElement | null = null; private isTransitioning: boolean = false; private lastHideTime: number = 0; @@ -79,6 +77,8 @@ export class RadialMenu implements Layer { constructor( private eventBus: EventBus, + private rootMenu: MenuElement, + private centerButtonElement: CenterButtonElement, config: RadialMenuConfig = {}, ) { this.config = { @@ -904,18 +904,6 @@ export class RadialMenu implements Layer { return this.currentLevel; } - public setRootMenuItems( - items: MenuElement[], - centerButton: CenterButtonElement, - ) { - this.currentMenuItems = [...items]; - this.rootMenuItems = [...items]; - this.centerButtonElement = centerButton; - if (this.isVisible) { - this.refreshMenu(); - } - } - public setParams(params: MenuElementParams) { this.params = params; } @@ -928,7 +916,7 @@ export class RadialMenu implements Layer { this.currentLevel = 0; this.menuStack = []; - this.currentMenuItems = [...this.rootMenuItems]; + this.currentMenuItems = this.rootMenu.subMenu!(this.params!); this.navigationInProgress = false; diff --git a/src/client/graphics/layers/RadialMenuElements.ts b/src/client/graphics/layers/RadialMenuElements.ts index 693ff7526..952e45a4c 100644 --- a/src/client/graphics/layers/RadialMenuElements.ts +++ b/src/client/graphics/layers/RadialMenuElements.ts @@ -433,8 +433,17 @@ export const centerButtonElement: CenterButtonElement = { }, }; -export const rootMenuItems: MenuElement[] = [ - infoMenuElement, - boatMenuElement, - buildMenuElement, -]; +export const rootMenuElement: MenuElement = { + id: "root", + name: "root", + disabled: () => false, + icon: infoIcon, + color: COLORS.info, + subMenu: (params: MenuElementParams) => { + let ally = allyRequestElement; + if (params.selected?.isAlliedWith(params.myPlayer)) { + ally = allyBreakElement; + } + return [infoMenuElement, boatMenuElement, ally, buildMenuElement]; + }, +};