mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-19 06:03:50 +01:00
Add dummy function to generate a mock server or player for formulas stuff
This commit is contained in:
parent
895944aa19
commit
89aa23f4b3
@ -1,18 +1,19 @@
|
|||||||
|
import { Typography } from "@mui/material";
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
|
|
||||||
interface baubleProps {
|
interface baubleProps {
|
||||||
callback: () => boolean;
|
isConnected: () => boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ConnectionBauble = (props: baubleProps): React.ReactElement => {
|
export const ConnectionBauble = (props: baubleProps): React.ReactElement => {
|
||||||
const [connection, setConnection] = useState(props.callback());
|
const [connection, setConnection] = useState(props.isConnected());
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const timer = setInterval(() => {
|
const timer = setInterval(() => {
|
||||||
setConnection(props.callback());
|
setConnection(props.isConnected());
|
||||||
}, 1000);
|
}, 1000);
|
||||||
return () => clearInterval(timer);
|
return () => clearInterval(timer);
|
||||||
});
|
});
|
||||||
|
|
||||||
return <div className="ConnectionBauble">{connection ? "Connected" : "Disconnected"}</div>;
|
return <Typography>{connection ? "Connected" : "Disconnected"}</Typography>;
|
||||||
};
|
};
|
||||||
|
@ -389,7 +389,7 @@ export const CurrentOptionsPage = (props: IProps): React.ReactElement => {
|
|||||||
endAdornment: (
|
endAdornment: (
|
||||||
<Box>
|
<Box>
|
||||||
<Button onClick={newRemoteFileApiConnection}>Reconnect</Button>
|
<Button onClick={newRemoteFileApiConnection}>Reconnect</Button>
|
||||||
<ConnectionBauble callback={isRemoteFileApiConnectionLive} />
|
<ConnectionBauble isConnected={isRemoteFileApiConnectionLive} />
|
||||||
</Box>
|
</Box>
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
|
@ -500,12 +500,39 @@ function player(ctx: NetscriptContext, p: unknown): IPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function server(ctx: NetscriptContext, s: unknown): Server {
|
function server(ctx: NetscriptContext, s: unknown): Server {
|
||||||
if (!roughlyIs(new Server(), s)) throw makeRuntimeErrorMsg(ctx, `server should be a Server.`);
|
const fakeServer = {
|
||||||
|
cpuCores: undefined,
|
||||||
|
ftpPortOpen: undefined,
|
||||||
|
hasAdminRights: undefined,
|
||||||
|
hostname: undefined,
|
||||||
|
httpPortOpen: undefined,
|
||||||
|
ip: undefined,
|
||||||
|
isConnectedTo: undefined,
|
||||||
|
maxRam: undefined,
|
||||||
|
organizationName: undefined,
|
||||||
|
ramUsed: undefined,
|
||||||
|
smtpPortOpen: undefined,
|
||||||
|
sqlPortOpen: undefined,
|
||||||
|
sshPortOpen: undefined,
|
||||||
|
purchasedByPlayer: undefined,
|
||||||
|
backdoorInstalled: undefined,
|
||||||
|
baseDifficulty: undefined,
|
||||||
|
hackDifficulty: undefined,
|
||||||
|
minDifficulty: undefined,
|
||||||
|
moneyAvailable: undefined,
|
||||||
|
moneyMax: undefined,
|
||||||
|
numOpenPortsRequired: undefined,
|
||||||
|
openPortCount: undefined,
|
||||||
|
requiredHackingSkill: undefined,
|
||||||
|
serverGrowth: undefined,
|
||||||
|
};
|
||||||
|
if (!roughlyIs(fakeServer, s)) throw makeRuntimeErrorMsg(ctx, `server should be a Server.`);
|
||||||
return s as Server;
|
return s as Server;
|
||||||
}
|
}
|
||||||
|
|
||||||
function roughlyIs(expect: object, actual: unknown): boolean {
|
function roughlyIs(expect: object, actual: unknown): boolean {
|
||||||
if (typeof actual !== "object" || actual == null) return false;
|
if (typeof actual !== "object" || actual == null) return false;
|
||||||
|
|
||||||
const expects = Object.keys(expect);
|
const expects = Object.keys(expect);
|
||||||
const actuals = Object.keys(actual);
|
const actuals = Object.keys(actual);
|
||||||
for (const expect of expects)
|
for (const expect of expects)
|
||||||
|
@ -546,6 +546,8 @@ const SourceRamCosts = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
formulas: {
|
formulas: {
|
||||||
|
mockServer: 0,
|
||||||
|
mockPlayer: 0,
|
||||||
reputation: {
|
reputation: {
|
||||||
calculateFavorToRep: 0,
|
calculateFavorToRep: 0,
|
||||||
calculateRepToFavor: 0,
|
calculateRepToFavor: 0,
|
||||||
|
@ -52,6 +52,9 @@ import { LocationName } from "../Locations/data/LocationNames";
|
|||||||
import { calculateFactionExp, calculateFactionRep } from "../Work/formulas/Faction";
|
import { calculateFactionExp, calculateFactionRep } from "../Work/formulas/Faction";
|
||||||
import { FactionWorkType } from "../Work/data/FactionWorkType";
|
import { FactionWorkType } from "../Work/data/FactionWorkType";
|
||||||
|
|
||||||
|
import { Player as INetscriptPlayer, Server as IServerDef } from "../ScriptEditor/NetscriptDefinitions";
|
||||||
|
import { defaultMultipliers } from "../PersonObjects/Multipliers";
|
||||||
|
|
||||||
export function NetscriptFormulas(): InternalAPI<IFormulas> {
|
export function NetscriptFormulas(): InternalAPI<IFormulas> {
|
||||||
const checkFormulasAccess = function (ctx: NetscriptContext): void {
|
const checkFormulasAccess = function (ctx: NetscriptContext): void {
|
||||||
if (!player.hasProgram(Programs.Formulas.name)) {
|
if (!player.hasProgram(Programs.Formulas.name)) {
|
||||||
@ -59,6 +62,68 @@ export function NetscriptFormulas(): InternalAPI<IFormulas> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
|
mockServer: () => (): IServerDef => ({
|
||||||
|
cpuCores: 0,
|
||||||
|
ftpPortOpen: false,
|
||||||
|
hasAdminRights: false,
|
||||||
|
hostname: "",
|
||||||
|
httpPortOpen: false,
|
||||||
|
ip: "",
|
||||||
|
isConnectedTo: false,
|
||||||
|
maxRam: 0,
|
||||||
|
organizationName: "",
|
||||||
|
ramUsed: 0,
|
||||||
|
smtpPortOpen: false,
|
||||||
|
sqlPortOpen: false,
|
||||||
|
sshPortOpen: false,
|
||||||
|
purchasedByPlayer: false,
|
||||||
|
backdoorInstalled: false,
|
||||||
|
baseDifficulty: 0,
|
||||||
|
hackDifficulty: 0,
|
||||||
|
minDifficulty: 0,
|
||||||
|
moneyAvailable: 0,
|
||||||
|
moneyMax: 0,
|
||||||
|
numOpenPortsRequired: 0,
|
||||||
|
openPortCount: 0,
|
||||||
|
requiredHackingSkill: 0,
|
||||||
|
serverGrowth: 0,
|
||||||
|
}),
|
||||||
|
mockPlayer: () => (): INetscriptPlayer => ({
|
||||||
|
hp: { current: 0, max: 0 },
|
||||||
|
skills: {
|
||||||
|
hacking: 0,
|
||||||
|
strength: 0,
|
||||||
|
defense: 0,
|
||||||
|
dexterity: 0,
|
||||||
|
agility: 0,
|
||||||
|
charisma: 0,
|
||||||
|
intelligence: 0,
|
||||||
|
},
|
||||||
|
exp: {
|
||||||
|
hacking: 0,
|
||||||
|
strength: 0,
|
||||||
|
defense: 0,
|
||||||
|
dexterity: 0,
|
||||||
|
agility: 0,
|
||||||
|
charisma: 0,
|
||||||
|
intelligence: 0,
|
||||||
|
},
|
||||||
|
mults: defaultMultipliers(),
|
||||||
|
numPeopleKilled: 0,
|
||||||
|
money: 0,
|
||||||
|
city: "",
|
||||||
|
location: "",
|
||||||
|
bitNodeN: 0,
|
||||||
|
totalPlaytime: 0,
|
||||||
|
playtimeSinceLastAug: 0,
|
||||||
|
playtimeSinceLastBitnode: 0,
|
||||||
|
jobs: {},
|
||||||
|
factions: [],
|
||||||
|
tor: false,
|
||||||
|
hasCorporation: false,
|
||||||
|
inBladeburner: false,
|
||||||
|
entropy: 0,
|
||||||
|
}),
|
||||||
reputation: {
|
reputation: {
|
||||||
calculateFavorToRep:
|
calculateFavorToRep:
|
||||||
(ctx: NetscriptContext) =>
|
(ctx: NetscriptContext) =>
|
||||||
|
2
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
2
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@ -4149,6 +4149,8 @@ interface GangFormulas {
|
|||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
export interface Formulas {
|
export interface Formulas {
|
||||||
|
mockServer(): Server;
|
||||||
|
mockPlayer(): Player;
|
||||||
/** Reputation formulas */
|
/** Reputation formulas */
|
||||||
reputation: ReputationFormulas;
|
reputation: ReputationFormulas;
|
||||||
/** Skills formulas */
|
/** Skills formulas */
|
||||||
|
Loading…
Reference in New Issue
Block a user