diff --git a/module.js b/module.js index 1d91a10..97e67e8 100644 --- a/module.js +++ b/module.js @@ -199,14 +199,6 @@ Hooks.once("ready", () => { portraitFallbackHandler = new PortraitFallbackHandler(adapter, playerPrivacyManager); portraitFallbackHandler.init(); - // Story 3.2: Create StripOverlayLayer (shared infrastructure for UI components) - stripOverlayLayer = new StripOverlayLayer(adapter); - stripOverlayLayer.init(); - - // Story 3.2: Create ConfirmationBar for preset apply feedback - confirmationBar = new ConfirmationBar(adapter, visibilityManager, socketHandler, stripOverlayLayer); - confirmationBar.init(); - // Story 3.2: Register updateScene hook for auto-apply adapter.hooks.on('updateScene', (scene) => { if (adapter.users.isGM()) { @@ -239,7 +231,17 @@ Hooks.once("ready", () => { roleRenderer.init(); if (adapter.users.isGM() && game.webrtc !== null) { roleRenderer.openStrip(); + + // Story 3.2: Create StripOverlayLayer AFTER ScryingPoolStrip is created + // (ScryingPoolStrip is created lazily in roleRenderer.openStrip() above) + stripOverlayLayer = new StripOverlayLayer(adapter); + stripOverlayLayer.init(); + + // Story 3.2: Create ConfirmationBar for preset apply feedback (GM only) + confirmationBar = new ConfirmationBar(adapter, visibilityManager, socketHandler, stripOverlayLayer); + confirmationBar.init(); } + if (!adapter.users.isGM()) { visibilityBadge = new VisibilityBadge(stateStore, scryingPoolController, avTileAdapter, adapter); visibilityBadge.init();