Skip to content

Commit 029d18b

Browse files
author
DavidQ
committed
Normalize overlay stacks for samples 1708 and 1710.
Standardize bottom-right placement and cycle behavior.
1 parent 4c36183 commit 029d18b

8 files changed

Lines changed: 93 additions & 47 deletions

File tree

docs/dev/CODEX_COMMANDS.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
MODEL: GPT-5.3-codex
22
REASONING: medium
33
COMMAND:
4-
Implement overlay stack mapping for sample 1713 using existing overlay system.
4+
Implement overlay normalization for samples 1708 and 1710.
5+
- Apply shared stack definition
56
- Enforce bottom-right anchor
6-
- Remove any Tab bindings
7-
- Ensure cycle key matches prior PR (17_52)
8-
- Validate ordering and rendering
9-
Package output ZIP to <project folder>/tmp/
7+
- Remove Tab bindings
8+
- Ensure cycle order consistency
9+
Package ZIP to <project folder>/tmp/

docs/dev/COMMIT_COMMENT.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
Align sample 1713 overlay stack to Final Reference Runtime.
2-
Enforce bottom-right placement and remove Tab key usage.
1+
Normalize overlay stacks for samples 1708 and 1710.
2+
Standardize bottom-right placement and cycle behavior.
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
[ ] Sample 1713 loads
2-
[ ] Bottom-right overlay placement correct
1+
[ ] Sample 1708 loads
2+
[ ] Sample 1710 loads
3+
[ ] Bottom-right placement correct
34
[ ] Cycle key works (non-Tab)
4-
[ ] Stack order matches spec
5+
[ ] Mini-Game Runtime renders
6+
[ ] Stack order consistent

docs/pr/BUILD_PR.md

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
1-
# BUILD_PR_LEVEL_17_53_DEBUG_OVERLAY_SAMPLE_1713_FINAL_REFERENCE_ALIGNMENT
1+
# BUILD_PR_LEVEL_17_55_DEBUG_OVERLAY_SAMPLE_1708_1710_STACK_NORMALIZATION
22

33
## Purpose
4-
Align Sample 1713 overlay stack to Final Reference Runtime and validate bottom-right positioning + cycle behavior (non-Tab key).
4+
Normalize overlay stacks for samples 1708 and 1710 with consistent bottom-right placement and correct cycling order.
55

66
## Scope
7-
- Sample 1713 overlay stack:
7+
- Samples: 1708, 1710
8+
- Stack:
89
- UI Layer
910
- Mission Feed
1011
- <...ADY>
11-
- Final Reference Runtime
12-
- Bottom-right anchor enforcement
13-
- Cycle key (non-Tab) verification
12+
- Mini-Game Runtime
13+
- Bottom-right anchor
14+
- Non-Tab cycle key validation
1415

1516
## Test Steps
16-
1. Load sample 1713
17-
2. Verify overlays render bottom-right
18-
3. Press cycle key → confirm correct order
19-
4. Confirm no Tab usage
17+
1. Load 1708 and 1710
18+
2. Verify bottom-right placement
19+
3. Cycle overlays → confirm order
20+
4. Confirm Mini-Game Runtime visibility
2021

2122
## Expected
22-
- Correct stack order
23-
- No overlay overlap issues
24-
- Stable cycling behavior
23+
- Identical stack behavior across both samples
24+
- Stable cycling
25+
- No Tab usage

samples/phase-17/1708/RealGameplayMiniGameScene.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,21 @@ import {
2828
setTabDebugOverlayMap,
2929
stepTabDebugOverlayController,
3030
} from '/samples/phase-17/shared/tabDebugOverlayCycle.js';
31+
import {
32+
MINI_GAME_DEBUG_CYCLE_KEY,
33+
OVERLAY_MINI_GAME_RUNTIME,
34+
OVERLAY_MISSION_FEED,
35+
OVERLAY_MISSION_READY,
36+
OVERLAY_UI_LAYER,
37+
createMiniGameOverlayCycleMap,
38+
} from '/samples/phase-17/shared/miniGameOverlayStack.js';
3139

3240
const theme = new Theme(ThemeTokens);
3341

