conjure-os/frontend/src/utils/keyboard-manager.ts
2025-07-19 19:58:57 +00:00

41 lines
1.5 KiB
TypeScript

import { ControllerState } from "../models/controller-state";
import { CarouselKeyContext } from "./key-contexts/carousel-key-context";
import { KeyContext } from "./key-contexts/key-context";
import { OptionsKeyContext } from "./key-contexts/options-key-context";
import { SidebarKeyContext } from "./key-contexts/sidebar-key-context";
import { GamePreviewKeyContext } from "./key-contexts/game-preview-key-context";
export class KeyboardManager {
private static current?: KeyContext;
public static loaded = false;
static switchContext(name: 'sidebar' | 'carousel' | 'options' | 'preview') {
console.log("Switching context to " + name);
switch (name) {
case 'carousel':
this.current = new CarouselKeyContext();
break;
case 'sidebar':
this.current = new SidebarKeyContext();
break;
case 'preview':
this.current = new GamePreviewKeyContext();
break;
case 'options':
this.current = new OptionsKeyContext();
break;
default:
console.log("Unknown context key " + name);
break;
}
this.current?.setAvailableActions();
}
static handle(event: KeyboardEvent) {
this.current?.handleKey(event);
}
static handleState(controllerState: ControllerState) {
this.current?.handleState(controllerState);
}
}