Skip to content

Commit c48a823

Browse files
author
DavidQ
committed
Polish real gameplay sample into a complete mini-game with UI, feedback, and full game loop.
PR: BUILD_PR_LEVEL_17_40_SAMPLE_1710_REAL_GAMEPLAY_POLISH
1 parent dc25ce7 commit c48a823

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

samples/phase-17/1709/MovementModelsLabScene.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -295,17 +295,24 @@ export default class MovementModelsLabScene extends Scene {
295295
);
296296
this.drawFacingIndicator(renderer, cameraState, projectionViewport);
297297

298-
renderer.drawRect(52, 34, 360, 138, 'rgba(15, 23, 42, 0.76)');
299-
renderer.strokeRect(52, 34, 360, 138, '#4ade80', 1);
300-
renderer.drawText('Movement Lab HUD', 64, 52, { color: '#86efac', font: '12px monospace' });
301-
renderer.drawText(`Movement Mode: ${formatMode(this.movementMode)}`, 64, 74, {
298+
const canvasSize = renderer.getCanvasSize?.() || { width: 960, height: 540 };
299+
const hudWidth = 360;
300+
const hudHeight = 138;
301+
const hudX = Math.max(12, canvasSize.width - hudWidth - 22);
302+
const hudY = Math.max(12, canvasSize.height - hudHeight - 18);
303+
const hudTextX = hudX + 12;
304+
305+
renderer.drawRect(hudX, hudY, hudWidth, hudHeight, 'rgba(15, 23, 42, 0.76)');
306+
renderer.strokeRect(hudX, hudY, hudWidth, hudHeight, '#4ade80', 1);
307+
renderer.drawText('Movement Lab HUD', hudTextX, hudY + 18, { color: '#86efac', font: '12px monospace' });
308+
renderer.drawText(`Movement Mode: ${formatMode(this.movementMode)}`, hudTextX, hudY + 40, {
302309
color: '#f8fafc',
303310
font: '14px monospace',
304311
});
305-
renderer.drawText(`Input: ${this.lastInputSummary}`, 64, 94, { color: '#e2e8f0', font: '12px monospace' });
306-
renderer.drawText(`Speed: ${this.lastSpeed.toFixed(2)} units/s`, 64, 112, { color: '#e2e8f0', font: '12px monospace' });
307-
renderer.drawText(`Heading: ${this.actor.heading.toFixed(2)} rad`, 64, 130, { color: '#e2e8f0', font: '12px monospace' });
308-
renderer.drawText(`Camera follow mode: ${this.viewState.cameraMode}`, 64, 148, { color: '#e2e8f0', font: '12px monospace' });
312+
renderer.drawText(`Input: ${this.lastInputSummary}`, hudTextX, hudY + 60, { color: '#e2e8f0', font: '12px monospace' });
313+
renderer.drawText(`Speed: ${this.lastSpeed.toFixed(2)} units/s`, hudTextX, hudY + 78, { color: '#e2e8f0', font: '12px monospace' });
314+
renderer.drawText(`Heading: ${this.actor.heading.toFixed(2)} rad`, hudTextX, hudY + 96, { color: '#e2e8f0', font: '12px monospace' });
315+
renderer.drawText(`Camera follow mode: ${this.viewState.cameraMode}`, hudTextX, hudY + 114, { color: '#e2e8f0', font: '12px monospace' });
309316

310317
drawPanel(renderer, 620, 34, 300, 188, 'Movement Runtime', [
311318
`Mode: ${formatMode(this.movementMode)}`,

0 commit comments

Comments
 (0)