Merge pull request #3104 from MartinFournier/fix/bladeburner-early-routing

Attempt to fix `bladeburner.process()` early routing issue
This commit is contained in:
hydroflame
2022-03-10 22:10:06 -05:00
committed by GitHub
3 changed files with 6 additions and 0 deletions

View File

@ -1914,6 +1914,9 @@ export class Bladeburner implements IBladeburner {
} }
process(router: IRouter, player: IPlayer): void { process(router: IRouter, player: IPlayer): void {
// Edge race condition when the engine checks the processing counters and attempts to route before the router is initialized.
if (!router.isInitialized) return;
// Edge case condition...if Operation Daedalus is complete trigger the BitNode // Edge case condition...if Operation Daedalus is complete trigger the BitNode
if (router.page() !== Page.BitVerse && this.blackops.hasOwnProperty("Operation Daedalus")) { if (router.page() !== Page.BitVerse && this.blackops.hasOwnProperty("Operation Daedalus")) {
return router.toBitVerse(false, false); return router.toBitVerse(false, false);

View File

@ -111,6 +111,7 @@ const useStyles = makeStyles((theme: Theme) =>
); );
export let Router: IRouter = { export let Router: IRouter = {
isInitialized: false,
page: () => { page: () => {
throw new Error("Router called before initialization"); throw new Error("Router called before initialization");
}, },
@ -267,6 +268,7 @@ export function GameRoot({ player, engine, terminal }: IProps): React.ReactEleme
} }
Router = { Router = {
isInitialized: true,
page: () => page, page: () => page,
allowRouting: (value: boolean) => setAllowRoutingCalls(value), allowRouting: (value: boolean) => setAllowRoutingCalls(value),
toActiveScripts: () => setPage(Page.ActiveScripts), toActiveScripts: () => setPage(Page.ActiveScripts),

View File

@ -54,6 +54,7 @@ export interface IRouter {
// toMission(): void; // toMission(): void;
// toRedPill(): void; // toRedPill(): void;
// toworkInProgress(): void; // toworkInProgress(): void;
isInitialized: boolean;
page(): Page; page(): Page;
allowRouting(value: boolean): void; allowRouting(value: boolean): void;
toActiveScripts(): void; toActiveScripts(): void;