From 856a55448865fd50aedd3ea6b8c75cec987028a3 Mon Sep 17 00:00:00 2001 From: Mashy Date: Fri, 28 Dec 2018 17:13:13 +1000 Subject: [PATCH] gen graph from server data --- client/src/events.js | 6 ++++ client/src/scenes/menu.game.list.js | 0 client/src/scenes/menu.js | 2 +- client/src/scenes/missions.controls.js | 6 +++- client/src/scenes/missions.data.edge.js | 10 ------ client/src/scenes/missions.data.node.js | 10 ------ client/src/scenes/missions.js | 44 +++++++++---------------- client/src/scenes/missions.node.js | 32 ++++++++++++++++++ client/src/socket.js | 6 ++++ 9 files changed, 66 insertions(+), 50 deletions(-) mode change 100755 => 100644 client/src/scenes/menu.game.list.js delete mode 100644 client/src/scenes/missions.data.edge.js delete mode 100644 client/src/scenes/missions.data.node.js create mode 100644 client/src/scenes/missions.node.js diff --git a/client/src/events.js b/client/src/events.js index 01758958..e07868f6 100644 --- a/client/src/events.js +++ b/client/src/events.js @@ -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, }; } diff --git a/client/src/scenes/menu.game.list.js b/client/src/scenes/menu.game.list.js old mode 100755 new mode 100644 diff --git a/client/src/scenes/menu.js b/client/src/scenes/menu.js index 538158eb..e2c35f5e 100644 --- a/client/src/scenes/menu.js +++ b/client/src/scenes/menu.js @@ -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(); }); diff --git a/client/src/scenes/missions.controls.js b/client/src/scenes/missions.controls.js index 58887986..4388e07d 100644 --- a/client/src/scenes/missions.controls.js +++ b/client/src/scenes/missions.controls.js @@ -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; diff --git a/client/src/scenes/missions.data.edge.js b/client/src/scenes/missions.data.edge.js deleted file mode 100644 index 0796b552..00000000 --- a/client/src/scenes/missions.data.edge.js +++ /dev/null @@ -1,10 +0,0 @@ -const missionEdges = [ - ['CLRG', 'CNOTE'], - ['CMED2', 'CLRG'], - ['CMED1', 'CMED2'], - ['CSTAT2', 'CMED1'], - ['CSTAT1', 'CSTAT2'], - -]; - -module.exports = missionEdges; diff --git a/client/src/scenes/missions.data.node.js b/client/src/scenes/missions.data.node.js deleted file mode 100644 index 9c9b8c87..00000000 --- a/client/src/scenes/missions.data.node.js +++ /dev/null @@ -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; diff --git a/client/src/scenes/missions.js b/client/src/scenes/missions.js index 4dd5eab0..b5db1c2d 100644 --- a/client/src/scenes/missions.js +++ b/client/src/scenes/missions.js @@ -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; } diff --git a/client/src/scenes/missions.node.js b/client/src/scenes/missions.node.js new file mode 100644 index 00000000..7f061831 --- /dev/null +++ b/client/src/scenes/missions.node.js @@ -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; diff --git a/client/src/socket.js b/client/src/socket.js index 8224ae62..52079b9c 100644 --- a/client/src/socket.js +++ b/client/src/socket.js @@ -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