83 lines
2.7 KiB
JavaScript
83 lines
2.7 KiB
JavaScript
/*
|
|
* 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'});
|
|
})
|
|
});
|
|
}
|
|
} |