Files
MI2Mario/src/scenes/GUI.js
T
2020-07-17 03:20:59 +02:00

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'});
})
});
}
}