render from resolved log
This commit is contained in:
parent
f82a4167e1
commit
e537e052ca
15
client/src/scenes/combat.cryps.js
Executable file → Normal file
15
client/src/scenes/combat.cryps.js
Executable file → Normal 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 {
|
class DrawCrypTeams extends Phaser.GameObjects.Group {
|
||||||
constructor(scene, game) {
|
constructor(scene, game) {
|
||||||
super(scene);
|
super(scene);
|
||||||
@ -111,8 +123,7 @@ class DrawCrypTeams extends Phaser.GameObjects.Group {
|
|||||||
renderSkills(scene, this, cryp, game, team, iter);
|
renderSkills(scene, this, cryp, game, team, iter);
|
||||||
};
|
};
|
||||||
if (scene.registry.get('resolve')) {
|
if (scene.registry.get('resolve')) {
|
||||||
renderCryp(scene, this, game.teams.find(t => t.id === account.id).cryps[0], game, 0, 1);
|
animatePhase(scene, this, game, account);
|
||||||
renderCryp(scene, this, game.teams.filter(t => t.id !== account.id)[0].cryps[0], game, 1, 1);
|
|
||||||
} else {
|
} else {
|
||||||
game.teams.find(t => t.id === account.id).cryps.forEach((cryp, i) => renderTeam(cryp, 0, i));
|
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));
|
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
25
client/src/scenes/combat.js
Executable file → Normal file
@ -51,7 +51,9 @@ class Combat extends Phaser.Scene {
|
|||||||
|
|
||||||
updateData(parent, key, data) {
|
updateData(parent, key, data) {
|
||||||
if (key === 'game') {
|
if (key === 'game') {
|
||||||
if (!this.registry.get('activeSkill')) {
|
if (!this.registry.get('activeSkill')
|
||||||
|
&& !this.registry.get('resolve')) {
|
||||||
|
this.renderCryps(data);
|
||||||
this.renderLog(data);
|
this.renderLog(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -60,20 +62,7 @@ class Combat extends Phaser.Scene {
|
|||||||
|
|
||||||
renderLog(game) {
|
renderLog(game) {
|
||||||
if (!game) return false;
|
if (!game) return false;
|
||||||
// shallow copy because reverse mutates
|
while (game.log.length !== this.logIndex) {
|
||||||
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) {
|
|
||||||
if (game.log[this.logIndex] === '<Resolve Phase>') {
|
if (game.log[this.logIndex] === '<Resolve Phase>') {
|
||||||
this.registry.set('resolve', true);
|
this.registry.set('resolve', true);
|
||||||
this.logIndex += 1;
|
this.logIndex += 1;
|
||||||
@ -81,9 +70,15 @@ class Combat extends Phaser.Scene {
|
|||||||
break;
|
break;
|
||||||
} this.logIndex += 1;
|
} this.logIndex += 1;
|
||||||
}
|
}
|
||||||
|
// shallow copy because reverse mutates
|
||||||
|
this.log.setText(Array.from(game.log).slice(0, this.logIndex).reverse());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iterateLog() {
|
||||||
|
this.logIndex += 1;
|
||||||
|
}
|
||||||
|
|
||||||
renderCryps(game) {
|
renderCryps(game) {
|
||||||
if (this.crypTeamRender) {
|
if (this.crypTeamRender) {
|
||||||
this.crypTeamRender.destroy(true);
|
this.crypTeamRender.destroy(true);
|
||||||
|
|||||||
16
client/src/scenes/combat.render.js
Executable file → Normal file
16
client/src/scenes/combat.render.js
Executable file → Normal file
@ -5,24 +5,22 @@ const randomSkill = () => {
|
|||||||
|
|
||||||
function combatRender(scene, game) {
|
function combatRender(scene, game) {
|
||||||
let delay = 0;
|
let delay = 0;
|
||||||
const skill = randomSkill();
|
// const skill = randomSkill();
|
||||||
// Need to update this with proper cryp / team / skill checking
|
const resolved = game.resolved[scene.skills.resolvedIter];
|
||||||
const target = game.log[scene.logIndex].match(/(\w|\s)*\w(?=")|\w+/g)[1] === 'bamboo basher';
|
const target = resolved.source_team_id === scene.registry.get('account').id;
|
||||||
delay = scene.skills[skill](target);
|
delay = scene.skills[resolved.skill](target);
|
||||||
|
|
||||||
scene.iterateLog(game);
|
scene.iterateLog(game);
|
||||||
scene.log.setText(Array.from(game.log).slice(0, scene.logIndex).reverse());
|
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.renderCryps(game);
|
||||||
|
if (scene.skills.checkSkillLog(game)) {
|
||||||
scene.time.delayedCall(delay, () => {
|
scene.time.delayedCall(delay, () => {
|
||||||
scene.skills.cleanup();
|
|
||||||
scene.registry.set('resolve', false);
|
scene.registry.set('resolve', false);
|
||||||
scene.renderCryps(game);
|
scene.skills.cleanup();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
scene.time.delayedCall(delay, () => {
|
scene.time.delayedCall(delay, () => {
|
||||||
scene.skills.cleanup();
|
scene.skills.cleanup();
|
||||||
combatRender(scene, game);
|
combatRender(scene, game);
|
||||||
scene.renderCryps(game);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
8
client/src/scenes/combat.skills.js
Executable file → Normal file
8
client/src/scenes/combat.skills.js
Executable file → Normal file
@ -19,9 +19,15 @@ class CombatSkills extends Phaser.GameObjects.Group {
|
|||||||
constructor(scene) {
|
constructor(scene) {
|
||||||
super(scene);
|
super(scene);
|
||||||
this.scene = 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 { spawnLocation, speed, img } = animationParams(target);
|
||||||
const particles = this.scene.add.particles(img);
|
const particles = this.scene.add.particles(img);
|
||||||
const emitter = particles.createEmitter({
|
const emitter = particles.createEmitter({
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user