-
Notifications
You must be signed in to change notification settings - Fork 0
/
control.ts
50 lines (45 loc) · 1.27 KB
/
control.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
interface Screen {
aButtonDown(): boolean;
upButtonDown(): void;
downButtonDown(): void;
leftButtonDown(): void;
rightButtonDown(): void;
destroy(): void;
}
function registerRendererControls(renderer: Screen, startBattle: () => void) {
let battleStarted = false;
registerHandler(controller.A, () => {
battleStarted = renderer.aButtonDown();
if (battleStarted) {
startBattle();
}
});
registerHandler(controller.up, () => {
if (battleStarted) {
scriptTimeModifier -= 0.1;
if (scriptTimeModifier < 0.1) scriptTimeModifier = 0.1
}
else renderer.upButtonDown();
});
registerHandler(controller.down, () => {
if (battleStarted) {
scriptTimeModifier += 0.1;
}
else renderer.downButtonDown();
});
registerHandler(controller.left, () => {
if (!battleStarted) renderer.leftButtonDown();
});
registerHandler(controller.right, () => {
if (!battleStarted) renderer.rightButtonDown();
});
function registerHandler(
btn: controller.Button,
handler: () => void,
evt = ControllerButtonEvent.Pressed
) {
btn.onEvent(evt, () => {
handler();
})
}
}