let doLog = true; let logLevel = 1; //-----GUI SETTINGS-----// let doGUI = true; let showKarma = true; let showKillCount = true; let showScriptIncome = true; let showScriptExp = true; let showHacknetIncome = true; let showFactions = true; const doc = globalThis['document']; const hook0 = doc.getElementById('overview-extra-hook-0'); const hook1 = doc.getElementById('overview-extra-hook-1'); /** @param {NS} ns */ async function updateGUI(ns) { try { let headers = ["--"]; let values = ["--"]; let player = ns.getPlayer(); if (showKarma) { headers.push("Karma"); values.push(ns.heart.break().toPrecision(5)); } if (showKillCount) { headers.push("Kills"); values.push(player.numPeopleKilled); } if (showScriptIncome) { let income = ns.getScriptIncome(); headers.push("Script $"); values.push(ns.nFormat(income[1], "(0.00 a)") + "/s"); } if (showScriptExp) { let exp = ns.getScriptExpGain(); headers.push("Script EXP"); values.push(ns.nFormat(exp, "(0.00 a)") + "/s"); } headers.push("--"); values.push("--"); if (showFactions){ for (let faction of player.factions){ headers.push(faction); values.push(ns.nFormat(ns.singularity.getFactionRep(faction),"(0.00 a)")); //values.push(" "); } } /*if (showHacknetIncome) { let hnIncome = 0; for (let i = 0; i < ns.hacknet.numNodes(); i++) { hnIncome += ns.hacknet.getNodeStats(i).production; } headers.push("Hacknet $ "); values.push(ns.nFormat(hnIncome, "(0.00 a)") + "/s"); }*/ headers.push("--"); values.push("--"); let data = columnizeOverview(ns, [headers, values], 0); headers = data[0]; values = data[1]; hook0.innerText = headers.join(" \n"); hook1.innerText = values.join(" \n"); } catch (err) { ns.print("Error updating the GUI! - " + String(err)); } } export function columnizeOverview(ns, array, spacing) { let cols = array[0].length; let longest = [0, 0]; for (let columnNum = 0; columnNum < array.length; columnNum++) { //look for the longest string in each column let s = array[columnNum]; for (let i = 0; i < s.length; i++) { let entryLength = s[i].toString().length; if (entryLength > longest[columnNum]) longest[columnNum] = entryLength; } } //ns.tprint(longest); for (let columnNum = 0; columnNum < array.length; columnNum++) { for (let i = 0; i < cols; i++) { array[columnNum][i] = array[columnNum][i].toString(); if (array[columnNum][i] == "--") { array[columnNum][i] = ""; for (let p = 0; p < longest[columnNum] + spacing + 1; p++) { array[columnNum][i] += "-"; } } else if (columnNum == 0) { //add padding and spacing if not last column let padding = longest[columnNum] - array[columnNum][i].length; //ns.tprint("Padding for [" + columnNum + "," + i + "] - " + padding); for (let p = 0; p < padding + spacing; p++) { array[columnNum][i] += "-"; } array[columnNum][i] += "|"; } else { //add an extra space to the beggining of the longest entry in the last column if (array[columnNum][i].length == longest[columnNum]) { array[columnNum][i] = " " + array[columnNum][i]; } } } } return array; } /** @param {NS} ns */ export async function main(ns) { while (true) { await updateGUI(ns); await ns.sleep(500); } }