This commit is contained in:
Mashy 2018-11-13 14:30:30 +10:00
parent 8b60f26fc5
commit d4bf444021

View File

@ -0,0 +1,86 @@
const Phaser = require('phaser');
const PassiveNode = require('./passive.node');
class PhaserPassives extends Phaser.Scene {
preload() {
this.load.image('eye', 'https://labs.phaser.io/assets/particles/green-orb.png');
}
create() {
this.passiveNodes = [
{ x: 400, y: 300, id: 'A', alloc: false },
{ x: 100, y: 100, id: 'B', alloc: false },
{ x: 300, y: 200, id: 'C', alloc: false },
{ x: 300, y: 800, id: 'D', alloc: false },
{ x: 600, y: 500, id: 'E', alloc: false },
{ x: 700, y: 400, id: 'F', alloc: false }];
this.passiveEdges = [
['A', 'B'],
['F', 'A'],
['D', 'A'],
];
this.graphics = this.add.graphics();
this.addCamera();
this.addPassiveNodes();
this.drawPassiveEdges();
}
addPassiveNodes() {
this.passiveNodes.forEach((n) => {
this.add.existing(new PassiveNode(this, n.x, n.y, n.id, n.alloc)).setInteractive();
});
this.input.on('pointerover', (event, gameObjects) => {
if (gameObjects[0] instanceof PassiveNode) {
if (!gameObjects[0].alloc) gameObjects[0].setTint(0xff00ff);
}
});
this.input.on('pointerout', (event, gameObjects) => {
if (gameObjects[0] instanceof PassiveNode) {
if (!gameObjects[0].alloc) gameObjects[0].clearTint();
}
});
this.input.on('pointerdown', (event, gameObjects) => {
if (gameObjects[0] instanceof PassiveNode) {
gameObjects[0].allocate();
}
});
}
drawPassiveEdges() {
this.graphics.clear();
this.passiveEdges.forEach((e) => {
const drawEdge = this.passiveNodes.filter(n => (e[0] === n.id || e[1] === n.id));
if (drawEdge[0].alloc && drawEdge[1].alloc) {
this.graphics.lineStyle(50, 0xfff00f, 0.2);
} else {
this.graphics.lineStyle(10, 0x00ffff, 0.2);
}
this.graphics.lineBetween(drawEdge[0].x, drawEdge[0].y, drawEdge[1].x, drawEdge[1].y);
});
}
addCamera() {
this.cursors = this.input.keyboard.createCursorKeys();
this.controls = new Phaser.Cameras.Controls.SmoothedKeyControl({
camera: this.cameras.main,
left: this.cursors.left,
right: this.cursors.right,
up: this.cursors.up,
down: this.cursors.down,
zoomIn: this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.Q),
zoomOut: this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.E),
acceleration: 0.005,
drag: 0.0005,
maxSpeed: 0.001,
});
}
update(delta) {
this.controls.update(delta);
}
}
module.exports = PhaserPassives;