-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGameLoopHandler.js
More file actions
40 lines (36 loc) · 1.12 KB
/
Copy pathGameLoopHandler.js
File metadata and controls
40 lines (36 loc) · 1.12 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
import ChannelHandler from "./ChannelHandler.js"
export default class GameLoopHandler {
static on = false
static intVar = 0
static framerate = 30
static init = () => {
document.getElementById("pauseBtn").addEventListener("click",this.pause)
document.getElementById("restartBtn").addEventListener("click",this.start)
this.start()
}
static pause = () => {
if(this.on) {
cancelAnimationFrame(this.intVar)
this.on = false
ChannelHandler.sendMsg(1,false)
ChannelHandler.sendMsg(2,false)
}
}
static start = () => {
if(!this.on) {
const stop = (t) => {
this.intVar = requestAnimationFrame(() => {
let now = new Date()
ChannelHandler.sendMsg(0, {
ms: now - t
})
stop(now)
})
}
requestAnimationFrame(() => {stop(new Date())})
this.on = true
ChannelHandler.sendMsg(1,true)
ChannelHandler.sendMsg(2,true)
}
}
}