mnml/client/src/scenes/combat.render.js
2018-11-26 15:25:59 +10:00

60 lines
2.1 KiB
JavaScript
Executable File

const Phaser = require('phaser');
const { renderCryp } = require('./combat.cryps');
const randomSkill = () => {
const skills = ['wall', 'spit', 'gravBlast', 'gravBomb', 'chargeBall'];
return skills[Math.floor(Math.random() * 5)];
};
function animatePhase(scene, group, game, account, delay) {
const resolved = game.resolved[scene.resolvedIter];
const allyCryp = scene.cryps.filter(c => c.account === account.id).find(
c => c.id === resolved.source_cryp_id || c.id === resolved.target_cryp_id
);
const enemyCryp = scene.cryps.filter(c => c.account !== account.id).find(
c => c.id === resolved.source_cryp_id || c.id === resolved.target_cryp_id
);
const allySpawn = renderCryp(scene, group, allyCryp, game, 0, 1);
const enemySpawn = renderCryp(scene, group, enemyCryp, game, 1, 1);
const target = allyCryp.id === resolved.target_cryp_id ? allySpawn : enemySpawn;
const targetCrypData = allyCryp.id === resolved.target_cryp_id ? allyCryp : enemyCryp;
scene.time.delayedCall(delay, () => {
targetCrypData.hp.base -= 100; // Mutates stored cryp data
target.healthbar.takeDamage(100);
target.setTint(0xff0000);
});
}
function combatRender(scene, game) {
let delay = 0;
const skill = randomSkill();
const resolved = game.resolved[scene.resolvedIter];
const account = scene.registry.get('account');
const animatedGroup = new Phaser.GameObjects.Group(scene);
const target = resolved.source_team_id === account.id;
delay = scene.skills[skill](target);
// animatePhase(scene, animatedGroup, game, account, delay[0]);
if (scene.iterateLog(game)) {
scene.time.delayedCall(delay[1], () => {
scene.registry.set('resolve', false);
scene.skills.cleanup();
animatedGroup.destroy(true);
scene.renderLog(game);
});
} else {
scene.time.delayedCall(delay[1], () => {
scene.skills.cleanup();
animatedGroup.destroy(true);
combatRender(scene, game);
});
}
return true;
}
module.exports = combatRender;