render from resolved log

This commit is contained in:
Mashy 2018-11-25 00:54:57 +10:00
parent f82a4167e1
commit e537e052ca
4 changed files with 37 additions and 27 deletions

15
client/src/scenes/combat.cryps.js Executable file → Normal file
View File

@ -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));

25
client/src/scenes/combat.js Executable file → Normal file
View File

@ -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] === '<Resolve Phase>') {
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);

18
client/src/scenes/combat.render.js Executable file → Normal file
View File

@ -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] === '<Skill Phase>' || scene.logIndex === game.log.length) {
scene.time.delayedCall(delay, () => {
scene.skills.cleanup();
scene.registry.set('resolve', false);
scene.renderCryps(game);
if (scene.skills.checkSkillLog(game)) {
scene.time.delayedCall(delay, () => {
scene.registry.set('resolve', false);
scene.skills.cleanup();
});
} else {
scene.time.delayedCall(delay, () => {
scene.skills.cleanup();
combatRender(scene, game);
scene.renderCryps(game);
});
}
return true;

8
client/src/scenes/combat.skills.js Executable file → Normal file
View File

@ -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({