import {Player} from "./Player"; import {numeralWrapper} from "./ui/numeralFormat"; function CharacterOverview() { this.hp = document.getElementById("character-hp-text"); this.money = document.getElementById("character-money-text"); this.hack = document.getElementById("character-hack-text"); this.str = document.getElementById("character-str-text"); this.def = document.getElementById("character-def-text"); this.dex = document.getElementById("character-dex-text"); this.agi = document.getElementById("character-agi-text"); this.cha = document.getElementById("character-cha-text"); this.int = document.getElementById("character-int-text"); this.intWrapper = document.getElementById("character-int-wrapper"); this.repaintElem = document.getElementById("character-overview-text"); } CharacterOverview.prototype.repaint = function() { // this is an arbitrary function we can call to trigger a repaint. this.repaintElem.getClientRects(); } CharacterOverview.prototype.update = function() { if (Player.hp == null) {Player.hp = Player.max_hp;} const replaceAndChanged = function(elem, text) { if(elem.textContent === text) { return false; } elem.textContent = text; return true; } let changed = false; changed = replaceAndChanged(this.hp, Player.hp + " / " + Player.max_hp) || changed; changed = replaceAndChanged(this.money, numeralWrapper.format(Player.money.toNumber(), '$0.000a')) || changed; changed = replaceAndChanged(this.hack, (Player.hacking_skill).toLocaleString()) || changed; changed = replaceAndChanged(this.str, (Player.strength).toLocaleString()) || changed; changed = replaceAndChanged(this.def, (Player.defense).toLocaleString()) || changed; changed = replaceAndChanged(this.dex, (Player.dexterity).toLocaleString()) || changed; changed = replaceAndChanged(this.agi, (Player.agility).toLocaleString()) || changed; changed = replaceAndChanged(this.cha, (Player.charisma).toLocaleString()) || changed; changed = replaceAndChanged(this.int, (Player.intelligence).toLocaleString()) || changed; // handle int appearing const int = this.intWrapper; const old = int.style.display; const now = Player.intelligence >= 1 ? "" : "none"; if(old !== now) { int.style.display = now; changed = true; } // recalculate box size if something changed if(changed) this.repaint(); } export {CharacterOverview};