3442
const READY_STATE = 'ready';
3543
const RUNNING_STATE = 'running';
3644
const WON_STATE = 'won';
3745
const LOST_STATE = 'lost';
38-
const DEBUG_CYCLE_KEY = 'KeyG';
39-
const OVERLAY_UI_LAYER = 'ui-layer';
40-
const OVERLAY_MISSION_FEED = 'mission-feed';
41-
const OVERLAY_MISSION_READY = 'mission-ready';
42-
const OVERLAY_MINI_GAME_RUNTIME = 'mini-game-runtime';
4346

4447
function clamp(value, min, max) {
4548
return Math.max(min, Math.min(max, value));
@@ -87,13 +90,8 @@ export default class RealGameplayMiniGameScene extends Scene {
8790
this.resetMatch({ toReady: true });
8891

8992
this.tabDebugOverlays = createTabDebugOverlayController();
90-
setTabDebugOverlayCycleKey(this.tabDebugOverlays, DEBUG_CYCLE_KEY);
91-
this.setDebugOverlayCycleMap([
92-
{ id: OVERLAY_UI_LAYER, label: 'UI Layer' },
93-
{ id: OVERLAY_MISSION_FEED, label: 'Mission Feed' },
94-
{ id: OVERLAY_MISSION_READY, label: 'MISSION READY' },
95-
{ id: OVERLAY_MINI_GAME_RUNTIME, label: 'Mini-Game Runtime' },
96-
], OVERLAY_UI_LAYER);
93+
setTabDebugOverlayCycleKey(this.tabDebugOverlays, MINI_GAME_DEBUG_CYCLE_KEY);
94+
this.setDebugOverlayCycleMap(createMiniGameOverlayCycleMap(), OVERLAY_UI_LAYER);
9795
}
9896

9997
addEvent(text) {

samples/phase-17/1710/RealGameplayMiniGameScene.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,21 @@ import {
2828
setTabDebugOverlayMap,
2929
stepTabDebugOverlayController,
3030
} from '/samples/phase-17/shared/tabDebugOverlayCycle.js';
31+
import {
32+
MINI_GAME_DEBUG_CYCLE_KEY,
33+
OVERLAY_MINI_GAME_RUNTIME,
34+
OVERLAY_MISSION_FEED,
35+
OVERLAY_MISSION_READY,
36+
OVERLAY_UI_LAYER,
37+
createMiniGameOverlayCycleMap,
38+
} from '/samples/phase-17/shared/miniGameOverlayStack.js';
3139

3240
const theme = new Theme(ThemeTokens);
3341

3442
const READY_STATE = 'ready';
3543
const RUNNING_STATE = 'running';
3644
const WON_STATE = 'won';
3745
const LOST_STATE = 'lost';
38-
const DEBUG_CYCLE_KEY = 'KeyG';
39-
const OVERLAY_UI_LAYER = 'ui-layer';
40-
const OVERLAY_MISSION_FEED = 'mission-feed';
41-
const OVERLAY_MISSION_READY = 'mission-ready';
42-
const OVERLAY_MINI_GAME_RUNTIME = 'mini-game-runtime';
4346

4447
function clamp(value, min, max) {
4548
return Math.max(min, Math.min(max, value));
@@ -87,13 +90,8 @@ export default class RealGameplayMiniGameScene extends Scene {
8790
this.resetMatch({ toReady: true });
8891

8992
this.tabDebugOverlays = createTabDebugOverlayController();
90-
setTabDebugOverlayCycleKey(this.tabDebugOverlays, DEBUG_CYCLE_KEY);
91-
this.setDebugOverlayCycleMap([
92-
{ id: OVERLAY_UI_LAYER, label: 'UI Layer' },
93-
{ id: OVERLAY_MISSION_FEED, label: 'Mission Feed' },
94-
{ id: OVERLAY_MISSION_READY, label: 'MISSION READY' },
95-
{ id: OVERLAY_MINI_GAME_RUNTIME, label: 'Mini-Game Runtime' },
96-
], OVERLAY_UI_LAYER);
93+
setTabDebugOverlayCycleKey(this.tabDebugOverlays, MINI_GAME_DEBUG_CYCLE_KEY);
94+
this.setDebugOverlayCycleMap(createMiniGameOverlayCycleMap(), OVERLAY_UI_LAYER);
9795
}
9896

9997
addEvent(text) {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
Toolbox Aid
3+
David Quesenberry
4+
04/16/2026
5+
miniGameOverlayStack.js
6+
*/
7+
export const MINI_GAME_DEBUG_CYCLE_KEY = 'KeyG';
8+
export const OVERLAY_UI_LAYER = 'ui-layer';
9+
export const OVERLAY_MISSION_FEED = 'mission-feed';
10+
export const OVERLAY_MISSION_READY = 'mission-ready';
11+
export const OVERLAY_MINI_GAME_RUNTIME = 'mini-game-runtime';
12+
13+
export function createMiniGameOverlayCycleMap() {
14+
return [
15+
{ id: OVERLAY_UI_LAYER, label: 'UI Layer' },
16+
{ id: OVERLAY_MISSION_FEED, label: 'Mission Feed' },
17+
{ id: OVERLAY_MISSION_READY, label: 'MISSION READY' },
18+
{ id: OVERLAY_MINI_GAME_RUNTIME, label: 'Mini-Game Runtime' },
19+
];
20+
}

tests/runtime/Phase17DebugOverlayBottomRightPosition.test.mjs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
import DoomRaycastSpritesScene from '../../samples/phase-17/1701/RaycastDemoScene.js';
1313
import TextureMaterialDemoScene from '../../samples/phase-17/1704/TextureMaterialDemoScene.js';
1414
import RealGameplayMiniGameScene from '../../samples/phase-17/1708/RealGameplayMiniGameScene.js';
15+
import RealGameplayMiniGame1710Scene from '../../samples/phase-17/1710/RealGameplayMiniGameScene.js';
1516
import GameplayMetricsTelemetryScene from '../../samples/phase-17/1712/GameplayMetricsTelemetryScene.js';
1617
import FinalReferenceGameScene from '../../samples/phase-17/1713/FinalReferenceGameScene.js';
1718

@@ -145,6 +146,31 @@ function assertSample1708CyclePlacement() {
145146
assertBottomRightFromTitle(runtimeTitle, 300, 120, 650, 410, 'Sample 1708 runtime overlay');
146147
}
147148

149+
function assertSample1710CyclePlacement() {
150+
const scene = new RealGameplayMiniGame1710Scene();
151+
scene.setCamera3D(createCameraStub());
152+
153+
const renderer = createRendererProbe();
154+
scene.render(renderer);
155+
const uiLayerTitle = findExactText(renderer, 'UI Layer');
156+
assertBottomRightFromTitle(uiLayerTitle, 326, 174, 624, 356, 'Sample 1710 UI Layer overlay');
157+
158+
scene.step3DPhysics(0.02, { input: makeInput(['Tab']) });
159+
scene.step3DPhysics(0.02, { input: makeInput([]) });
160+
const tabRenderer = createRendererProbe();
161+
scene.render(tabRenderer);
162+
const tabUiLayerTitle = findExactText(tabRenderer, 'UI Layer');
163+
assertBottomRightFromTitle(tabUiLayerTitle, 326, 174, 624, 356, 'Sample 1710 should ignore Tab and keep UI Layer overlay');
164+
165+
pressCycleKey(scene);
166+
pressCycleKey(scene);
167+
pressCycleKey(scene);
168+
const runtimeRenderer = createRendererProbe();
169+
scene.render(runtimeRenderer);
170+
const runtimeTitle = findExactText(runtimeRenderer, 'Mini-Game Runtime');
171+
assertBottomRightFromTitle(runtimeTitle, 300, 120, 650, 410, 'Sample 1710 runtime overlay');
172+
}
173+
148174
function assertSample1712TelemetryPlacement() {
149175
const scene = new GameplayMetricsTelemetryScene();
150176
scene.setCamera3D(createCameraStub());
@@ -174,6 +200,7 @@ export function run() {
174200
assertSample1701RuntimePanelPlacement();
175201
assertSample1704StackedPanelPlacement();
176202
assertSample1708CyclePlacement();
203+
assertSample1710CyclePlacement();
177204
assertSample1712TelemetryPlacement();
178205
assertSample1713FinalRuntimePlacement();
179206
}

0 commit comments

Comments
 (0)