/** * The full-screen page the player is currently be on. * These pages are mutually exclusive. */ export enum Page { /** * (Default) The terminal is where the player issues all commands, executes scripts, etc. */ Terminal = "Terminal", /** * Displays most of the statistics about the player. */ CharacterInfo = "CharacterInfo", /** * The console for editing Netscript files. */ ScriptEditor = "ScriptEditor", /** * Monitor the scripts currently executing across the servers. */ ActiveScripts = "ActiveScripts", /** * View, purchase, and upgrade Hacknet nodes. */ HacknetNodes = "HacknetNodes", /** * The list of programs the player could potentially build. */ CreateProgram = "CreateProgram", /** * The list of all factions, and invites, available to the player. */ Factions = "Factions", /** * Information about a specific faction. */ Faction = "Faction", /** * The list of installed, and yet-to-be installed, augmentations the player has purchased. */ Augmentations = "Augmentations", /** * List of milestones that players should follow. */ Milestones = "Milestones", /** * A collection of in-game material to learn about the game. */ Tutorial = "Tutorial", /** * A collection of items to manipulate the state of the game. Useful for development. */ DevMenu = "Dev Menu", /** * Visiting a location in the world */ Location = "Location", /** * A blocking page to show the player they are currently doing some action (building a program, working, etc.). */ workInProgress = "WorkInProgress", /** * A special screen to show the player they've reached a certain point in the game. */ RedPill = "RedPill", /** * A special screen to show the player they've reached a certain point in the game. */ CinematicText = "CinematicText", /** * Mini-game to infiltrate a company, gaining experience from successful progress. */ Infiltration = "Infiltration", /** * View the in-game stock market. */ StockMarket = "StockMarket", /** * Manage gang actions and members. */ Gang = "Gang", /** * Perform missions for a Faction. */ Mission = "Mission", /** * Manage a corporation. */ Corporation = "Corporation", /** * Manage special Bladeburner activities. */ Bladeburner = "Bladeburner", /** * Manage your Sleeves */ Sleeves = "Sleeves", /** * Purchase Resleeves */ Resleeves = "Re-sleeving", /** * Game options */ GameOptions = "GameOptions", } /** * This class keeps track of player navigation/routing within the game. */ class Routing { /** * Tracking the what page the user is currently on. */ private currentPage: Page | null = null; /** * Determines if the player is currently on the specified page. * @param page The page to compare against the current state. */ isOn(page: Page): boolean { return this.currentPage === page; } /** * Routes the player to the appropriate page. * @param page The page to navigate to. */ navigateTo(page: Page): void { this.currentPage = page; } } /** * The routing instance for tracking page navigation. */ export const routing: Routing = new Routing();