diff --git a/assets/Data/entity/items/debug_tools.json b/assets/Data/entity/items/debug_tools.json index ed18cf3f..3f54cde8 100644 --- a/assets/Data/entity/items/debug_tools.json +++ b/assets/Data/entity/items/debug_tools.json @@ -204,8 +204,12 @@ "path" : "Models/basic/geometry/unitvector.glb" } }, + "primaryUsage" : { + "clientHook" : "ROOM_TOOL_ACTION", + "suppressServerRequest": true + }, "secondaryUsage" : { - "clientHook" : "SELECT_ROOM", + "clientHook" : "ROOM_TOOL_MENU", "suppressServerRequest": true }, "collidable": { diff --git a/assets/Data/menu/room/roomToolConfig.html b/assets/Data/menu/room/roomToolConfig.html new file mode 100644 index 00000000..9945be1f --- /dev/null +++ b/assets/Data/menu/room/roomToolConfig.html @@ -0,0 +1,20 @@ + +
+

Room Tool Menu!

+ + + + + +
\ No newline at end of file diff --git a/assets/Scripts/client/clienthooks.ts b/assets/Scripts/client/clienthooks.ts index 4470d672..51c7ae07 100644 --- a/assets/Scripts/client/clienthooks.ts +++ b/assets/Scripts/client/clienthooks.ts @@ -61,10 +61,16 @@ export const clientHooks: Hook[] = [ } }, { - signal: "SELECT_ROOM", + signal: "ROOM_TOOL_ACTION", callback: (engine: Engine) => { engine.classes.areaUtils.static.selectAreaRectangular() } }, + { + signal: "ROOM_TOOL_MENU", + callback: (engine: Engine) => { + engine.classes.menuUtils.static.openDialog('Data/menu/room/roomToolConfig.html') + } + }, clientUIButtonHook, ] \ No newline at end of file diff --git a/assets/Scripts/client/uihooks.ts b/assets/Scripts/client/uihooks.ts index f5b35bee..f12557eb 100644 --- a/assets/Scripts/client/uihooks.ts +++ b/assets/Scripts/client/uihooks.ts @@ -1,3 +1,4 @@ +import { GLOBAL_SCENE_ID } from "/Scripts/engine/hooks/hook-manager"; import { Engine } from "/Scripts/types/engine"; import { Hook } from "/Scripts/types/hook"; @@ -10,6 +11,8 @@ export const clientUIButtonHook: Hook = callback: (engine: Engine, data: string) => { if(data.length > 4 && data.substring(0,9) === "openDiag("){ engine.classes.menuUtils.static.openDialog(data.substring(9,data.length - 1)) + } else if(data.length > 4 && data.substring(0,5) === "hook("){ + engine.hookManager.fireSignal(GLOBAL_SCENE_ID,data.substring(5,data.length - 1)) } else { console.log("button clicked " + data) } diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 0998defc..07b92c91 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1830,6 +1830,7 @@ Move engine flags under engineState Move rendering flags under renderingEngine Move database connection into serverState Move more services into engineState +Room tool functionality scaffolding diff --git a/src/main/java/electrosphere/client/ui/menu/dialog/DialogMenuGenerator.java b/src/main/java/electrosphere/client/ui/menu/dialog/DialogMenuGenerator.java index 7480108d..f9161548 100644 --- a/src/main/java/electrosphere/client/ui/menu/dialog/DialogMenuGenerator.java +++ b/src/main/java/electrosphere/client/ui/menu/dialog/DialogMenuGenerator.java @@ -66,7 +66,8 @@ public class DialogMenuGenerator { rVal.setParentAlignItem(YogaAlignment.Center); rVal.setParentJustifyContent(YogaJustification.Center); rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){ - WindowUtils.recursiveSetVisible(Globals.elementService.getWindow(WindowStrings.NPC_DIALOG), false); + WindowUtils.closeWindow(WindowStrings.NPC_DIALOG); + Globals.controlHandler.hintUpdateControlState(ControlsState.MAIN_GAME); return false; }}); diff --git a/src/main/java/electrosphere/controls/ControlHandler.java b/src/main/java/electrosphere/controls/ControlHandler.java index c31b8426..dcaaa455 100644 --- a/src/main/java/electrosphere/controls/ControlHandler.java +++ b/src/main/java/electrosphere/controls/ControlHandler.java @@ -99,6 +99,7 @@ public class ControlHandler { WindowStrings.WINDOW_MENU_INGAME_MAIN, WindowStrings.WINDOW_MENU_INVENTORY, WindowStrings.WINDOW_MENU_MAIN, + WindowStrings.NPC_DIALOG, };