mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-16 06:18:42 +02:00
DEVMENU: Reset hacknet server list properly when setting level of SF9 (#2177)
This commit is contained in:
@@ -8,10 +8,11 @@ import { Player } from "@player";
|
||||
import { Sleeve } from "../../PersonObjects/Sleeve/Sleeve";
|
||||
import { ButtonWithTooltip } from "../../ui/Components/ButtonWithTooltip";
|
||||
import { MaxSleevesFromCovenant } from "../../PersonObjects/Sleeve/SleeveCovenantPurchases";
|
||||
import { validBitNodes } from "../../BitNode/Constants";
|
||||
import { DeleteServer, GetAllServers } from "../../Server/AllServers";
|
||||
import { HacknetServer } from "../../Hacknet/HacknetServer";
|
||||
import { AutoExpandAccordion } from "../../ui/AutoExpand/AutoExpandAccordion";
|
||||
|
||||
// Update as additional BitNodes get implemented
|
||||
const validSFN = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
|
||||
const useStyles = makeStyles()({
|
||||
group: {
|
||||
display: "inline-flex",
|
||||
@@ -29,7 +30,19 @@ export function SourceFilesDev({ parentRerender }: { parentRerender: () => void
|
||||
const setSF = useCallback(
|
||||
(sfN: number, sfLvl: number) => () => {
|
||||
if (sfN === 9) {
|
||||
Player.hacknetNodes = [];
|
||||
if (sfLvl === 0) {
|
||||
// Make sure that Player.hacknetNodes contains only HackNode and there is no hacknet server in "AllServers".
|
||||
Player.hacknetNodes = Player.hacknetNodes.filter((node) => typeof node !== "string");
|
||||
for (const server of GetAllServers()) {
|
||||
if (!(server instanceof HacknetServer)) {
|
||||
continue;
|
||||
}
|
||||
DeleteServer(server.hostname);
|
||||
}
|
||||
} else {
|
||||
// Make sure that Player.hacknetNodes contains only the hostnames of hacknet servers.
|
||||
Player.hacknetNodes = Player.hacknetNodes.filter((node) => typeof node === "string");
|
||||
}
|
||||
}
|
||||
if (sfLvl === 0) {
|
||||
Player.sourceFiles.delete(sfN);
|
||||
@@ -50,7 +63,7 @@ export function SourceFilesDev({ parentRerender }: { parentRerender: () => void
|
||||
[parentRerender],
|
||||
);
|
||||
|
||||
const setAllSF = useCallback((sfLvl: number) => () => validSFN.forEach((sfN) => setSF(sfN, sfLvl)()), [setSF]);
|
||||
const setAllSF = useCallback((sfLvl: number) => () => validBitNodes.forEach((sfN) => setSF(sfN, sfLvl)()), [setSF]);
|
||||
const clearExploits = () => (Player.exploits = []);
|
||||
|
||||
const addSleeve = useCallback(() => {
|
||||
@@ -132,7 +145,7 @@ export function SourceFilesDev({ parentRerender }: { parentRerender: () => void
|
||||
<Button onClick={clearExploits}>Clear</Button>
|
||||
</td>
|
||||
</tr>
|
||||
{[undefined, ...validSFN].map((sfN) => buttonRow(sfN))}
|
||||
{[undefined, ...validBitNodes].map((sfN) => buttonRow(sfN))}
|
||||
</tbody>
|
||||
</table>
|
||||
</AccordionDetails>
|
||||
|
||||
@@ -383,7 +383,7 @@ function processAllHacknetNodeEarnings(numCycles: number): number {
|
||||
let total = 0;
|
||||
for (let i = 0; i < Player.hacknetNodes.length; ++i) {
|
||||
const node = Player.hacknetNodes[i];
|
||||
if (typeof node === "string") throw new Error("player node should not be ip string");
|
||||
if (typeof node === "string") throw new Error("player node should not be hostname string");
|
||||
node.updateMoneyGainRate(Player.mults.hacknet_node_money);
|
||||
total += processSingleHacknetNodeEarnings(numCycles, node);
|
||||
}
|
||||
@@ -405,12 +405,12 @@ function processAllHacknetServerEarnings(numCycles: number): number {
|
||||
|
||||
let hashes = 0;
|
||||
for (let i = 0; i < Player.hacknetNodes.length; ++i) {
|
||||
// hacknetNodes array only contains the IP addresses of the servers.
|
||||
// hacknetNodes array only contains the hostnames of the servers.
|
||||
// Also, update the hash rate before processing
|
||||
const ip = Player.hacknetNodes[i];
|
||||
if (ip instanceof HacknetNode) throw new Error(`player nodes should not be HacknetNode`);
|
||||
const hserver = GetServer(ip);
|
||||
if (!(hserver instanceof HacknetServer)) throw new Error(`player nodes should not be Server`);
|
||||
const hostname = Player.hacknetNodes[i];
|
||||
if (hostname instanceof HacknetNode) throw new Error(`player nodes should not be HacknetNode`);
|
||||
const hserver = GetServer(hostname);
|
||||
if (!(hserver instanceof HacknetServer)) throw new Error(`player nodes must be HacknetServer`);
|
||||
hserver.updateHashRate(Player.mults.hacknet_node_money);
|
||||
const h = hserver.process(numCycles);
|
||||
hashes += h;
|
||||
@@ -449,9 +449,9 @@ export function updateHashManagerCapacity(): void {
|
||||
Player.hashManager.updateCapacity(0);
|
||||
return;
|
||||
}
|
||||
const ip = nodes[i];
|
||||
if (ip instanceof HacknetNode) throw new Error(`player nodes should be string but isn't`);
|
||||
const h = GetServer(ip);
|
||||
const hostname = nodes[i];
|
||||
if (hostname instanceof HacknetNode) throw new Error(`player nodes should not be HacknetNode`);
|
||||
const h = GetServer(hostname);
|
||||
if (!(h instanceof HacknetServer)) {
|
||||
Player.hashManager.updateCapacity(0);
|
||||
return;
|
||||
|
||||
@@ -111,9 +111,9 @@ export function createUniqueRandomIp(): IPAddress {
|
||||
// Safely add a Server to the AllServers map
|
||||
export function AddToAllServers(server: Server | HacknetServer): void {
|
||||
if (GetServer(server.hostname)) {
|
||||
console.warn(`Hostname of the server thats being added: ${server.hostname}`);
|
||||
console.warn(`The server that already has this IP is: ${AllServers[server.hostname].hostname}`);
|
||||
throw new Error("Error: Trying to add a server with an existing IP");
|
||||
console.warn(`The hostname of the server that's being added is: ${server.hostname}`);
|
||||
console.warn(`The server that already has this hostname is: ${AllServers[server.hostname].hostname}`);
|
||||
throw new Error(`Error: Trying to add a server with an existing hostname. Hostname: ${server.hostname}.`);
|
||||
}
|
||||
|
||||
AllServers[server.hostname] = server;
|
||||
|
||||
Reference in New Issue
Block a user