in libs/game/info.ts [711:814]
drawPlayer() {
const state = this.getState();
const font = image.font5;
let score: string;
let life: string;
let height = 4;
let scoreWidth = 0;
let lifeWidth = 0;
const offsetX = 1;
let offsetY = 2;
let showScore = this.showScore && state.score !== undefined;
let showLife = this.showLife && state.life !== undefined;
if (showScore) {
score = "" + state.score;
scoreWidth = score.length * font.charWidth + 3;
height += font.charHeight;
offsetY += font.charHeight + 1;
}
if (showLife) {
life = "" + (state.life || 0);
lifeWidth = infoState.heartImage.width + infoState.multiplierImage.width + life.length * font.charWidth + 3;
height += infoState.heartImage.height;
}
const width = Math.max(scoreWidth, lifeWidth);
// bump size for space between lines
if (showScore && showLife) height++;
const x = this.x - (this.left ? width : 0);
const y = this.y - (this.up ? height : 0);
// Bordered Box
if (showScore || showLife) {
screen.fillRect(x, y, width, height, this.border);
screen.fillRect(x + 1, y + 1, width - 2, height - 2, this.bg);
}
// print score
if (showScore) {
const bump = this.left ? width - scoreWidth : 0;
screen.print(score, x + offsetX + bump + 1, y + 2, this.fc, font);
}
// print life
if (showLife) {
const xLoc = x + offsetX + (this.left ? width - lifeWidth : 0);
let mult = infoState.multiplierImage.clone();
mult.replace(1, this.fc);
screen.drawTransparentImage(
infoState.heartImage,
xLoc,
y + offsetY
);
screen.drawTransparentImage(
mult,
xLoc + infoState.heartImage.width,
y + offsetY + font.charHeight - infoState.multiplierImage.height - 1
);
screen.print(
life,
xLoc + infoState.heartImage.width + infoState.multiplierImage.width + 1,
y + offsetY,
this.fc,
font
);
}
// print player icon
if (this.showPlayer) {
const pNum = "" + this._player;
let iconWidth = pNum.length * font.charWidth + 1;
const iconHeight = Math.max(height, font.charHeight + 2);
let iconX = this.left ? (x - iconWidth + 1) : (x + width - 1);
let iconY = y;
// adjustments when only player icon shown
if (!showScore && !showLife) {
iconX += this.left ? -1 : 1;
if (this.up) iconY -= 3;
}
screen.fillRect(
iconX,
iconY,
iconWidth,
iconHeight,
this.border
);
screen.print(
pNum,
iconX + 1,
iconY + (iconHeight >> 1) - (font.charHeight >> 1),
this.bg,
font
);
}
}