-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClientGame.js
More file actions
39 lines (33 loc) · 907 Bytes
/
ClientGame.js
File metadata and controls
39 lines (33 loc) · 907 Bytes
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
/* eslint-disable no-unused-vars */
import ClientEngine from './ClientEngine';
import sprites from '../configs/sprites';
import ClientWorld from './ClientWorld';
import levelCfg from '../configs/world.json';
export default class ClientGame {
constructor(cfg) {
Object.assign(this, { cfg });
this.engine = this.createEngine();
this.map = this.createWorld();
this.initEngine();
}
createEngine() {
return new ClientEngine(document.getElementById(this.cfg.tagId));
}
createWorld() {
return new ClientWorld(this, this.engine, levelCfg);
}
initEngine() {
this.engine.loadSprites(sprites).then(() => {
this.engine.on('render', (_, _timestamp) => {
this.map.init();
});
this.engine.start();
});
}
static init(cfg) {
if (!ClientGame.game) {
ClientGame.game = new ClientGame(cfg);
console.log('Game INIT');
}
}
}