health bars

This commit is contained in:
Mashy 2018-11-25 12:35:18 +10:00
parent feec35fa3a
commit e530dcf5f1
3 changed files with 40 additions and 2 deletions

View File

@ -11,6 +11,15 @@ const calcMargin = () => {
return { CRYP_MARGIN, TEXT_MARGIN, TEAM_MARGIN, X_PADDING, Y_PADDING }; return { CRYP_MARGIN, TEXT_MARGIN, TEAM_MARGIN, X_PADDING, Y_PADDING };
}; };
const healthBarDimensions = (team, iter) => {
const { CRYP_MARGIN, TEAM_MARGIN, TEXT_MARGIN, X_PADDING, Y_PADDING } = calcMargin();
const healthBarX = X_PADDING / 2 + TEAM_MARGIN * team;
const healthBarY = Y_PADDING / 3 + CRYP_MARGIN * iter;
const healthBarWidth = X_PADDING / 1.5;
const healthBarHeight = TEXT_MARGIN / 1.5;
return { healthBarX, healthBarY, healthBarWidth, healthBarHeight };
}
class CrypImage extends Phaser.GameObjects.Image { class CrypImage extends Phaser.GameObjects.Image {
constructor(scene, j, team, avatar, cryp) { constructor(scene, j, team, avatar, cryp) {
@ -71,6 +80,30 @@ class CrypSkill extends Phaser.GameObjects.Text {
} }
} }
function drawHealthBar(scene, cryp, team, iter) {
const healthBar = scene.add.graphics();
const { healthBarX, healthBarY, healthBarWidth, healthBarHeight } = healthBarDimensions(team, iter);
// Draw Black Border
healthBar.fillStyle(COLOURS.BLACK);
healthBar.fillRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight);
// White fill
healthBar.fillStyle(COLOURS.WHITE);
healthBar.fillRect(healthBarX + 2, healthBarY + 2, healthBarWidth - 4, healthBarHeight - 4);
const healthPercentage = cryp.hp.base / cryp.stamina.base;
if (healthPercentage < 0.3) {
healthBar.fillStyle(COLOURS.RED);
} else if (healthPercentage < 0.65) {
healthBar.fillStyle(COLOURS.YELLOW);
} else {
healthBar.fillStyle(0x00ff00); // str8 up green
}
const healthWidth = Math.floor(healthBarWidth * healthPercentage);
healthBar.fillRect(healthBarX + 2, healthBarY + 2, healthWidth, healthBarHeight - 4);
return healthBar;
}
function renderCryp(scene, group, cryp, game, team, iter) { function renderCryp(scene, group, cryp, game, team, iter) {
const { const {
CRYP_MARGIN, TEXT_MARGIN, TEAM_MARGIN, X_PADDING, Y_PADDING, CRYP_MARGIN, TEXT_MARGIN, TEAM_MARGIN, X_PADDING, Y_PADDING,
@ -82,6 +115,8 @@ function renderCryp(scene, group, cryp, game, team, iter) {
.setInteractive(); .setInteractive();
group.add(crypSpawn); group.add(crypSpawn);
// Add cryp hp // Add cryp hp
const healthBar = drawHealthBar(scene, cryp, team, iter);
group.add(healthBar);
const crypHp = scene.add.text(X_PADDING / 2 + TEAM_MARGIN * team, Y_PADDING / 2 + CRYP_MARGIN * iter, const crypHp = scene.add.text(X_PADDING / 2 + TEAM_MARGIN * team, Y_PADDING / 2 + CRYP_MARGIN * iter,
`${cryp.hp.base.toString()} / ${cryp.stamina.base.toString()} HP`, TEXT.NORMAL); `${cryp.hp.base.toString()} / ${cryp.stamina.base.toString()} HP`, TEXT.NORMAL);
group.add(crypHp); group.add(crypHp);
@ -89,7 +124,7 @@ function renderCryp(scene, group, cryp, game, team, iter) {
const crypName = scene.add.text(X_PADDING / 2 + TEAM_MARGIN * team, const crypName = scene.add.text(X_PADDING / 2 + TEAM_MARGIN * team,
Y_PADDING / 2 + TEXT_MARGIN + CRYP_MARGIN * iter, cryp.name, TEXT.HEADER); Y_PADDING / 2 + TEXT_MARGIN + CRYP_MARGIN * iter, cryp.name, TEXT.HEADER);
group.add(crypName); group.add(crypName);
return crypSpawn; return [crypSpawn, healthBar];
} }
function renderSkills(scene, group, cryp, game, team, iter) { function renderSkills(scene, group, cryp, game, team, iter) {

View File

@ -17,7 +17,7 @@ function animatePhase(scene, group, game, account, delay) {
const allySpawn = renderCryp(scene, group, allyCryp, game, 0, 1); const allySpawn = renderCryp(scene, group, allyCryp, game, 0, 1);
const enemySpawn = renderCryp(scene, group, enemyCryp, game, 1, 1); const enemySpawn = renderCryp(scene, group, enemyCryp, game, 1, 1);
const target = allyCryp.id === resolved.target_cryp_id ? allySpawn : enemySpawn; const target = allyCryp.id === resolved.target_cryp_id ? allySpawn[0] : enemySpawn[0];
scene.time.delayedCall(delay, () => { scene.time.delayedCall(delay, () => {
target.setTint(0xff0000); target.setTint(0xff0000);
}); });

View File

@ -98,6 +98,9 @@ module.exports = {
LBLUE: 0x87c6f2, LBLUE: 0x87c6f2,
GREEN: 0x166c4f, GREEN: 0x166c4f,
BROWN: 0x583108, BROWN: 0x583108,
BLACK: 0x000000,
RED: 0xff0000,
WHITE: 0xffffff,
}, },
SKILLS: { SKILLS: {