gen graph from server data

This commit is contained in:
Mashy 2018-12-28 17:13:13 +10:00
parent 964447818c
commit 856a554488
9 changed files with 66 additions and 50 deletions

View File

@ -32,6 +32,11 @@ function registerEvents(registry, events, tutorial) {
registry.set('itemList', items);
}
function setZone(zone) {
registry.set('zone', zone);
}
function setGameList(gameList) {
registry.set('gameList', gameList);
}
@ -162,6 +167,7 @@ function registerEvents(registry, events, tutorial) {
setItems,
setWs,
setGameList,
setZone,
};
}

0
client/src/scenes/menu.game.list.js Executable file → Normal file
View File

View File

@ -44,7 +44,7 @@ class Menu extends Phaser.Scene {
this.registry.events.off('changedata', this.updateData, this);
this.registry.events.off('setdata', this.updateData, this);
const ACTIVE_SCENES = ['MenuCrypList', 'MenuGameList', 'ItemList', 'Missions', 'MissionControls'];
const ACTIVE_SCENES = ['MenuCrypList', 'MenuGameList', 'ItemList', 'Missions', 'MissionsControls'];
ACTIVE_SCENES.forEach((sKey) => {
if (this.scene.get(sKey)) this.scene.get(sKey).cleanUp();
});

View File

@ -26,12 +26,16 @@ class MissionsControls extends Phaser.Scene {
menu.on('pointerdown', () => {
this.scene.get('Missions').cleanUp();
this.scene.remove();
this.cleanUp();
});
return true;
}
cleanUp() {
this.scene.remove();
}
}
module.exports = MissionsControls;

View File

@ -1,10 +0,0 @@
const missionEdges = [
['CLRG', 'CNOTE'],
['CMED2', 'CLRG'],
['CMED1', 'CMED2'],
['CSTAT2', 'CMED1'],
['CSTAT1', 'CSTAT2'],
];
module.exports = missionEdges;

View File

@ -1,10 +0,0 @@
const missionNodes = [
{ x: 500, y: 450, id: 'CNOTE', alloc: false, text: 'Boss Fight' },
{ x: 500, y: 550, id: 'CLRG', alloc: false, text: 'Mission 5' },
{ x: 500, y: 600, id: 'CMED2', alloc: false, text: 'Mission 4'},
{ x: 500, y: 650, id: 'CMED1', alloc: false, text: 'Mission 3'},
{ x: 500, y: 700, id: 'CSTAT2', alloc: false, text: 'Mission 2'},
{ x: 500, y: 750, id: 'CSTAT1', alloc: false, text: 'Mission 1'},
];
module.exports = missionNodes;

View File

@ -1,7 +1,5 @@
const Phaser = require('phaser');
const Node = require('./passive.node');
const nodeData = require('./missions.data.node');
const edgeData = require('./missions.data.edge');
const Node = require('./missions.node');
const MissionControls = require('./missions.controls');
const { POSITIONS: { COMBAT } } = require('./constants');
@ -18,24 +16,23 @@ class Missions extends Phaser.Scene {
}
create() {
this.scene.manager.add('MissionControls', MissionControls, true);
this.graphics = this.add.graphics();
this.nodeData = nodeData;
this.edgeData = edgeData;
const nodeData = this.registry.get('zone').nodes;
this.edgeData = this.registry.get('zone').edges.map(x => x.map(y => nodeData[y]));
this.cameras.main.setViewport(COMBAT.width() * 0.2, COMBAT.y(),
COMBAT.width() * 0.8, COMBAT.height());
this.addNodes();
this.addNodes(nodeData);
this.drawEdges(nodeData);
this.addCameraControl();
this.addEvents();
this.drawEdges();
}
addNodes() {
addNodes(nodeData) {
this.nodes = [];
this.nodeData.forEach((n) => {
nodeData.forEach((n, i) => {
this.nodes[n.id] = this.add.existing(
new Node(this, n.x, n.y, n.id, n.alloc, n.text)
new Node(this, 500, 850 + i * -100, n.id, n.success, n.tag)
).setInteractive();
});
}
@ -91,26 +88,26 @@ class Missions extends Phaser.Scene {
this.cameras.main.scrollY -= zoomFactor * (points[1].y - points[0].y);
}
}, this);
this.input.keyboard.on('keydown_A', () => {
this.updateNodes(); // Will update nodes from state
}, 0, this);
this.input.keyboard.on('keydown_G', () => {
this.scene.sleep();
}, 0, this);
}
drawEdges() {
drawEdges(nodeData) {
this.graphics.clear();
this.edgeData.forEach((e) => {
const drawEdge = this.nodeData.filter(n => (
e[0] === n.id || e[1] === n.id
const drawEdge = nodeData.filter(n => (
e[0].id === n.id || e[1].id === n.id
));
if (drawEdge[0].alloc && drawEdge[1].alloc) {
if (drawEdge[0].success && drawEdge[1].success) {
this.graphics.lineStyle(10, 0xfff00f, 0.2);
} else {
this.graphics.lineStyle(2, 0xffffff, 0.2);
}
this.graphics.lineBetween(drawEdge[0].x, drawEdge[0].y, drawEdge[1].x, drawEdge[1].y);
const nodeA = this.nodes[drawEdge[0].id];
const nodeB = this.nodes[drawEdge[1].id];
this.graphics.lineBetween(nodeA.x, nodeA.y, nodeB.x, nodeB.y);
return true;
});
}
@ -129,15 +126,6 @@ class Missions extends Phaser.Scene {
this.nodeText.setScale(1 / this.cameras.main.zoom);
}
updateNodes() {
this.nodeData.forEach((n) => {
this.nodes[n.id].alloc = false;
this.nodes[n.id].updateNode();
});
// This function will be modified to just update from state
// State will update n.alloc instead of false
}
camPan(bool) {
this.pan = bool;
}

View File

@ -0,0 +1,32 @@
const Phaser = require('phaser');
class PassiveNode extends Phaser.GameObjects.Sprite {
constructor(scene, x, y, id, alloc, text) {
super(scene, x, y);
this.setTexture('eye');
this.scene = scene;
this.alloc = alloc;
// this.text = (text.indexOf(',') > -1) ? text.split(',') : text;
this.id = id;
this.setPosition(x, y);
const nodeNoDigits = text.replace(/[0-9]/g, '');
switch (nodeNoDigits) {
case 'BOSS':
this.setScale(0.25);
break;
case 'ZONE':
this.setScale(0.1);
break;
default:
this.setScale(0.05);
}
if (this.alloc) {
this.setTint(0xff0000);
}
this.text = `${text}: id = '${id}`;
}
}
module.exports = PassiveNode;

View File

@ -146,6 +146,11 @@ function createSocket(events) {
events.setItems(items);
}
function zoneState(response) {
const [structName, zone] = response;
events.setZone(zone);
}
// -------------
// Setup
// -------------
@ -163,6 +168,7 @@ function createSocket(events) {
account_cryps: accountCryps,
account_items: accountItems,
zone_create: res => console.log(res),
zone_state: zoneState,
};
// decodes the cbor and