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); registry.set('itemList', items);
} }
function setZone(zone) {
registry.set('zone', zone);
}
function setGameList(gameList) { function setGameList(gameList) {
registry.set('gameList', gameList); registry.set('gameList', gameList);
} }
@ -162,6 +167,7 @@ function registerEvents(registry, events, tutorial) {
setItems, setItems,
setWs, setWs,
setGameList, 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('changedata', this.updateData, this);
this.registry.events.off('setdata', 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) => { ACTIVE_SCENES.forEach((sKey) => {
if (this.scene.get(sKey)) this.scene.get(sKey).cleanUp(); if (this.scene.get(sKey)) this.scene.get(sKey).cleanUp();
}); });

View File

@ -26,12 +26,16 @@ class MissionsControls extends Phaser.Scene {
menu.on('pointerdown', () => { menu.on('pointerdown', () => {
this.scene.get('Missions').cleanUp(); this.scene.get('Missions').cleanUp();
this.scene.remove(); this.cleanUp();
}); });
return true; return true;
} }
cleanUp() {
this.scene.remove();
}
} }
module.exports = MissionsControls; 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 Phaser = require('phaser');
const Node = require('./passive.node'); const Node = require('./missions.node');
const nodeData = require('./missions.data.node');
const edgeData = require('./missions.data.edge');
const MissionControls = require('./missions.controls'); const MissionControls = require('./missions.controls');
const { POSITIONS: { COMBAT } } = require('./constants'); const { POSITIONS: { COMBAT } } = require('./constants');
@ -18,24 +16,23 @@ class Missions extends Phaser.Scene {
} }
create() { create() {
this.scene.manager.add('MissionControls', MissionControls, true); this.scene.manager.add('MissionControls', MissionControls, true);
this.graphics = this.add.graphics(); this.graphics = this.add.graphics();
this.nodeData = nodeData; const nodeData = this.registry.get('zone').nodes;
this.edgeData = edgeData; this.edgeData = this.registry.get('zone').edges.map(x => x.map(y => nodeData[y]));
this.cameras.main.setViewport(COMBAT.width() * 0.2, COMBAT.y(), this.cameras.main.setViewport(COMBAT.width() * 0.2, COMBAT.y(),
COMBAT.width() * 0.8, COMBAT.height()); COMBAT.width() * 0.8, COMBAT.height());
this.addNodes(); this.addNodes(nodeData);
this.drawEdges(nodeData);
this.addCameraControl(); this.addCameraControl();
this.addEvents(); this.addEvents();
this.drawEdges();
} }
addNodes() { addNodes(nodeData) {
this.nodes = []; this.nodes = [];
this.nodeData.forEach((n) => { nodeData.forEach((n, i) => {
this.nodes[n.id] = this.add.existing( 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(); ).setInteractive();
}); });
} }
@ -91,26 +88,26 @@ class Missions extends Phaser.Scene {
this.cameras.main.scrollY -= zoomFactor * (points[1].y - points[0].y); this.cameras.main.scrollY -= zoomFactor * (points[1].y - points[0].y);
} }
}, this); }, this);
this.input.keyboard.on('keydown_A', () => {
this.updateNodes(); // Will update nodes from state
}, 0, this);
this.input.keyboard.on('keydown_G', () => { this.input.keyboard.on('keydown_G', () => {
this.scene.sleep(); this.scene.sleep();
}, 0, this); }, 0, this);
} }
drawEdges() { drawEdges(nodeData) {
this.graphics.clear(); this.graphics.clear();
this.edgeData.forEach((e) => { this.edgeData.forEach((e) => {
const drawEdge = this.nodeData.filter(n => ( const drawEdge = nodeData.filter(n => (
e[0] === n.id || e[1] === n.id 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); this.graphics.lineStyle(10, 0xfff00f, 0.2);
} else { } else {
this.graphics.lineStyle(2, 0xffffff, 0.2); 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); 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) { camPan(bool) {
this.pan = 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); events.setItems(items);
} }
function zoneState(response) {
const [structName, zone] = response;
events.setZone(zone);
}
// ------------- // -------------
// Setup // Setup
// ------------- // -------------
@ -163,6 +168,7 @@ function createSocket(events) {
account_cryps: accountCryps, account_cryps: accountCryps,
account_items: accountItems, account_items: accountItems,
zone_create: res => console.log(res), zone_create: res => console.log(res),
zone_state: zoneState,
}; };
// decodes the cbor and // decodes the cbor and