From 91ead5f0a8902bb934b9a76f43c5818c69f26639 Mon Sep 17 00:00:00 2001 From: Isaac Thoman <49598528+IsaacThoman@users.noreply.github.com> Date: Wed, 22 Jan 2025 16:13:42 -0500 Subject: [PATCH] square corners, better registering/unregistering --- src/app/game/game.component.ts | 6 ++-- src/app/pages/index.page.ts | 22 +++++++++++++- src/app/ui/browse.component.ts | 35 +++++++++++++--------- src/app/ui/menu.component.ts | 50 ++++++++++++++++++++------------ src/app/ui/settings.component.ts | 41 ++++++++++++++++---------- 5 files changed, 102 insertions(+), 52 deletions(-) diff --git a/src/app/game/game.component.ts b/src/app/game/game.component.ts index 3c86e38..8c8a126 100644 --- a/src/app/game/game.component.ts +++ b/src/app/game/game.component.ts @@ -17,9 +17,11 @@ export class GameComponent implements AfterViewInit { this.game = new Game(this.rendererContainer.nativeElement); this.game.start(); - // Listen to pointer lock changes document.addEventListener('pointerlockchange', () => { - this.pointerLockChange.emit(document.pointerLockElement === document.body); + const isLocked = document.pointerLockElement === document.body; + this.pointerLockChange.emit(isLocked); + + //document.body.requestPointerLock(); }); } } diff --git a/src/app/pages/index.page.ts b/src/app/pages/index.page.ts index 44c8c45..ee2f6c0 100644 --- a/src/app/pages/index.page.ts +++ b/src/app/pages/index.page.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, HostListener } from '@angular/core'; import { GameComponent } from '../game/game.component.ts'; import { MenuComponent } from '../ui/menu.component.ts'; @@ -15,7 +15,27 @@ import { MenuComponent } from '../ui/menu.component.ts'; export default class HomeComponent { showMenu = false; + // Add to class + @HostListener('document:keydown', ['$event']) + handleKeyboardEvent(event: KeyboardEvent) { + // Escape key shows menu + if (event.key === 'Escape') { + this.showMenu = true; + document.exitPointerLock(); + } + + // WASD locks pointer if menu is visible + if (['w', 'a', 's', 'd'].includes(event.key.toLowerCase()) && this.showMenu) { + this.showMenu = false; + document.body.requestPointerLock(); + } + } + + // Update pointer lock handler onPointerLockChange(isLocked: boolean) { this.showMenu = !isLocked; + if (!isLocked) { + document.exitPointerLock(); + } } } diff --git a/src/app/ui/browse.component.ts b/src/app/ui/browse.component.ts index d891d36..9a9c121 100644 --- a/src/app/ui/browse.component.ts +++ b/src/app/ui/browse.component.ts @@ -6,21 +6,28 @@ import { CommonModule } from '@angular/common'; standalone: true, imports: [CommonModule], template: ` -