started skeleton and zombie, added GUI and menu system
Signed-off-by: Pascal Syma <pascal@syma.dev>
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* 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('pointerdown', () => {
|
||||
|
||||
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');
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user