/** * Create the pop-up for purchasing upgrades with hashes */ import React from "react"; import { purchaseHashUpgrade } from "../HacknetHelpers"; import { HashManager } from "../HashManager"; import { HashUpgrades } from "../HashUpgrades"; import { Player } from "../../Player"; import { numeralWrapper } from "../../ui/numeralFormat"; import { ServerDropdown, ServerType } from "../../ui/React/ServerDropdown"; import { dialogBoxCreate } from "../../../utils/DialogBox"; import { CopyableText } from "../../ui/React/CopyableText"; import { Hashes } from "../../ui/React/Hashes"; class HashUpgrade extends React.Component { constructor(props) { super(props); this.state = { selectedServer: "ecorp", }; this.changeTargetServer = this.changeTargetServer.bind(this); this.purchase = this.purchase.bind( this, this.props.hashManager, this.props.upg, ); } changeTargetServer(e) { this.setState({ selectedServer: e.target.value, }); } purchase(hashManager, upg) { const canPurchase = hashManager.hashes >= hashManager.getUpgradeCost(upg.name); if (canPurchase) { const res = purchaseHashUpgrade(upg.name, this.state.selectedServer); if (res) { this.props.rerender(); } else { dialogBoxCreate( "Failed to purchase upgrade. This may be because you do not have enough hashes, " + "or because you do not have access to the feature this upgrade affects.", ); } } } render() { const hashManager = this.props.hashManager; const upg = this.props.upg; const cost = hashManager.getUpgradeCost(upg.name); const level = hashManager.upgrades[upg.name]; const effect = upg.effectText(level); // Purchase button const canPurchase = hashManager.hashes >= cost; const btnClass = canPurchase ? "std-button" : "std-button-disabled"; // We'll reuse a Bladeburner css class return (
Cost: {Hashes(cost)}, Bought: {level} times
{upg.desc}
{level > 0 && effect &&{effect}
} {upg.hasTargetServer && (Spend your hashes on a variety of different upgrades
Hashes: {numeralWrapper.formatHashes(this.state.totalHashes)}
{upgradeElems}