summaryrefslogtreecommitdiffstats
path: root/src/view/input
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2018-12-08 12:39:18 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2018-12-08 12:39:18 +0100
commitb3950330e3351437f153c6c1debb3821d6e28864 (patch)
tree0b381b523045bd59cd679825a11976a45813fc24 /src/view/input
parent439dcf391784ea3abb61473c74b9c27fcd9fdc2d (diff)
downloadrpgedit-b3950330e3351437f153c6c1debb3821d6e28864.tar
rpgedit-b3950330e3351437f153c6c1debb3821d6e28864.zip
Create Electron app
Diffstat (limited to 'src/view/input')
-rw-r--r--src/view/input/gameinput.ts78
-rw-r--r--src/view/input/inputhandler.ts44
2 files changed, 0 insertions, 122 deletions
diff --git a/src/view/input/gameinput.ts b/src/view/input/gameinput.ts
deleted file mode 100644
index 67fbe0c..0000000
--- a/src/view/input/gameinput.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { InputHandler } from './inputhandler';
-
-import { Listenable } from '../../util';
-
-import { vec2 } from 'gl-matrix';
-
-export enum ButtonCode {
- Action,
- Back,
- Menu,
-}
-
-const buttonMapping: Record<string, ButtonCode> = {
- KeyZ: ButtonCode.Action,
- KeyX: ButtonCode.Back,
- KeyC: ButtonCode.Menu,
-};
-
-export interface DirectionInput {
- type: 'direction';
- direction: vec2;
-}
-
-export interface ButtonInput {
- type: 'button';
- button: ButtonCode;
-}
-
-export type GameInput = DirectionInput | ButtonInput;
-
-export class GameInputHandler extends Listenable<[GameInput]> {
- private readonly input: InputHandler;
-
- constructor() {
- super();
-
- this.input = new InputHandler(
- new Set([
- 'ArrowLeft',
- 'ArrowUp',
- 'ArrowRight',
- 'ArrowDown',
- ...Object.keys(buttonMapping),
- ]));
-
- this.input.addListener((key: string, pressed: boolean) => {
- const button = buttonMapping[key];
- if (button !== undefined) {
- if (pressed)
- this.runListeners({
- type: 'button',
- button,
- });
-
- return;
- }
-
- const dir = vec2.create();
-
- if (this.input.has('ArrowLeft'))
- vec2.add(dir, dir, [-1, 0]);
- if (this.input.has('ArrowUp'))
- vec2.add(dir, dir, [0, -1]);
- if (this.input.has('ArrowRight'))
- vec2.add(dir, dir, [1, 0]);
- if (this.input.has('ArrowDown'))
- vec2.add(dir, dir, [0, 1]);
-
- if (vec2.sqrLen(dir) > 0)
- vec2.normalize(dir, dir);
-
- this.runListeners({
- type: 'direction',
- direction: dir,
- });
- });
- }
-}
diff --git a/src/view/input/inputhandler.ts b/src/view/input/inputhandler.ts
deleted file mode 100644
index 17abfe6..0000000
--- a/src/view/input/inputhandler.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { Listenable } from '../../util';
-
-export class InputHandler extends Listenable<[string, boolean]> {
- private readonly keys: Set<string> = new Set();
-
- constructor(relevantKeys: Set<string>) {
- super();
-
- window.addEventListener('keydown', (ev) => {
- if (!relevantKeys.has(ev.code))
- return;
-
- ev.preventDefault();
-
- if (ev.repeat)
- return;
-
- this.keys.add(ev.code);
- this.runListeners(ev.code, true);
- });
-
- window.addEventListener('keyup', (ev) => {
- if (!relevantKeys.has(ev.code))
- return;
-
- ev.preventDefault();
-
- if (!this.keys.has(ev.code))
- return;
-
- this.keys.delete(ev.code);
- this.runListeners(ev.code, false);
- });
-
- window.addEventListener('blur', () => {
- this.keys.clear();
- this.runListeners('', false);
- });
- }
-
- public has(key: string): boolean {
- return this.keys.has(key);
- }
-}