From e537e052ca260f203542adfe3808aebcfdcb4523 Mon Sep 17 00:00:00 2001 From: Mashy Date: Sun, 25 Nov 2018 00:54:57 +1000 Subject: [PATCH] render from resolved log --- client/src/scenes/combat.cryps.js | 15 +++++++++++++-- client/src/scenes/combat.js | 25 ++++++++++--------------- client/src/scenes/combat.render.js | 16 +++++++--------- client/src/scenes/combat.skills.js | 8 +++++++- 4 files changed, 37 insertions(+), 27 deletions(-) mode change 100755 => 100644 client/src/scenes/combat.cryps.js mode change 100755 => 100644 client/src/scenes/combat.js mode change 100755 => 100644 client/src/scenes/combat.render.js mode change 100755 => 100644 client/src/scenes/combat.skills.js diff --git a/client/src/scenes/combat.cryps.js b/client/src/scenes/combat.cryps.js old mode 100755 new mode 100644 index 1e1eb6e7..1c70233c --- a/client/src/scenes/combat.cryps.js +++ b/client/src/scenes/combat.cryps.js @@ -102,6 +102,18 @@ function renderSkills(scene, group, cryp, game, team, iter) { } } +function animatePhase(scene, group, game, account) { + const resolved = game.resolved[scene.skills.resolvedIter]; + const allyCryp = game.teams.find(t => t.id === account.id).cryps.find( + c => c.id === resolved.source_cryp_id || c.id === resolved.target_cryp_id + ); + const enemyCryp = game.teams.filter(t => t.id !== account.id)[0].cryps.find( + c => c.id === resolved.source_cryp_id || c.id === resolved.target_cryp_id + ); + renderCryp(scene, group, allyCryp, game, 0, 1); + renderCryp(scene, group, enemyCryp, game, 1, 1); +} + class DrawCrypTeams extends Phaser.GameObjects.Group { constructor(scene, game) { super(scene); @@ -111,8 +123,7 @@ class DrawCrypTeams extends Phaser.GameObjects.Group { renderSkills(scene, this, cryp, game, team, iter); }; if (scene.registry.get('resolve')) { - renderCryp(scene, this, game.teams.find(t => t.id === account.id).cryps[0], game, 0, 1); - renderCryp(scene, this, game.teams.filter(t => t.id !== account.id)[0].cryps[0], game, 1, 1); + animatePhase(scene, this, game, account); } else { game.teams.find(t => t.id === account.id).cryps.forEach((cryp, i) => renderTeam(cryp, 0, i)); game.teams.filter(t => t.id !== account.id)[0].cryps.forEach((cryp, i) => renderTeam(cryp, 1, i)); diff --git a/client/src/scenes/combat.js b/client/src/scenes/combat.js old mode 100755 new mode 100644 index 7b41a860..e5b00ab6 --- a/client/src/scenes/combat.js +++ b/client/src/scenes/combat.js @@ -51,7 +51,9 @@ class Combat extends Phaser.Scene { updateData(parent, key, data) { if (key === 'game') { - if (!this.registry.get('activeSkill')) { + if (!this.registry.get('activeSkill') + && !this.registry.get('resolve')) { + this.renderCryps(data); this.renderLog(data); } } @@ -60,20 +62,7 @@ class Combat extends Phaser.Scene { renderLog(game) { if (!game) return false; - // shallow copy because reverse mutates - if (!this.registry.get('resolve')) { - this.iterateLog(game); - } - this.log.setText(Array.from(game.log).slice(0, this.logIndex).reverse()); - this.renderCryps(game); - return true; - } - - iterateLog(game) { - if (this.registry.get('resolve')) { - this.logIndex += 1; - return true; - } while (game.log.length !== this.logIndex) { + while (game.log.length !== this.logIndex) { if (game.log[this.logIndex] === '') { this.registry.set('resolve', true); this.logIndex += 1; @@ -81,9 +70,15 @@ class Combat extends Phaser.Scene { break; } this.logIndex += 1; } + // shallow copy because reverse mutates + this.log.setText(Array.from(game.log).slice(0, this.logIndex).reverse()); return true; } + iterateLog() { + this.logIndex += 1; + } + renderCryps(game) { if (this.crypTeamRender) { this.crypTeamRender.destroy(true); diff --git a/client/src/scenes/combat.render.js b/client/src/scenes/combat.render.js old mode 100755 new mode 100644 index c03cef4c..6c87b70b --- a/client/src/scenes/combat.render.js +++ b/client/src/scenes/combat.render.js @@ -5,24 +5,22 @@ const randomSkill = () => { function combatRender(scene, game) { let delay = 0; - const skill = randomSkill(); - // Need to update this with proper cryp / team / skill checking - const target = game.log[scene.logIndex].match(/(\w|\s)*\w(?=")|\w+/g)[1] === 'bamboo basher'; - delay = scene.skills[skill](target); - + // const skill = randomSkill(); + const resolved = game.resolved[scene.skills.resolvedIter]; + const target = resolved.source_team_id === scene.registry.get('account').id; + delay = scene.skills[resolved.skill](target); scene.iterateLog(game); scene.log.setText(Array.from(game.log).slice(0, scene.logIndex).reverse()); - if (game.log[scene.logIndex] === '' || scene.logIndex === game.log.length) { + scene.renderCryps(game); + if (scene.skills.checkSkillLog(game)) { scene.time.delayedCall(delay, () => { - scene.skills.cleanup(); scene.registry.set('resolve', false); - scene.renderCryps(game); + scene.skills.cleanup(); }); } else { scene.time.delayedCall(delay, () => { scene.skills.cleanup(); combatRender(scene, game); - scene.renderCryps(game); }); } return true; diff --git a/client/src/scenes/combat.skills.js b/client/src/scenes/combat.skills.js old mode 100755 new mode 100644 index a216780c..0df25b3b --- a/client/src/scenes/combat.skills.js +++ b/client/src/scenes/combat.skills.js @@ -19,9 +19,15 @@ class CombatSkills extends Phaser.GameObjects.Group { constructor(scene) { super(scene); this.scene = scene; + this.resolvedIter = 0; } - wall(target) { + checkSkillLog(game) { + this.resolvedIter += 1; + return this.resolvedIter === game.resolved.length; + } + + Attack(target) { const { spawnLocation, speed, img } = animationParams(target); const particles = this.scene.add.particles(img); const emitter = particles.createEmitter({