-
Notifications
You must be signed in to change notification settings - Fork 0
/
Graphic.js
51 lines (43 loc) · 1.39 KB
/
Graphic.js
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
export class Graphic {
constructor(canvas, fps = 60) {
this.canvas = canvas
this.ctx = canvas.getContext("2d")
this.fps = fps
this.boards = new Array()
this.gameObjects = new Array()
}
addBoard(board) {
this.boards.push(board)
}
addGameObject() {
this.gameObjects.push(gameObject)
}
setfps(fps) {
}
draw() {
this.drawing = setInterval(() => {
this.ws = {
w: document.getElementsByClassName("board")[0].clientWidth - 3,
h: document.getElementsByClassName("board")[0].clientHeight - 10,
//w: document.getElementById("game").clientWidth,
//h: document.getElementById("game").clientHeight,
del: 16
}
this.canvas.width = this.ws.w
this.canvas.height = this.ws.h
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height)
this.boards.forEach(board => this.drawBoard(board))
this.gameObjects.forEach(gameObject => this.drawGameObject(gameObject))
}, 1 / this.fps)
}
drawBoard(board) {
board.gameObjects.forEach(gameObject => this.drawGameObject(gameObject))
}
drawGameObject(gameObject) {
gameObject.body.forEach(cell => {
let x = this.ws.w/this.ws.del * (gameObject.pos.y + cell.pos.y)
let y = this.ws.w/this.ws.del * (gameObject.pos.x + cell.pos.x)
this.ctx.drawImage(cell.image, x, y, this.ws.w/this.ws.del, this.ws.w/this.ws.del)
})
}
}