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,
};