mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-09-20 04:48:38 +02:00
Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev
This commit is contained in:
commit
4a56076ba9
@ -433,8 +433,8 @@ a:visited {
|
|||||||
position: absolute; /* Stay in place */
|
position: absolute; /* Stay in place */
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
height: 205px; /* Full height */
|
height: auto; /* Full height */
|
||||||
padding: 5px;
|
padding: 8px;
|
||||||
border: 2px solid var(--my-highlight-color);
|
border: 2px solid var(--my-highlight-color);
|
||||||
width: 19%;
|
width: 19%;
|
||||||
overflow: auto; /* Enable scroll if needed */
|
overflow: auto; /* Enable scroll if needed */
|
||||||
@ -443,12 +443,18 @@ a:visited {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#character-overview-text {
|
#character-overview-text {
|
||||||
padding: 4px;
|
|
||||||
margin: 8px;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #444;
|
background-color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.character-stat-text {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #444;
|
||||||
|
}
|
||||||
|
.character-stat-cell {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
#character-overview-save-button,
|
#character-overview-save-button,
|
||||||
#character-overview-options-button {
|
#character-overview-options-button {
|
||||||
@include borderRadius(12px);
|
@include borderRadius(12px);
|
||||||
@ -461,6 +467,10 @@ a:visited {
|
|||||||
background-color: #000;
|
background-color: #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.character-quick-options {
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
#character-overview-save-button:hover,
|
#character-overview-save-button:hover,
|
||||||
#character-overview-save-button:focus,
|
#character-overview-save-button:focus,
|
||||||
#character-overview-options-button:hover,
|
#character-overview-options-button:hover,
|
||||||
@ -540,3 +550,11 @@ a:visited {
|
|||||||
.accordion-panel ul > li {
|
.accordion-panel ul > li {
|
||||||
background-color: #555;
|
background-color: #555;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* override the global <span> styling */
|
||||||
|
#active-scripts-total-production-active,
|
||||||
|
#active-scripts-total-prod-aug-total,
|
||||||
|
#active-scripts-total-prod-aug-avg {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
77
index.html
77
index.html
@ -110,7 +110,7 @@
|
|||||||
|
|
||||||
<div id="script-editor-filename-wrapper">
|
<div id="script-editor-filename-wrapper">
|
||||||
<p id="script-editor-filename-tag"> <strong style="background-color:#555;">Script name: </strong></p>
|
<p id="script-editor-filename-tag"> <strong style="background-color:#555;">Script name: </strong></p>
|
||||||
<input id="script-editor-filename" type="text" maxlength="30" tabindex="1" />
|
<input id="script-editor-filename" type="text" maxlength="30" tabindex="1"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="javascript-editor"></div>
|
<div id="javascript-editor"></div>
|
||||||
@ -160,7 +160,7 @@
|
|||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<label for="script-editor-option-maxerr" class="tooltip">Max Error Count</label>
|
<label for="script-editor-option-maxerr" class="tooltip">Max Error Count</label>
|
||||||
<input type="range" max="1000" min="50" value="200" step="1" name="script-editor-option-maxerr" id="script-editor-option-maxerr" />
|
<input type="range" max="1000" min="50" value="200" step="1" name="script-editor-option-maxerr" id="script-editor-option-maxerr"/>
|
||||||
<em id="script-editor-option-maxerror-value-label" style="font-style: normal;"></em>
|
<em id="script-editor-option-maxerror-value-label" style="font-style: normal;"></em>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div> <!-- End script editor options panel -->
|
</div> <!-- End script editor options panel -->
|
||||||
@ -187,7 +187,10 @@
|
|||||||
<p id="active-scripts-text"> This page displays a list of all of your scripts that are currently running across every machine. It also
|
<p id="active-scripts-text"> This page displays a list of all of your scripts that are currently running across every machine. It also
|
||||||
provides information about each script's production. The scripts are categorized by the hostname of the servers on which
|
provides information about each script's production. The scripts are categorized by the hostname of the servers on which
|
||||||
they are running. </p>
|
they are running. </p>
|
||||||
<p id="active-scripts-total-prod"> Total online production rate: </p>
|
<p id="active-scripts-total-prod">Total online production of
|
||||||
|
Active scripts: <span id="active-scripts-total-production-active">$0.000</span> / sec<br />
|
||||||
|
Total online production since last Aug installation: <span id="active-scripts-total-prod-aug-total">$0.000</span>
|
||||||
|
(<span id="active-scripts-total-prod-aug-avg">$0.000</span> / sec)</p>
|
||||||
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -211,7 +214,7 @@
|
|||||||
<br>
|
<br>
|
||||||
<div id="hacknet-nodes-money-multipliers-div">
|
<div id="hacknet-nodes-money-multipliers-div">
|
||||||
<p id="hacknet-nodes-money">
|
<p id="hacknet-nodes-money">
|
||||||
<span>Money:</span><span id="hacknet-nodes-player-money" ></span><br />
|
<span>Money:</span><span id="hacknet-nodes-player-money"></span><br/>
|
||||||
<span>Total Hacknet Node Prodution:</span><span id="hacknet-nodes-total-production"></span>
|
<span>Total Hacknet Node Prodution:</span><span id="hacknet-nodes-total-production"></span>
|
||||||
</p>
|
</p>
|
||||||
<span id="hacknet-nodes-multipliers">
|
<span id="hacknet-nodes-multipliers">
|
||||||
@ -488,24 +491,24 @@
|
|||||||
|
|
||||||
<!-- dev menu -->
|
<!-- dev menu -->
|
||||||
<div id="dev-menu-container" class="generic-menupage-container">
|
<div id="dev-menu-container" class="generic-menupage-container">
|
||||||
<p id='dev-menu-text'>If you see this menu you can pretty much break the game. It's recommended that you use this menu only to setup a save file appropriate to test a new feature or bug fix.</p>
|
<p id="dev-menu-text">If you see this menu you can pretty much break the game. It's recommended that you use this menu only to setup a save file appropriate to test a new feature or bug fix.</p>
|
||||||
|
|
||||||
<p id='dev-menu-text'>Generic</p>
|
<p id="dev-menu-text">Generic</p>
|
||||||
<a id="dev-need-money" class="a-link-button">Add $1000t</a>
|
<a id="dev-need-money" class="a-link-button">Add $1000t</a>
|
||||||
<a id="dev-need-ram" class="a-link-button">Double home RAM</a>
|
<a id="dev-need-ram" class="a-link-button">Double home RAM</a>
|
||||||
|
|
||||||
<p id='dev-menu-text'>Augmentation related: </p>
|
<p id="dev-menu-text">Augmentation related: </p>
|
||||||
<!-- gets populated with the list of all augments -->
|
<!-- gets populated with the list of all augments -->
|
||||||
<select id="dev-menu-aug-dropdown" class="dropdown"></select>
|
<select id="dev-menu-aug-dropdown" class="dropdown"></select>
|
||||||
<a id="dev-add-aug" class="a-link-button tooltip">Queue Augmentation<span class="tooltiptext">May require save + reload</span></a>
|
<a id="dev-add-aug" class="a-link-button tooltip">Queue Augmentation<span class="tooltiptext">May require save + reload</span></a>
|
||||||
|
|
||||||
<input id="dev-sf-n" type="number" class="text-input" placeholder="SourceFile-N"><input id="dev-sf-lvl" type="number" class="text-input" placeholder="SourceFile-Lvl"><a id="dev-add-source-file" class="a-link-button tooltip"> Add/Remove source file <span class="tooltiptext">If Lvl == 0 the sf will be removed, calling it with another level will replace your current source file. You CAN set a source file higher than it's maximum level.</span></a>
|
<input id="dev-sf-n" type="number" class="text-input" placeholder="SourceFile-N"><input id="dev-sf-lvl" type="number" class="text-input" placeholder="SourceFile-Lvl"><a id="dev-add-source-file" class="a-link-button tooltip"> Add/Remove source file <span class="tooltiptext">If Lvl == 0 the sf will be removed, calling it with another level will replace your current source file. You CAN set a source file higher than it's maximum level.</span></a>
|
||||||
|
|
||||||
<p id='dev-menu-text'>Faction related: </p>
|
<p id="dev-menu-text">Faction related: </p>
|
||||||
<select id="dev-menu-faction-dropdown" class="dropdown"></select>
|
<select id="dev-menu-faction-dropdown" class="dropdown"></select>
|
||||||
<a id="dev-add-faction" class="a-link-button tooltip">Receive invite<span class="tooltiptext">May require save + reload</span></a>
|
<a id="dev-add-faction" class="a-link-button tooltip">Receive invite<span class="tooltiptext">May require save + reload</span></a>
|
||||||
|
|
||||||
<p id='dev-menu-text'>Program related: </p>
|
<p id="dev-menu-text">Program related: </p>
|
||||||
<select id="dev-menu-connect-dropdown" class="dropdown"></select>
|
<select id="dev-menu-connect-dropdown" class="dropdown"></select>
|
||||||
<a id="dev-connect" class="a-link-button tooltip">Connect<span class="tooltiptext">Connect to the target server.</span></a>
|
<a id="dev-connect" class="a-link-button tooltip">Connect<span class="tooltiptext">Connect to the target server.</span></a>
|
||||||
|
|
||||||
@ -514,12 +517,12 @@
|
|||||||
|
|
||||||
<a id="dev-bit-flume" class="a-link-button tooltip">Trigger BitFlume<span class="tooltiptext">Quick escape to change BN, does not give SFs</span></a>
|
<a id="dev-bit-flume" class="a-link-button tooltip">Trigger BitFlume<span class="tooltiptext">Quick escape to change BN, does not give SFs</span></a>
|
||||||
|
|
||||||
<p id='dev-menu-text'>Server related: </p>
|
<p id="dev-menu-text">Server related: </p>
|
||||||
<a id="dev-open-all" class="a-link-button tooltip">NUKE + ports all servers<span class="tooltiptext">Opens all ports, nukes all servers, gains root access to everything (still need the appropriate hacking level)</span></a>
|
<a id="dev-open-all" class="a-link-button tooltip">NUKE + ports all servers<span class="tooltiptext">Opens all ports, nukes all servers, gains root access to everything (still need the appropriate hacking level)</span></a>
|
||||||
<a id="dev-min-security" class="a-link-button tooltip">minimize all servers security<span class="tooltiptext">All servers security will be set to their minimum security</span></a>
|
<a id="dev-min-security" class="a-link-button tooltip">minimize all servers security<span class="tooltiptext">All servers security will be set to their minimum security</span></a>
|
||||||
<a id="dev-max-money" class="a-link-button tooltip">maximize all servers money<span class="tooltiptext">Set all servers available money to maximum for that server</span></a>
|
<a id="dev-max-money" class="a-link-button tooltip">maximize all servers money<span class="tooltiptext">Set all servers available money to maximum for that server</span></a>
|
||||||
|
|
||||||
<p id='dev-menu-text'>Exp/stats related: </p>
|
<p id="dev-menu-text">Exp/stats related: </p>
|
||||||
<input id="dev-hacking-exp" type="number" class="text-input" placeholder="+exp/-exp (int)">
|
<input id="dev-hacking-exp" type="number" class="text-input" placeholder="+exp/-exp (int)">
|
||||||
<a id="dev-add-hacking" class="a-link-button tooltip">add hacking exp<span class="tooltiptext">Add that many hacking experience point, use negative numbers to remove, don't worry about going under 0 exp</span></a>
|
<a id="dev-add-hacking" class="a-link-button tooltip">add hacking exp<span class="tooltiptext">Add that many hacking experience point, use negative numbers to remove, don't worry about going under 0 exp</span></a>
|
||||||
<input id="dev-strength-exp" type="number" class="text-input" placeholder="+exp/-exp (int)">
|
<input id="dev-strength-exp" type="number" class="text-input" placeholder="+exp/-exp (int)">
|
||||||
@ -641,7 +644,7 @@
|
|||||||
<a id="location-slums-heist" class="a-link-button tooltip"> Heist </a>
|
<a id="location-slums-heist" class="a-link-button tooltip"> Heist </a>
|
||||||
|
|
||||||
<!-- City Hall -->
|
<!-- City Hall -->
|
||||||
<a id="location-cityhall-create-corporation" class='a-link-button'>Create a Corporation</a>
|
<a id="location-cityhall-create-corporation" class="a-link-button">Create a Corporation</a>
|
||||||
|
|
||||||
<!-- Bladeburner@NSA -->
|
<!-- Bladeburner@NSA -->
|
||||||
<a id="location-nsa-bladeburner" class="a-link-button">Bladeburner Division</a>
|
<a id="location-nsa-bladeburner" class="a-link-button">Bladeburner Division</a>
|
||||||
@ -687,7 +690,7 @@
|
|||||||
you 'reset' by installing Augmentations.
|
you 'reset' by installing Augmentations.
|
||||||
</p>
|
</p>
|
||||||
<a id="stock-market-buy-tix-api" class="a-link-button-inactive">Buy Trade Information eXchange (TIX) API Access</a>
|
<a id="stock-market-buy-tix-api" class="a-link-button-inactive">Buy Trade Information eXchange (TIX) API Access</a>
|
||||||
<a id="stock-market-investopedia" class='a-link-button'>Investopedia</a>
|
<a id="stock-market-investopedia" class="a-link-button">Investopedia</a>
|
||||||
<p id="stock-market-commission"> </p>
|
<p id="stock-market-commission"> </p>
|
||||||
<a id="stock-market-mode" class="a-link-button tooltip"></a>
|
<a id="stock-market-mode" class="a-link-button tooltip"></a>
|
||||||
<a id="stock-market-expand-tickers" class="a-link-button tooltip">Expand tickers</a>
|
<a id="stock-market-expand-tickers" class="a-link-button tooltip">Expand tickers</a>
|
||||||
@ -719,7 +722,7 @@
|
|||||||
<div id="yes-no-text-input-box-container" class="popup-box-container">
|
<div id="yes-no-text-input-box-container" class="popup-box-container">
|
||||||
<div id="yes-no-text-input-box-content" class="popup-box-content">
|
<div id="yes-no-text-input-box-content" class="popup-box-content">
|
||||||
<p id="yes-no-text-input-box-text"> </p>
|
<p id="yes-no-text-input-box-text"> </p>
|
||||||
<input type="text" id="yes-no-text-input-box-input" pattern="[a-zA-Z0-9-_]" maxlength="30" />
|
<input type="text" id="yes-no-text-input-box-input" pattern="[a-zA-Z0-9-_]" maxlength="30"/>
|
||||||
<span id="yes-no-text-input-box-yes" class="popup-box-button"> Yes </span>
|
<span id="yes-no-text-input-box-yes" class="popup-box-button"> Yes </span>
|
||||||
<span id="yes-no-text-input-box-no" class="popup-box-button"> No </span>
|
<span id="yes-no-text-input-box-no" class="popup-box-button"> No </span>
|
||||||
</div>
|
</div>
|
||||||
@ -781,9 +784,41 @@
|
|||||||
<!-- Character Overview Screen -->
|
<!-- Character Overview Screen -->
|
||||||
<div id="character-overview-wrapper">
|
<div id="character-overview-wrapper">
|
||||||
<div id="character-overview-container">
|
<div id="character-overview-container">
|
||||||
<p id="character-overview-text"> </p>
|
<div id="character-overview-text">
|
||||||
<span id="character-overview-save-button"> Save Game </span>
|
<table>
|
||||||
<span id="character-overview-options-button"> Options </span>
|
<tr id="character-hp-wrapper">
|
||||||
|
<td>Hp:</td><td id="character-hp-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="character-money-wrapper">
|
||||||
|
<td>Money: </td><td id="character-money-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="character-hack-wrapper">
|
||||||
|
<td>Hack: </td><td id="character-hack-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="character-str-wrapper">
|
||||||
|
<td>Str: </td><td id="character-str-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="character-def-wrapper">
|
||||||
|
<td>Def: </td><td id="character-def-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="character-dex-wrapper">
|
||||||
|
<td>Dex: </td><td id="character-dex-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="character-agi-wrapper">
|
||||||
|
<td>Agi: </td><td id="character-agi-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="character-cha-wrapper">
|
||||||
|
<td>Cha: </td><td id="character-cha-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="character-int-wrapper">
|
||||||
|
<td>Int: </td><td id="character-int-text" class="character-stat-cell"></td>
|
||||||
|
</tr>
|
||||||
|
<table>
|
||||||
|
</div>
|
||||||
|
<div class="character-quick-options">
|
||||||
|
<span id="character-overview-save-button"> Save Game </span>
|
||||||
|
<span id="character-overview-options-button"> Options </span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -809,7 +844,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<input type ="range" max="100" min="10" step="1" name="settingsNSExecTimeRangeVal" id="settingsNSExecTimeRangeVal" value="25" />
|
<input type ="range" max="100" min="10" step="1" name="settingsNSExecTimeRangeVal" id="settingsNSExecTimeRangeVal" value="25"/>
|
||||||
<em id="settingsNSExecTimeRangeValLabel" style="font-style: normal;"></em>
|
<em id="settingsNSExecTimeRangeValLabel" style="font-style: normal;"></em>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@ -823,7 +858,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<input type="range" max="100" min="20" step="1" name="settingsNSLogRangeVal" id="settingsNSLogRangeVal" value="50" />
|
<input type="range" max="100" min="20" step="1" name="settingsNSLogRangeVal" id="settingsNSLogRangeVal" value="50"/>
|
||||||
<em id="settingsNSLogRangeValLabel" style="font-style: normal;"></em>
|
<em id="settingsNSLogRangeValLabel" style="font-style: normal;"></em>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@ -837,7 +872,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<input type="range" max="100" min="20" step="1" name="settingsNSPortRangeVal" id="settingsNSPortRangeVal" value="50" />
|
<input type="range" max="100" min="20" step="1" name="settingsNSPortRangeVal" id="settingsNSPortRangeVal" value="50"/>
|
||||||
<em id="settingsNSPortRangeValLabel" style="font-style: normal;"></em>
|
<em id="settingsNSPortRangeValLabel" style="font-style: normal;"></em>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@ -849,7 +884,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<input type="range" max="600" min="0" step="1" name="settingsAutosaveIntervalVal" id="settingsAutosaveIntervalVal" value="60" />
|
<input type="range" max="600" min="0" step="1" name="settingsAutosaveIntervalVal" id="settingsAutosaveIntervalVal" value="60"/>
|
||||||
<em id="settingsAutosaveIntervalValLabel" style="font-style: normal;"></em>
|
<em id="settingsAutosaveIntervalValLabel" style="font-style: normal;"></em>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import {Engine} from "./engine";
|
import {Engine} from "./engine";
|
||||||
import {workerScripts,
|
import {workerScripts,
|
||||||
addWorkerScript,
|
|
||||||
killWorkerScript} from "./NetscriptWorker";
|
killWorkerScript} from "./NetscriptWorker";
|
||||||
import {Player} from "./Player";
|
import {Player} from "./Player";
|
||||||
import {getServer} from "./Server";
|
import {getServer} from "./Server";
|
||||||
@ -8,12 +7,15 @@ import {dialogBoxCreate} from "../utils/DialogBox";
|
|||||||
import {createAccordionElement} from "../utils/uiHelpers/createAccordionElement";
|
import {createAccordionElement} from "../utils/uiHelpers/createAccordionElement";
|
||||||
import {arrayToString} from "../utils/helpers/arrayToString";
|
import {arrayToString} from "../utils/helpers/arrayToString";
|
||||||
import {createElement} from "../utils/uiHelpers/createElement";
|
import {createElement} from "../utils/uiHelpers/createElement";
|
||||||
|
import {createProgressBarText} from "../utils/helpers/createProgressBarText";
|
||||||
import {exceptionAlert} from "../utils/helpers/exceptionAlert";
|
import {exceptionAlert} from "../utils/helpers/exceptionAlert";
|
||||||
|
import {getElementById} from "../utils/uiHelpers/getElementById";
|
||||||
import {logBoxCreate} from "../utils/LogBox";
|
import {logBoxCreate} from "../utils/LogBox";
|
||||||
import numeral from "numeral/min/numeral.min";
|
import numeral from "numeral/min/numeral.min";
|
||||||
import {formatNumber} from "../utils/StringHelperFunctions";
|
import {formatNumber} from "../utils/StringHelperFunctions";
|
||||||
import {removeChildrenFromElement} from "../utils/uiHelpers/removeChildrenFromElement";
|
import {removeChildrenFromElement} from "../utils/uiHelpers/removeChildrenFromElement";
|
||||||
import {removeElement} from "../utils/uiHelpers/removeElement";
|
import {removeElement} from "../utils/uiHelpers/removeElement";
|
||||||
|
import {roundToTwo} from "../utils/helpers/roundToTwo";
|
||||||
|
|
||||||
/* {
|
/* {
|
||||||
* serverName: {
|
* serverName: {
|
||||||
@ -28,12 +30,39 @@ import {removeElement} from "../utils/uiHelpers/removeElement";
|
|||||||
let ActiveScriptsUI = {};
|
let ActiveScriptsUI = {};
|
||||||
let ActiveScriptsTasks = []; //Sequentially schedule the creation/deletion of UI elements
|
let ActiveScriptsTasks = []; //Sequentially schedule the creation/deletion of UI elements
|
||||||
|
|
||||||
|
const getHeaderHtml = (server) => {
|
||||||
|
// TODO: calculate the longest hostname length rather than hard coding it
|
||||||
|
const longestHostnameLength = 18;
|
||||||
|
const paddedName = `${server.hostname}${" ".repeat(longestHostnameLength)}`.slice(0, Math.max(server.hostname.length, longestHostnameLength));
|
||||||
|
const barOptions = {
|
||||||
|
progress: server.ramUsed / server.maxRam,
|
||||||
|
totalTicks: 30
|
||||||
|
};
|
||||||
|
return `${paddedName} ${createProgressBarText(barOptions)}`.replace(/\s/g, ' ');
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateHeaderHtml = (server) => {
|
||||||
|
const accordion = ActiveScriptsUI[server.hostname];
|
||||||
|
if (accordion === null || accordion === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert it to a string, as that's how it's stored it will come out of the data attributes
|
||||||
|
const ramPercentage = '' + roundToTwo(server.ramUsed / server.maxRam);
|
||||||
|
if (accordion.header.dataset.ramPercentage !== ramPercentage) {
|
||||||
|
accordion.header.dataset.ramPercentage = ramPercentage;
|
||||||
|
accordion.header.innerHTML = getHeaderHtml(server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function createActiveScriptsServerPanel(server) {
|
function createActiveScriptsServerPanel(server) {
|
||||||
let hostname = server.hostname;
|
let hostname = server.hostname;
|
||||||
|
|
||||||
var activeScriptsList = document.getElementById("active-scripts-list");
|
var activeScriptsList = document.getElementById("active-scripts-list");
|
||||||
|
|
||||||
let res = createAccordionElement({hdrText:hostname});
|
let res = createAccordionElement({
|
||||||
|
hdrText: getHeaderHtml(server)
|
||||||
|
});
|
||||||
let li = res[0];
|
let li = res[0];
|
||||||
var hdr = res[1];
|
var hdr = res[1];
|
||||||
let panel = res[2];
|
let panel = res[2];
|
||||||
@ -116,20 +145,27 @@ function addActiveScriptsItem(workerscript) {
|
|||||||
"Args: " + arrayToString(workerscript.args)
|
"Args: " + arrayToString(workerscript.args)
|
||||||
}));
|
}));
|
||||||
var panelText = createElement("p", {
|
var panelText = createElement("p", {
|
||||||
innerText:"Loading...", fontSize:"14px",
|
innerText: "Loading...",
|
||||||
|
fontSize: "14px",
|
||||||
});
|
});
|
||||||
panel.appendChild(panelText);
|
panel.appendChild(panelText);
|
||||||
panel.appendChild(createElement("br"));
|
panel.appendChild(createElement("br"));
|
||||||
panel.appendChild(createElement("span", {
|
panel.appendChild(createElement("span", {
|
||||||
innerText:"Log", class:"active-scripts-button", margin:"4px", padding:"4px",
|
innerText: "Log",
|
||||||
clickListener:()=>{
|
class: "active-scripts-button",
|
||||||
|
margin: "4px",
|
||||||
|
padding: "4px",
|
||||||
|
clickListener: () => {
|
||||||
logBoxCreate(workerscript.scriptRef);
|
logBoxCreate(workerscript.scriptRef);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
panel.appendChild(createElement("span", {
|
panel.appendChild(createElement("span", {
|
||||||
innerText:"Kill Script", class:"active-scripts-button", margin:"4px", padding:"4px",
|
innerText: "Kill Script",
|
||||||
clickListener:()=>{
|
class: "active-scripts-button",
|
||||||
|
margin: "4px",
|
||||||
|
padding: "4px",
|
||||||
|
clickListener: () => {
|
||||||
killWorkerScript(workerscript.scriptRef, workerscript.scriptRef.scriptRef.server);
|
killWorkerScript(workerscript.scriptRef, workerscript.scriptRef.scriptRef.server);
|
||||||
dialogBoxCreate("Killing script, may take a few minutes to complete...");
|
dialogBoxCreate("Killing script, may take a few minutes to complete...");
|
||||||
return false;
|
return false;
|
||||||
@ -205,11 +241,10 @@ function updateActiveScriptsItems(maxTasks=150) {
|
|||||||
exceptionAlert(e);
|
exceptionAlert(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
document.getElementById("active-scripts-total-prod").innerHTML =
|
|
||||||
"Total online production of Active Scripts: " + numeral(total).format('$0.000a') + " / sec<br>" +
|
getElementById("active-scripts-total-production-active").innerText = numeral(total).format('$0.000a');
|
||||||
"Total online production since last Aug installation: " +
|
getElementById("active-scripts-total-prod-aug-total").innerText = numeral(Player.scriptProdSinceLastAug).format('$0.000a');
|
||||||
numeral(Player.scriptProdSinceLastAug).format('$0.000a') + " (" +
|
getElementById("active-scripts-total-prod-aug-avg").innerText = numeral(Player.scriptProdSinceLastAug / (Player.playtimeSinceLastAug/1000)).format('$0.000a');
|
||||||
numeral(Player.scriptProdSinceLastAug / (Player.playtimeSinceLastAug/1000)).format('$0.000a') + " / sec)";
|
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,6 +260,8 @@ function updateActiveScriptsItemContent(workerscript) {
|
|||||||
return; //Hasn't been created yet. We'll skip it
|
return; //Hasn't been created yet. We'll skip it
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateHeaderHtml(server);
|
||||||
|
|
||||||
var itemNameArray = ["active", "scripts", server.hostname, workerscript.name];
|
var itemNameArray = ["active", "scripts", server.hostname, workerscript.name];
|
||||||
for (var i = 0; i < workerscript.args.length; ++i) {
|
for (var i = 0; i < workerscript.args.length; ++i) {
|
||||||
itemNameArray.push(String(workerscript.args[i]));
|
itemNameArray.push(String(workerscript.args[i]));
|
||||||
@ -252,6 +289,7 @@ function updateActiveScriptsText(workerscript, item, itemName) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateHeaderHtml(server);
|
||||||
var onlineMps = workerscript.scriptRef.onlineMoneyMade / workerscript.scriptRef.onlineRunningTime;
|
var onlineMps = workerscript.scriptRef.onlineMoneyMade / workerscript.scriptRef.onlineRunningTime;
|
||||||
|
|
||||||
//Only update if the item is visible
|
//Only update if the item is visible
|
||||||
|
@ -1421,13 +1421,6 @@ Bladeburner.prototype.completeOperation = function(success) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var city = this.getCurrentCity();
|
var city = this.getCurrentCity();
|
||||||
if (this.logging.ops) {
|
|
||||||
if (success) {
|
|
||||||
this.log(action.name + " completed successfully! ")
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
switch (action.name) {
|
switch (action.name) {
|
||||||
case "Investigation":
|
case "Investigation":
|
||||||
if (success) {
|
if (success) {
|
||||||
|
59
src/CharacterOverview.js
Normal file
59
src/CharacterOverview.js
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
import {Player} from "./Player";
|
||||||
|
import numeral from "numeral/min/numeral.min";
|
||||||
|
|
||||||
|
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");
|
||||||
|
console.log(this.hp,this.money,this.hack,this.str,this.def,this.dex,this.agi,this.cha,this.int,this.intWrapper,this.repaintElem)
|
||||||
|
}
|
||||||
|
|
||||||
|
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, numeral(Player.money.toNumber()).format('($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};
|
@ -20,6 +20,7 @@ import {Augmentations, installAugmentations,
|
|||||||
import {BitNodes, initBitNodes,
|
import {BitNodes, initBitNodes,
|
||||||
initBitNodeMultipliers} from "./BitNode";
|
initBitNodeMultipliers} from "./BitNode";
|
||||||
import {Bladeburner} from "./Bladeburner";
|
import {Bladeburner} from "./Bladeburner";
|
||||||
|
import {CharacterOverview} from "./CharacterOverview";
|
||||||
import {cinematicTextFlag} from "./CinematicText";
|
import {cinematicTextFlag} from "./CinematicText";
|
||||||
import {CompanyPositions, initCompanies} from "./Company";
|
import {CompanyPositions, initCompanies} from "./Company";
|
||||||
import {Corporation} from "./CompanyManagement";
|
import {Corporation} from "./CompanyManagement";
|
||||||
@ -280,6 +281,7 @@ let Engine = {
|
|||||||
Bladeburner: "Bladeburner",
|
Bladeburner: "Bladeburner",
|
||||||
},
|
},
|
||||||
currentPage: null,
|
currentPage: null,
|
||||||
|
overview: new CharacterOverview(),
|
||||||
|
|
||||||
|
|
||||||
//Time variables (milliseconds unix epoch time)
|
//Time variables (milliseconds unix epoch time)
|
||||||
@ -570,20 +572,7 @@ let Engine = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
displayCharacterOverviewInfo: function() {
|
displayCharacterOverviewInfo: function() {
|
||||||
if (Player.hp == null) {Player.hp = Player.max_hp;}
|
Engine.overview.update();
|
||||||
var overviewText = "Hp: " + Player.hp + " / " + Player.max_hp + "<br>" +
|
|
||||||
"Money: " + numeral(Player.money.toNumber()).format('($0.000a)') + "<br>" +
|
|
||||||
"Hack: " + (Player.hacking_skill).toLocaleString() + "<br>" +
|
|
||||||
"Str: " + (Player.strength).toLocaleString() + "<br>" +
|
|
||||||
"Def: " + (Player.defense).toLocaleString() + "<br>" +
|
|
||||||
"Dex: " + (Player.dexterity).toLocaleString() + "<br>" +
|
|
||||||
"Agi: " + (Player.agility).toLocaleString() + "<br>" +
|
|
||||||
"Cha: " + (Player.charisma).toLocaleString();
|
|
||||||
if (Player.intelligence >= 1) {
|
|
||||||
overviewText += "<br>Int: " + (Player.intelligence).toLocaleString();
|
|
||||||
}
|
|
||||||
document.getElementById("character-overview-text").innerHTML = overviewText.replace( / /g, " ");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const save = document.getElementById("character-overview-save-button");
|
const save = document.getElementById("character-overview-save-button");
|
||||||
|
Loading…
Reference in New Issue
Block a user