41 lines
1.5 KiB
TypeScript
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);
|
|
}
|
|
} |