mnml/client/src/scenes/menu.js
2018-12-21 19:31:59 +10:00

90 lines
2.6 KiB
JavaScript

const Phaser = require('phaser');
const MenuCrypList = require('./menu.cryps.list');
const MenuGameList = require('./menu.game.list');
const Combat = require('./combat');
// const ItemList = require('./item.list');
const StatSheet = require('./statsheet');
class Menu extends Phaser.Scene {
constructor() {
super({ key: 'Menu', active: true });
}
create() {
this.registry.events.on('changedata', this.updateData, this);
this.registry.events.on('setdata', this.updateData, this);
this.scene.add('MenuCrypList', MenuCrypList, true);
this.scene.add('MenuGameList', MenuGameList, true);
this.sys.events.on('wake', () => {
this.wakeMenuScenes();
});
return true;
}
wakeMenuScenes() {
this.registry.events.on('changedata', this.updateData, this);
this.registry.events.on('setdata', this.updateData, this);
this.scene.add('MenuCrypList', MenuCrypList, true);
this.scene.add('MenuGameList', MenuGameList, true);
console.log(this.scene.isActive());
}
updateData(parent, key, data) {
if (key === 'itemList') {
// return this.renderItemList();
}
if (key === 'game' && this.scene.isActive()) {
this.cleanUp();
this.scene.add('Combat', Combat);
this.scene.run('Combat', data);
this.scene.sleep();
}
return true;
}
// Scene switch to statsheet called by MenuCrypRows scene
displaySkills(cryp) {
if (cryp) {
this.cleanUp();
this.scene.add('StatSheet', StatSheet);
this.scene.run('StatSheet', cryp);
this.scene.sleep();
}
return true;
}
renderItemList() {
const ws = this.registry.get('ws');
const itemList = this.registry.get('itemList');
if (this.itemList) {
this.itemList.cleanup();
this.itemList.destroy(true);
}
// this.itemList = new ItemList({ list: this, ws, itemList, events: this.game.events });
}
cleanUp() {
// Remove all the scenes except header and this scene (menu)
this.registry.events.off('changedata', this.updateData, this);
this.registry.events.off('setdata', this.updateData, this);
const ACTIVE_SCENES = ['Header', 'Menu'];
Object.keys(this.scene.manager.keys).forEach((key) => {
if (!ACTIVE_SCENES.includes(key)) {
// Remove listeners and scene
this.scene.get(key).cleanUp();
}
});
}
}
module.exports = Menu;