-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPauseMenu.js
More file actions
115 lines (103 loc) · 3.42 KB
/
Copy pathPauseMenu.js
File metadata and controls
115 lines (103 loc) · 3.42 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
class PauseMenu {
constructor({progress, onComplete}) {
this.progress = progress;
this.onComplete = onComplete;
}
getOptions(pageKey) {
//Case 1: Show the first page of options
if (pageKey === "root") {
const spriteLineup = playerState.lineup.map(id => {
const {spriteId} = playerState.sprites[id];
const base = Sprites[spriteId];
return {
label: base.name,
description: base.description,
handler: () => {
this.keyboardMenu.setOptions(this.getOptions(id))
}
}
})
return [
//All of the sprites (dynomic)
...spriteLineup,
{
label: "Save",
description: "Save your progress",
handler: () => {
//Come back to do
this.progress.save();
this.close();
}
},
{
label: "Close",
description: "Close the pause menu",
handler: () => {
this.close();
}
}
]
}
//Case 2: Show the options for just one sprite by id
const unequipped = Object.keys(playerState.sprites).filter(id=> {
return playerState.lineup.indexOf(id) === -1;
}).map(id => {
const {spriteId} = playerState.sprites[id];
const base = Sprites[spriteId];
return {
label:`Swap for ${base.name}`,
description: base.description,
handler: () => {
playerState.swapLineup(pageKey, id);
this.keyboardMenu.setOptions(this.getOptions("root"))
}
}
})
return [
...unequipped,
//Swap for any unequipped Sprite..
{
label: "Move to front",
description: "Move this sprite to the front of list",
handler: () => {
playerState.moveToFront(pageKey)
this.keyboardMenu.setOptions(this.getOptions("root"))
}
},
{
label: "Back",
description: "Back to previous page",
handler: () => {
this.keyboardMenu.setOptions(this.getOptions("root"))
}
}
];
}
createElement() {
this.element = document.createElement("div");
this.element.classList.add("PauseMenu");
this.element.classList.add("overlayMenu");
this.element.innerHTML = (`
<h2> Pause Menu </h2>
`)
}
close() {
this.esc?.unbind();
this.keyboardMenu.end();
this.element.remove();
this.onComplete();
}
init(container) {
this.createElement();
this.keyboardMenu = new KeyboardMenu({
descriptionContainer: container
})
this.keyboardMenu.init(this.element);
this.keyboardMenu.setOptions(this.getOptions("root"));
container.appendChild(this.element);
utils.wait(200);
this.esc = new KeyPressListener("Escape", () => {
this.close()
})
}
}