/* * Copyright (c) 2020. Antonio Martinez Casadesus and Pascal Syma. * All rights reserved. */ import TextElement from "../TextElement"; import Player from "../entities/Player"; export default class GUI extends Phaser.Scene { constructor() { super({ key: "GUI", pixelArt: true, physics: { default: 'arcade', arcade: { gravity: {y: 0} } } }); } create() { const key = this.scene.settings.data.key; const map = this.make.tilemap({key: "menu"}); const menuTileset = map.addTilesetImage("menu", "menutiles", 16, 16); const buttonTileset = map.addTilesetImage("button", "buttontiles", 16, 16); map.layers.filter(obj => obj.name.startsWith(key)).forEach(l => map.createStaticLayer(l.name, [menuTileset, buttonTileset], 0, 0)) this.cameras.main.setBounds(0, 0, map.widthInPixels, map.heightInPixels); map.objects.filter(obj => obj.name === key + "Objects")[0].objects.filter(obj => obj.type === "text").forEach(s => { new TextElement(this, s); }); map.objects.filter(obj => obj.name === key + "Objects")[0].objects.filter(obj => obj.type === "selectChar").forEach(s => { const charKey = s.name; this.anims.create({ key: 'idle' + charKey, frames: this.anims.generateFrameNumbers('char' + charKey, {start: 126, end: 131}), frameRate: 10, repeat: -1 }); new Player(this, s, 'char' + charKey).play('idle' + charKey, true) .setInteractive() .on('pointerover', () => { this.sound.play('menu_hover', {volume: 0.3}); }) .on('pointerdown', () => { this.sound.play('menu_click', {volume: 0.5}); if (this.textures.exists('char')) this.textures.removeKey('char'); this.textures.addSpriteSheet('char', this.textures.get('char' + charKey).getSourceImage(), { frameWidth: 79, frameHeight: 63, margin: 1, spacing: 2 }); this.anims.remove('idle'); this.anims.create({ key: 'idle', frames: this.anims.generateFrameNumbers('char', {start: 126, end: 131}), frameRate: 10, repeat: -1 }); this.scene.start('Game', {level: 'lvl1'}); }) }); } }