Change money to automatically color grey when something cannot be bought.

This commit is contained in:
Olivier Gagnon
2021-09-04 03:27:31 -04:00
parent 3a943e0e50
commit 6e013e4e6a
37 changed files with 112 additions and 92 deletions
+3 -3
View File
@@ -26,18 +26,18 @@ export function ScriptProduction(props: IProps): React.ReactElement {
Total online production of Active scripts: 
<span className="money-gold">
<span id="active-scripts-total-production-active">
{Money(onlineProduction)}
<Money money={onlineProduction} />
</span> / sec
</span><br />
Total online production since last Aug installation:&nbsp;
<span id="active-scripts-total-prod-aug-total" className="money-gold">
{Money(props.p.scriptProdSinceLastAug)}
<Money money={props.p.scriptProdSinceLastAug} />
</span>
&nbsp;(<span className="money-gold">
<span id="active-scripts-total-prod-aug-avg" className="money-gold">
{Money(prodRateSinceLastAug)}
<Money money={prodRateSinceLastAug} />
</span> / sec
</span>)
</p>
@@ -53,13 +53,13 @@ export function WorkerScriptAccordion(props: IProps): React.ReactElement {
<pre>Args: {arrayToString(props.workerScript.args)}</pre>
<pre>Online Time: {convertTimeMsToTimeElapsedString(scriptRef.onlineRunningTime * 1e3)}</pre>
<pre>Offline Time: {convertTimeMsToTimeElapsedString(scriptRef.offlineRunningTime * 1e3)}</pre>
<pre>Total online production: {Money(scriptRef.onlineMoneyMade)}</pre>
<pre>Total online production: <Money money={scriptRef.onlineMoneyMade} /></pre>
<pre>{(Array(26).join(" ") + numeralWrapper.formatExp(scriptRef.onlineExpGained) + " hacking exp")}</pre>
<pre>Online production rate: {Money(onlineMps)} / second</pre>
<pre>Online production rate: <Money money={onlineMps} /> / second</pre>
<pre>{(Array(25).join(" ") + numeralWrapper.formatExp(onlineEps) + " hacking exp / second")}</pre>
<pre>Total offline production: {Money(scriptRef.offlineMoneyMade)}</pre>
<pre>Total offline production: <Money money={scriptRef.offlineMoneyMade} /></pre>
<pre>{(Array(27).join(" ") + numeralWrapper.formatExp(scriptRef.offlineExpGained) + " hacking exp")}</pre>
<pre>Offline production rate: {Money(offlineMps)} / second</pre>
<pre>Offline production rate: <Money money={offlineMps} /> / second</pre>
<pre>{(Array(26).join(" ") + numeralWrapper.formatExp(offlineEps) + " hacking exp / second")}</pre>
<AccordionButton
+15 -15
View File
@@ -47,21 +47,21 @@ export function CharacterInfo(p: IPlayer): React.ReactElement {
}
function convertMoneySourceTrackerToString(src: MoneySourceTracker): React.ReactElement {
const parts: any[][] = [[`Total:`, Money(src.total)]];
if (src.bladeburner) { parts.push([`Bladeburner:`, Money(src.bladeburner)]) }
if (src.codingcontract) { parts.push([`Coding Contracts:`, Money(src.codingcontract)]) }
if (src.work) { parts.push([`Company Work:`, Money(src.work)]) }
if (src.class) { parts.push([`Class:`, Money(src.class)]) }
if (src.corporation) { parts.push([`Corporation:`, Money(src.corporation)]) }
if (src.crime) { parts.push([`Crimes:`, Money(src.crime)]) }
if (src.gang) { parts.push([`Gang:`, Money(src.gang)]) }
if (src.hacking) { parts.push([`Hacking:`, Money(src.hacking)]) }
if (src.hacknetnode) { parts.push([`Hacknet Nodes:`, Money(src.hacknetnode)]) }
if (src.hospitalization) { parts.push([`Hospitalization:`, Money(src.hospitalization)]) }
if (src.infiltration) { parts.push([`Infiltration:`, Money(src.infiltration)]) }
if (src.stock) { parts.push([`Stock Market:`, Money(src.stock)]) }
if (src.casino) { parts.push([`Casino:`, Money(src.casino)]) }
if (src.sleeves) { parts.push([`Sleeves:`, Money(src.sleeves)]) }
const parts: any[][] = [[`Total:`, <Money money={src.total} />]];
if (src.bladeburner) { parts.push([`Bladeburner:`, <Money money={src.bladeburner} />]) }
if (src.codingcontract) { parts.push([`Coding Contracts:`, <Money money={src.codingcontract} />]) }
if (src.work) { parts.push([`Company Work:`, <Money money={src.work} />]) }
if (src.class) { parts.push([`Class:`, <Money money={src.class} />]) }
if (src.corporation) { parts.push([`Corporation:`, <Money money={src.corporation} />]) }
if (src.crime) { parts.push([`Crimes:`, <Money money={src.crime} />]) }
if (src.gang) { parts.push([`Gang:`, <Money money={src.gang} />]) }
if (src.hacking) { parts.push([`Hacking:`, <Money money={src.hacking} />]) }
if (src.hacknetnode) { parts.push([`Hacknet Nodes:`, <Money money={src.hacknetnode} />]) }
if (src.hospitalization) { parts.push([`Hospitalization:`, <Money money={src.hospitalization} />]) }
if (src.infiltration) { parts.push([`Infiltration:`, <Money money={src.infiltration} />]) }
if (src.stock) { parts.push([`Stock Market:`, <Money money={src.stock} />]) }
if (src.casino) { parts.push([`Casino:`, <Money money={src.casino} />]) }
if (src.sleeves) { parts.push([`Sleeves:`, <Money money={src.sleeves} />]) }
return StatsTable(parts);
}
+12 -2
View File
@@ -1,6 +1,16 @@
import * as React from "react";
import { numeralWrapper } from "../../ui/numeralFormat";
import { IPlayer } from "../../PersonObjects/IPlayer";
export function Money(money: number | string): JSX.Element {
return <span className={"money-gold samefont"}>{typeof money === 'number' ? numeralWrapper.formatMoney(money) : money}</span>
interface IProps {
money: number | string;
player?: IPlayer;
}
export function Money(props: IProps): JSX.Element {
if(props.player !== undefined) {
if(typeof props.money !== 'number') throw new Error('if player if provided, money should be number, contact dev');
if(!props.player.canAfford(props.money))
return <span className={"unbuyable samefont"}>{numeralWrapper.formatMoney(props.money)}</span>
}
return <span className={"money-gold samefont"}>{typeof props.money === 'number' ? numeralWrapper.formatMoney(props.money) : props.money}</span>
}
+2 -1
View File
@@ -1,6 +1,7 @@
import React from 'react';
import { numeralWrapper } from "../../ui/numeralFormat";
import { Money } from "../../ui/React/Money";
export function MoneyRate(money: number): JSX.Element {
return Money(`${numeralWrapper.formatMoney(money)} / sec`);
return <Money money={`${numeralWrapper.formatMoney(money)} / sec`} />;
}