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 {
|
||||
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
25
client/src/scenes/combat.js
Executable file → Normal 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);
|
||||
|
||||
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) {
|
||||
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.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;
|
||||
|
||||
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) {
|
||||
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({
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user