57 lines
1.2 KiB
JavaScript
57 lines
1.2 KiB
JavaScript
class TetrisManager {
|
|
|
|
constructor() {
|
|
this.container = document.querySelector('.game-container');
|
|
|
|
this.instances = new Set;
|
|
}
|
|
|
|
createPlayer() {
|
|
const game = new Game();
|
|
this.instances.add(game);
|
|
}
|
|
|
|
init() {
|
|
this.callAll('rescale', []);
|
|
}
|
|
|
|
removePlayer(tetris) {
|
|
this.instances.delete(tetris);
|
|
}
|
|
|
|
start() {
|
|
this.instances.forEach(instance => {
|
|
instance.start();
|
|
});
|
|
this.init();
|
|
}
|
|
|
|
resume() {
|
|
this.instances.forEach(instance => {
|
|
instance.g.isPaused = false;
|
|
instance.g.lastTimeUpdate = Date.now();
|
|
if (!firstRun) {
|
|
instance.update(instance.g.lastTime);
|
|
}
|
|
});
|
|
}
|
|
|
|
pause() {
|
|
this.instances.forEach(instance => {
|
|
instance.g.isPaused = true;
|
|
});
|
|
}
|
|
|
|
callAll(method, args) {
|
|
if (typeof method === 'string') {
|
|
this.instances.forEach(instance => {
|
|
instance[method](...args);
|
|
});
|
|
} else if (typeof method === 'function') {
|
|
this.instances.forEach(instance => {
|
|
method(instance);
|
|
});
|
|
}
|
|
}
|
|
}
|