From 9033640c0cc9ea334ee3196aff8749c1115b33e0 Mon Sep 17 00:00:00 2001 From: Martin Fournier Date: Wed, 12 Jan 2022 18:46:01 -0500 Subject: [PATCH 1/3] Revert "Fix duplicate previous pages" This reverts commit 16f7058e536648ddce8f9949b276071ae6baa854. --- src/ui/GameRoot.tsx | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/ui/GameRoot.tsx b/src/ui/GameRoot.tsx index 3211a2b9f..dd5633e3c 100644 --- a/src/ui/GameRoot.tsx +++ b/src/ui/GameRoot.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { cloneDeep, isEqual } from "lodash"; +import { cloneDeep } from "lodash"; import { IPlayer } from "../PersonObjects/IPlayer"; import { IEngine } from "../IEngine"; import { ITerminal } from "../Terminal/ITerminal"; @@ -251,16 +251,11 @@ export function GameRoot({ player, engine, terminal }: IProps): React.ReactEleme } function setCurrentPage(page: Page, ...args: any): void { - const newPage = { page, args: cloneDeep(args) }; - const previousPage = pageHistory[0]; - const isDifferentThenPrevious = page !== previousPage?.page || !isEqual([...args], previousPage?.args); - if (isDifferentThenPrevious) { - const history = [ - newPage, + const history = [ + { page, args: cloneDeep(args) }, ...pageHistory ].slice(0, 20); - setPageHistory(history) - } + setPageHistory(history) setPage(page) } From 2dee036e90486c8f8a7c9d3e0898c5fa7b3a8937 Mon Sep 17 00:00:00 2001 From: Martin Fournier Date: Wed, 12 Jan 2022 18:46:07 -0500 Subject: [PATCH 2/3] Revert "Move router.clearHistory() to prestigeAugmentation" This reverts commit b169406f8cff4d367ccf5c0de0f66211a6ba5525. --- src/Augmentation/AugmentationHelpers.tsx | 1 + src/Prestige.ts | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Augmentation/AugmentationHelpers.tsx b/src/Augmentation/AugmentationHelpers.tsx index 9d3d5fa3a..dffd8cc37 100644 --- a/src/Augmentation/AugmentationHelpers.tsx +++ b/src/Augmentation/AugmentationHelpers.tsx @@ -2582,6 +2582,7 @@ function installAugmentations(): boolean { augmentationList += aug.name + level + "
"; } Player.queuedAugmentations = []; + Router.clearHistory(); dialogBoxCreate( "You slowly drift to sleep as scientists put you under in order " + diff --git a/src/Prestige.ts b/src/Prestige.ts index 127ba7d4c..505f2c7df 100755 --- a/src/Prestige.ts +++ b/src/Prestige.ts @@ -161,8 +161,6 @@ export function prestigeAugmentation(): void { resetPidCounter(); ProgramsSeen.splice(0, ProgramsSeen.length); InvitationsSeen.splice(0, InvitationsSeen.length); - - Router.clearHistory(); } // Prestige by destroying Bit Node and gaining a Source File From 0a2187bdf5b5fa197957cffb641273777cc5d884 Mon Sep 17 00:00:00 2001 From: Martin Fournier Date: Wed, 12 Jan 2022 18:49:53 -0500 Subject: [PATCH 3/3] Revert "Add toPreviousPage in router" This reverts commit b0bc3236fdcd2c9f6cfb9c540010e9520c2cbe01. --- src/Augmentation/AugmentationHelpers.tsx | 2 - src/Prestige.ts | 2 - src/ui/GameRoot.tsx | 145 +++++------------------ src/ui/React/CharacterOverview.tsx | 17 +-- src/ui/Router.ts | 3 - src/ui/WorkInProgressRoot.tsx | 21 ++-- 6 files changed, 45 insertions(+), 145 deletions(-) diff --git a/src/Augmentation/AugmentationHelpers.tsx b/src/Augmentation/AugmentationHelpers.tsx index dffd8cc37..80f709a1f 100644 --- a/src/Augmentation/AugmentationHelpers.tsx +++ b/src/Augmentation/AugmentationHelpers.tsx @@ -2582,8 +2582,6 @@ function installAugmentations(): boolean { augmentationList += aug.name + level + "
"; } Player.queuedAugmentations = []; - Router.clearHistory(); - dialogBoxCreate( "You slowly drift to sleep as scientists put you under in order " + "to install the following Augmentations:
" + diff --git a/src/Prestige.ts b/src/Prestige.ts index 505f2c7df..971ad08c7 100755 --- a/src/Prestige.ts +++ b/src/Prestige.ts @@ -306,7 +306,5 @@ export function prestigeSourceFile(flume: boolean): void { // Gain int exp if (SourceFileFlags[5] !== 0 && !flume) Player.gainIntelligenceExp(300); - Router.clearHistory(); - resetPidCounter(); } diff --git a/src/ui/GameRoot.tsx b/src/ui/GameRoot.tsx index dd5633e3c..56e92e33c 100644 --- a/src/ui/GameRoot.tsx +++ b/src/ui/GameRoot.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { cloneDeep } from "lodash"; + import { IPlayer } from "../PersonObjects/IPlayer"; import { IEngine } from "../IEngine"; import { ITerminal } from "../Terminal/ITerminal"; @@ -86,11 +86,6 @@ interface IProps { engine: IEngine; } -interface PageHistoryEntry { - page: Page; - args: any[]; -} - const useStyles = makeStyles((theme: Theme) => createStyles({ root: { @@ -110,15 +105,6 @@ export let Router: IRouter = { page: () => { throw new Error("Router called before initialization"); }, - previousPage: () => { - throw new Error("Router called before initialization"); - }, - clearHistory: () => { - throw new Error("Router called before initialization"); - }, - toPreviousPage: (): boolean => { - throw new Error("Router called before initialization"); - }, toActiveScripts: () => { throw new Error("Router called before initialization"); }, @@ -217,9 +203,7 @@ function determineStartPage(player: IPlayer): Page { export function GameRoot({ player, engine, terminal }: IProps): React.ReactElement { const classes = useStyles(); const [{ files, vim }, setEditorOptions] = useState({ files: {}, vim: false }); - const startPage = determineStartPage(player); - const [page, setPage] = useState(startPage); - const [pageHistory, setPageHistory] = useState([{ page: startPage, args: [] }]); + const [page, setPage] = useState(determineStartPage(player)); const setRerender = useState(0)[1]; const [faction, setFaction] = useState( player.currentWorkFactionName ? Factions[player.currentWorkFactionName] : (undefined as unknown as Faction), @@ -250,131 +234,70 @@ export function GameRoot({ player, engine, terminal }: IProps): React.ReactEleme setTimeout(() => htmlLocation.reload(), 2000); } - function setCurrentPage(page: Page, ...args: any): void { - const history = [ - { page, args: cloneDeep(args) }, - ...pageHistory - ].slice(0, 20); - setPageHistory(history) - setPage(page) - } - - function goBack(fallback: (...args: any[]) => void): void { - const [ , previousPage ] = pageHistory; - if (previousPage) { - const handler = pageToRouterMap[previousPage?.page]; - handler(...previousPage.args); - } else { - if (fallback) fallback(); - } - const [ , ...history] = pageHistory; - setPageHistory(cloneDeep(history)); - } - - const pageToRouterMap: { [key: number] : (...args: any[]) => void } = { - [Page.ActiveScripts]: Router.toActiveScripts, - [Page.Augmentations]: Router.toAugmentations, - [Page.Bladeburner]: Router.toBladeburner, - [Page.Stats]: Router.toStats, - [Page.Corporation]: Router.toCorporation, - [Page.CreateProgram]: Router.toCreateProgram, - [Page.DevMenu]: Router.toDevMenu, - [Page.Faction]: Router.toFaction, - [Page.Factions]: Router.toFactions, - [Page.Options]: Router.toGameOptions, - [Page.Gang]: Router.toGang, - [Page.Hacknet]: Router.toHacknetNodes, - [Page.Milestones]: Router.toMilestones, - [Page.Resleeves]: Router.toResleeves, - [Page.ScriptEditor]: Router.toScriptEditor, - [Page.Sleeves]: Router.toSleeves, - [Page.StockMarket]: Router.toStockMarket, - [Page.Terminal]: Router.toTerminal, - [Page.Tutorial]: Router.toTutorial, - [Page.Job]: Router.toJob, - [Page.City]: Router.toCity, - [Page.Travel]: Router.toTravel, - [Page.BitVerse]: Router.toBitVerse, - [Page.Infiltration]: Router.toInfiltration, - [Page.Work]: Router.toWork, - [Page.BladeburnerCinematic]: Router.toBladeburnerCinematic, - [Page.Location]: Router.toLocation, - [Page.StaneksGift]: Router.toStaneksGift, - [Page.Achievements]: Router.toAchievements, - } - Router = { page: () => page, - previousPage: () => { - const [ , previousPage] = pageHistory; - return previousPage?.page ?? -1; - }, - clearHistory: () => setPageHistory([]), - toPreviousPage: goBack, - toActiveScripts: () => setCurrentPage(Page.ActiveScripts), - toAugmentations: () => setCurrentPage(Page.Augmentations), - toBladeburner: () => setCurrentPage(Page.Bladeburner), - toStats: () => setCurrentPage(Page.Stats), - toCorporation: () => setCurrentPage(Page.Corporation), - toCreateProgram: () => setCurrentPage(Page.CreateProgram), - toDevMenu: () => setCurrentPage(Page.DevMenu), + toActiveScripts: () => setPage(Page.ActiveScripts), + toAugmentations: () => setPage(Page.Augmentations), + toBladeburner: () => setPage(Page.Bladeburner), + toStats: () => setPage(Page.Stats), + toCorporation: () => setPage(Page.Corporation), + toCreateProgram: () => setPage(Page.CreateProgram), + toDevMenu: () => setPage(Page.DevMenu), toFaction: (faction?: Faction) => { - setCurrentPage(Page.Faction, faction); + setPage(Page.Faction); if (faction) setFaction(faction); }, - toFactions: () => setCurrentPage(Page.Factions), - toGameOptions: () => setCurrentPage(Page.Options), - toGang: () => setCurrentPage(Page.Gang), - toHacknetNodes: () => setCurrentPage(Page.Hacknet), - toMilestones: () => setCurrentPage(Page.Milestones), - toResleeves: () => setCurrentPage(Page.Resleeves), + toFactions: () => setPage(Page.Factions), + toGameOptions: () => setPage(Page.Options), + toGang: () => setPage(Page.Gang), + toHacknetNodes: () => setPage(Page.Hacknet), + toMilestones: () => setPage(Page.Milestones), + toResleeves: () => setPage(Page.Resleeves), toScriptEditor: (files: Record, options?: ScriptEditorRouteOptions) => { setEditorOptions({ files, vim: !!options?.vim, }); - setCurrentPage(Page.ScriptEditor, files, options); + setPage(Page.ScriptEditor); }, - toSleeves: () => setCurrentPage(Page.Sleeves), - toStockMarket: () => setCurrentPage(Page.StockMarket), - toTerminal: () => setCurrentPage(Page.Terminal), - toTutorial: () => setCurrentPage(Page.Tutorial), + toSleeves: () => setPage(Page.Sleeves), + toStockMarket: () => setPage(Page.StockMarket), + toTerminal: () => setPage(Page.Terminal), + toTutorial: () => setPage(Page.Tutorial), toJob: () => { setLocation(Locations[player.companyName]); - setCurrentPage(Page.Job); + setPage(Page.Job); }, toCity: () => { - setCurrentPage(Page.City); + setPage(Page.City); }, toTravel: () => { player.gotoLocation(LocationName.TravelAgency); - setCurrentPage(Page.Travel); + setPage(Page.Travel); }, toBitVerse: (flume: boolean, quick: boolean) => { setFlume(flume); setQuick(quick); - setCurrentPage(Page.BitVerse, flume, quick); + setPage(Page.BitVerse); }, toInfiltration: (location: Location) => { setLocation(location); - setCurrentPage(Page.Infiltration, location); - }, - toWork: () => { - setCurrentPage(Page.Work); + setPage(Page.Infiltration); }, + toWork: () => setPage(Page.Work), toBladeburnerCinematic: () => { - setCurrentPage(Page.BladeburnerCinematic); + setPage(Page.BladeburnerCinematic); setCinematicText(cinematicText); }, toLocation: (location: Location) => { setLocation(location); - setCurrentPage(Page.Location, location); + setPage(Page.Location); }, toStaneksGift: () => { - setCurrentPage(Page.StaneksGift); + setPage(Page.StaneksGift); }, toAchievements: () => { - setCurrentPage(Page.Achievements); + setPage(Page.Achievements); }, }; @@ -577,11 +500,7 @@ export function GameRoot({ player, engine, terminal }: IProps): React.ReactEleme {!ITutorial.isRunning ? ( - saveObject.saveGame()} - killScripts={killAllScripts} - router={Router} - allowBackButton={withSidebar} /> + saveObject.saveGame()} killScripts={killAllScripts} /> ) : ( )} diff --git a/src/ui/React/CharacterOverview.tsx b/src/ui/React/CharacterOverview.tsx index 50010bb07..9057e04e8 100644 --- a/src/ui/React/CharacterOverview.tsx +++ b/src/ui/React/CharacterOverview.tsx @@ -17,22 +17,19 @@ import Typography from "@mui/material/Typography"; import Button from "@mui/material/Button"; import IconButton from "@mui/material/IconButton"; import SaveIcon from "@mui/icons-material/Save"; -import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import ClearAllIcon from "@mui/icons-material/ClearAll"; import { Settings } from "../../Settings/Settings"; import { use } from "../Context"; import { StatsProgressOverviewCell } from "./StatsProgressBar"; import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers"; -import { IRouter, Page } from "../Router"; + import { Box, Tooltip } from "@mui/material"; import { CONSTANTS } from "../../Constants"; interface IProps { save: () => void; killScripts: () => void; - router: IRouter; - allowBackButton: boolean; } function Intelligence(): React.ReactElement { @@ -239,7 +236,7 @@ const useStyles = makeStyles((theme: Theme) => export { useStyles as characterOverviewStyles }; -export function CharacterOverview({ save, killScripts, router, allowBackButton }: IProps): React.ReactElement { +export function CharacterOverview({ save, killScripts }: IProps): React.ReactElement { const [killOpen, setKillOpen] = useState(false); const player = use.Player(); @@ -278,9 +275,6 @@ export function CharacterOverview({ save, killScripts, router, allowBackButton } player.charisma_mult * BitNodeMultipliers.CharismaLevelMultiplier, ); - const previousPageName = - router.previousPage() < 0 ? "" : Page[router.previousPage() ?? 0].replace(/([a-z])([A-Z])/g, "$1 $2"); - return ( <> @@ -464,13 +458,6 @@ export function CharacterOverview({ save, killScripts, router, allowBackButton } - {allowBackButton && ( - router.toPreviousPage()}> - - - - - )} setKillOpen(true)}> diff --git a/src/ui/Router.ts b/src/ui/Router.ts index 8bf86f704..4056a44ac 100644 --- a/src/ui/Router.ts +++ b/src/ui/Router.ts @@ -53,9 +53,6 @@ export interface IRouter { // toRedPill(): void; // toworkInProgress(): void; page(): Page; - previousPage(): Page; - clearHistory(): void; - toPreviousPage(fallback?: (...args: any[]) => void): void; toActiveScripts(): void; toAugmentations(): void; toBitVerse(flume: boolean, quick: boolean): void; diff --git a/src/ui/WorkInProgressRoot.tsx b/src/ui/WorkInProgressRoot.tsx index 535629deb..d43843c85 100644 --- a/src/ui/WorkInProgressRoot.tsx +++ b/src/ui/WorkInProgressRoot.tsx @@ -36,12 +36,12 @@ export function WorkInProgressRoot(): React.ReactElement { const faction = Factions[player.currentWorkFactionName]; if (player.workType == CONSTANTS.WorkTypeFaction) { function cancel(): void { + router.toFaction(faction); player.finishFactionWork(true); - router.toPreviousPage(() => router.toFaction(faction)); } function unfocus(): void { + router.toFaction(faction); player.stopFocusing(); - router.toPreviousPage(() => router.toFaction(faction)); } return ( @@ -120,12 +120,13 @@ export function WorkInProgressRoot(): React.ReactElement { if (player.className !== "") { function cancel(): void { player.finishClass(true); - router.toPreviousPage(() => router.toCity()); + router.toCity(); } function unfocus(): void { + router.toFaction(faction); + router.toCity(); player.stopFocusing(); - router.toPreviousPage(() => router.toCity()); } let stopText = ""; @@ -211,11 +212,11 @@ export function WorkInProgressRoot(): React.ReactElement { function cancel(): void { player.finishWork(true); - router.toPreviousPage(() => router.toJob()); + router.toJob(); } function unfocus(): void { player.stopFocusing(); - router.toPreviousPage(() => router.toJob()); + router.toJob(); } const position = player.jobs[player.companyName]; @@ -303,11 +304,11 @@ export function WorkInProgressRoot(): React.ReactElement { if (player.workType == CONSTANTS.WorkTypeCompanyPartTime) { function cancel(): void { player.finishWorkPartTime(true); - router.toPreviousPage(() => router.toJob()); + router.toJob(); } function unfocus(): void { player.stopFocusing(); - router.toPreviousPage(() => router.toJob()); + router.toJob(); } const comp = Companies[player.companyName]; let companyRep = 0; @@ -439,11 +440,11 @@ export function WorkInProgressRoot(): React.ReactElement { if (player.createProgramName !== "") { function cancel(): void { player.finishCreateProgramWork(true); - router.toPreviousPage(() => router.toTerminal()); + router.toTerminal(); } function unfocus(): void { + router.toTerminal(); player.stopFocusing(); - router.toPreviousPage(() => router.toTerminal()); } return (