mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-20 13:15:48 +01:00
lint
This commit is contained in:
parent
4a3201cba3
commit
fb37f6b94d
@ -30,4 +30,5 @@ export interface IEngine {
|
|||||||
loadMissionContent: () => void;
|
loadMissionContent: () => void;
|
||||||
loadResleevingContent: () => void;
|
loadResleevingContent: () => void;
|
||||||
loadGameOptionsContent: () => void;
|
loadGameOptionsContent: () => void;
|
||||||
|
load: (save: string) => void;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ import React, { useState } from "react";
|
|||||||
import { Intro } from "./Intro";
|
import { Intro } from "./Intro";
|
||||||
import { Game } from "./Game";
|
import { Game } from "./Game";
|
||||||
import { Location } from "../../Locations/Location";
|
import { Location } from "../../Locations/Location";
|
||||||
import { Locations } from "../../Locations/Locations";
|
|
||||||
import { use } from "../../ui/Context";
|
import { use } from "../../ui/Context";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
|
5
src/InteractiveTutorial.d.ts
vendored
5
src/InteractiveTutorial.d.ts
vendored
@ -1,5 +0,0 @@
|
|||||||
export declare function iTutorialNextStep(): void;
|
|
||||||
export declare function iTutorialPrevStep(): void;
|
|
||||||
export declare function iTutorialEnd(): void;
|
|
||||||
export declare const ITutorial: { isRunning: boolean; currStep: number };
|
|
||||||
export declare const iTutorialSteps: { [key: string]: number | undefined };
|
|
@ -1,122 +0,0 @@
|
|||||||
import { Engine } from "./engine";
|
|
||||||
import { Player } from "./Player";
|
|
||||||
import { Settings } from "./Settings/Settings";
|
|
||||||
|
|
||||||
import { LiteratureNames } from "./Literature/data/LiteratureNames";
|
|
||||||
|
|
||||||
import { ITutorialEvents } from "./ui/InteractiveTutorial/ITutorialEvents";
|
|
||||||
|
|
||||||
import { clearEventListeners } from "../utils/uiHelpers/clearEventListeners";
|
|
||||||
import { createElement } from "../utils/uiHelpers/createElement";
|
|
||||||
import { createPopup } from "../utils/uiHelpers/createPopup";
|
|
||||||
import { removeElementById } from "../utils/uiHelpers/removeElementById";
|
|
||||||
|
|
||||||
// Ordered array of keys to Interactive Tutorial Steps
|
|
||||||
const orderedITutorialSteps = [
|
|
||||||
"Start",
|
|
||||||
"GoToCharacterPage", // Click on 'Stats' page
|
|
||||||
"CharacterPage", // Introduction to 'Stats' page
|
|
||||||
"CharacterGoToTerminalPage", // Go back to Terminal
|
|
||||||
"TerminalIntro", // Introduction to Terminal
|
|
||||||
"TerminalHelp", // Using 'help' Terminal command
|
|
||||||
"TerminalLs", // Using 'ls' Terminal command
|
|
||||||
"TerminalScan", // Using 'scan' Terminal command
|
|
||||||
"TerminalScanAnalyze1", // Using 'scan-analyze' Terminal command
|
|
||||||
"TerminalScanAnalyze2", // Using 'scan-analyze 3' Terminal command
|
|
||||||
"TerminalConnect", // Connecting to n00dles
|
|
||||||
"TerminalAnalyze", // Analyzing n00dles
|
|
||||||
"TerminalNuke", // NUKE n00dles
|
|
||||||
"TerminalManualHack", // Hack n00dles
|
|
||||||
"TerminalHackingMechanics", // Explanation of hacking mechanics
|
|
||||||
"TerminalGoHome", // Go home before creating a script.
|
|
||||||
"TerminalCreateScript", // Create a script using 'nano'
|
|
||||||
"TerminalTypeScript", // Script Editor page - Type script and then save & close
|
|
||||||
"TerminalFree", // Using 'Free' Terminal command
|
|
||||||
"TerminalRunScript", // Running script using 'run' Terminal command
|
|
||||||
"TerminalGoToActiveScriptsPage",
|
|
||||||
"ActiveScriptsPage",
|
|
||||||
"ActiveScriptsToTerminal",
|
|
||||||
"TerminalTailScript",
|
|
||||||
"GoToHacknetNodesPage",
|
|
||||||
"HacknetNodesIntroduction",
|
|
||||||
"HacknetNodesGoToWorldPage",
|
|
||||||
"WorldDescription",
|
|
||||||
"TutorialPageInfo",
|
|
||||||
"End",
|
|
||||||
];
|
|
||||||
|
|
||||||
// Create an 'enum' for the Steps
|
|
||||||
const iTutorialSteps = {};
|
|
||||||
for (let i = 0; i < orderedITutorialSteps.length; ++i) {
|
|
||||||
iTutorialSteps[orderedITutorialSteps[i]] = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
const ITutorial = {
|
|
||||||
currStep: 0, // iTutorialSteps.Start
|
|
||||||
isRunning: false,
|
|
||||||
|
|
||||||
// Keeps track of whether each step has been done
|
|
||||||
stepIsDone: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
function iTutorialStart() {
|
|
||||||
// Initialize Interactive Tutorial state by settings 'done' for each state to false
|
|
||||||
ITutorial.stepIsDone = {};
|
|
||||||
for (let i = 0; i < orderedITutorialSteps.length; ++i) {
|
|
||||||
ITutorial.stepIsDone[i] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't autosave during this interactive tutorial
|
|
||||||
Engine.Counters.autoSaveCounter = Infinity;
|
|
||||||
ITutorial.currStep = 0;
|
|
||||||
ITutorial.isRunning = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Go to the next step and evaluate it
|
|
||||||
function iTutorialNextStep() {
|
|
||||||
ITutorial.stepIsDone[ITutorial.currStep] = true;
|
|
||||||
if (ITutorial.currStep < iTutorialSteps.End) {
|
|
||||||
ITutorial.currStep += 1;
|
|
||||||
}
|
|
||||||
if (ITutorial.currStep === iTutorialSteps.End) iTutorialEnd();
|
|
||||||
ITutorialEvents.emit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Go to previous step and evaluate
|
|
||||||
function iTutorialPrevStep() {
|
|
||||||
if (ITutorial.currStep > iTutorialSteps.Start) {
|
|
||||||
ITutorial.currStep -= 1;
|
|
||||||
}
|
|
||||||
ITutorialEvents.emit();
|
|
||||||
}
|
|
||||||
|
|
||||||
function iTutorialEnd() {
|
|
||||||
ITutorial.isRunning = false;
|
|
||||||
|
|
||||||
// Create a popup with final introductory stuff
|
|
||||||
const popupId = "interactive-tutorial-ending-popup";
|
|
||||||
const txt = createElement("p", {
|
|
||||||
innerHTML:
|
|
||||||
"If you are new to the game, the following links may be useful for you!<br><br>" +
|
|
||||||
"<a class='a-link-button' href='https://bitburner.readthedocs.io/en/latest/guidesandtips/gettingstartedguideforbeginnerprogrammers.html' target='_blank'>Getting Started Guide</a>" +
|
|
||||||
"<a class='a-link-button' href='https://bitburner.readthedocs.io/en/latest/' target='_blank'>Documentation</a><br><br>" +
|
|
||||||
"The Beginner's Guide to Hacking was added to your home computer! It contains some tips/pointers for starting out with the game. " +
|
|
||||||
"To read it, go to Terminal and enter<br><br>cat " +
|
|
||||||
LiteratureNames.HackersStartingHandbook,
|
|
||||||
});
|
|
||||||
const gotitBtn = createElement("a", {
|
|
||||||
class: "a-link-button",
|
|
||||||
float: "right",
|
|
||||||
padding: "6px",
|
|
||||||
innerText: "Got it!",
|
|
||||||
clickListener: () => {
|
|
||||||
removeElementById(popupId);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
createPopup(popupId, [txt, gotitBtn]);
|
|
||||||
|
|
||||||
Player.getHomeComputer().messages.push(LiteratureNames.HackersStartingHandbook);
|
|
||||||
ITutorialEvents.emit();
|
|
||||||
}
|
|
||||||
|
|
||||||
export { iTutorialSteps, iTutorialEnd, iTutorialStart, iTutorialNextStep, ITutorial, iTutorialPrevStep };
|
|
170
src/InteractiveTutorial.ts
Normal file
170
src/InteractiveTutorial.ts
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
import { Player } from "./Player";
|
||||||
|
|
||||||
|
import { LiteratureNames } from "./Literature/data/LiteratureNames";
|
||||||
|
|
||||||
|
import { ITutorialEvents } from "./ui/InteractiveTutorial/ITutorialEvents";
|
||||||
|
|
||||||
|
import { createElement } from "../utils/uiHelpers/createElement";
|
||||||
|
import { createPopup } from "../utils/uiHelpers/createPopup";
|
||||||
|
import { removeElementById } from "../utils/uiHelpers/removeElementById";
|
||||||
|
|
||||||
|
// Ordered array of keys to Interactive Tutorial Steps
|
||||||
|
enum iTutorialSteps {
|
||||||
|
Start,
|
||||||
|
GoToCharacterPage, // Click on 'Stats' page
|
||||||
|
CharacterPage, // Introduction to 'Stats' page
|
||||||
|
CharacterGoToTerminalPage, // Go back to Terminal
|
||||||
|
TerminalIntro, // Introduction to Terminal
|
||||||
|
TerminalHelp, // Using 'help' Terminal command
|
||||||
|
TerminalLs, // Using 'ls' Terminal command
|
||||||
|
TerminalScan, // Using 'scan' Terminal command
|
||||||
|
TerminalScanAnalyze1, // Using 'scan-analyze' Terminal command
|
||||||
|
TerminalScanAnalyze2, // Using 'scan-analyze 3' Terminal command
|
||||||
|
TerminalConnect, // Connecting to n00dles
|
||||||
|
TerminalAnalyze, // Analyzing n00dles
|
||||||
|
TerminalNuke, // NUKE n00dles
|
||||||
|
TerminalManualHack, // Hack n00dles
|
||||||
|
TerminalHackingMechanics, // Explanation of hacking mechanics
|
||||||
|
TerminalGoHome, // Go home before creating a script.
|
||||||
|
TerminalCreateScript, // Create a script using 'nano'
|
||||||
|
TerminalTypeScript, // Script Editor page - Type script and then save & close
|
||||||
|
TerminalFree, // Using 'Free' Terminal command
|
||||||
|
TerminalRunScript, // Running script using 'run' Terminal command
|
||||||
|
TerminalGoToActiveScriptsPage,
|
||||||
|
ActiveScriptsPage,
|
||||||
|
ActiveScriptsToTerminal,
|
||||||
|
TerminalTailScript,
|
||||||
|
GoToHacknetNodesPage,
|
||||||
|
HacknetNodesIntroduction,
|
||||||
|
HacknetNodesGoToWorldPage,
|
||||||
|
WorldDescription,
|
||||||
|
TutorialPageInfo,
|
||||||
|
End,
|
||||||
|
}
|
||||||
|
|
||||||
|
const ITutorial: {
|
||||||
|
currStep: iTutorialSteps;
|
||||||
|
isRunning: boolean;
|
||||||
|
stepIsDone: {
|
||||||
|
[iTutorialSteps.Start]: boolean;
|
||||||
|
[iTutorialSteps.GoToCharacterPage]: boolean;
|
||||||
|
[iTutorialSteps.CharacterPage]: boolean;
|
||||||
|
[iTutorialSteps.CharacterGoToTerminalPage]: boolean;
|
||||||
|
[iTutorialSteps.TerminalIntro]: boolean;
|
||||||
|
[iTutorialSteps.TerminalHelp]: boolean;
|
||||||
|
[iTutorialSteps.TerminalLs]: boolean;
|
||||||
|
[iTutorialSteps.TerminalScan]: boolean;
|
||||||
|
[iTutorialSteps.TerminalScanAnalyze1]: boolean;
|
||||||
|
[iTutorialSteps.TerminalScanAnalyze2]: boolean;
|
||||||
|
[iTutorialSteps.TerminalConnect]: boolean;
|
||||||
|
[iTutorialSteps.TerminalAnalyze]: boolean;
|
||||||
|
[iTutorialSteps.TerminalNuke]: boolean;
|
||||||
|
[iTutorialSteps.TerminalManualHack]: boolean;
|
||||||
|
[iTutorialSteps.TerminalHackingMechanics]: boolean;
|
||||||
|
[iTutorialSteps.TerminalGoHome]: boolean;
|
||||||
|
[iTutorialSteps.TerminalCreateScript]: boolean;
|
||||||
|
[iTutorialSteps.TerminalTypeScript]: boolean;
|
||||||
|
[iTutorialSteps.TerminalFree]: boolean;
|
||||||
|
[iTutorialSteps.TerminalRunScript]: boolean;
|
||||||
|
[iTutorialSteps.TerminalGoToActiveScriptsPage]: boolean;
|
||||||
|
[iTutorialSteps.ActiveScriptsPage]: boolean;
|
||||||
|
[iTutorialSteps.ActiveScriptsToTerminal]: boolean;
|
||||||
|
[iTutorialSteps.TerminalTailScript]: boolean;
|
||||||
|
[iTutorialSteps.GoToHacknetNodesPage]: boolean;
|
||||||
|
[iTutorialSteps.HacknetNodesIntroduction]: boolean;
|
||||||
|
[iTutorialSteps.HacknetNodesGoToWorldPage]: boolean;
|
||||||
|
[iTutorialSteps.WorldDescription]: boolean;
|
||||||
|
[iTutorialSteps.TutorialPageInfo]: boolean;
|
||||||
|
[iTutorialSteps.End]: boolean;
|
||||||
|
};
|
||||||
|
} = {
|
||||||
|
currStep: iTutorialSteps.Start,
|
||||||
|
isRunning: false,
|
||||||
|
|
||||||
|
// Keeps track of whether each step has been done
|
||||||
|
stepIsDone: {
|
||||||
|
[iTutorialSteps.Start]: false,
|
||||||
|
[iTutorialSteps.GoToCharacterPage]: false,
|
||||||
|
[iTutorialSteps.CharacterPage]: false,
|
||||||
|
[iTutorialSteps.CharacterGoToTerminalPage]: false,
|
||||||
|
[iTutorialSteps.TerminalIntro]: false,
|
||||||
|
[iTutorialSteps.TerminalHelp]: false,
|
||||||
|
[iTutorialSteps.TerminalLs]: false,
|
||||||
|
[iTutorialSteps.TerminalScan]: false,
|
||||||
|
[iTutorialSteps.TerminalScanAnalyze1]: false,
|
||||||
|
[iTutorialSteps.TerminalScanAnalyze2]: false,
|
||||||
|
[iTutorialSteps.TerminalConnect]: false,
|
||||||
|
[iTutorialSteps.TerminalAnalyze]: false,
|
||||||
|
[iTutorialSteps.TerminalNuke]: false,
|
||||||
|
[iTutorialSteps.TerminalManualHack]: false,
|
||||||
|
[iTutorialSteps.TerminalHackingMechanics]: false,
|
||||||
|
[iTutorialSteps.TerminalGoHome]: false,
|
||||||
|
[iTutorialSteps.TerminalCreateScript]: false,
|
||||||
|
[iTutorialSteps.TerminalTypeScript]: false,
|
||||||
|
[iTutorialSteps.TerminalFree]: false,
|
||||||
|
[iTutorialSteps.TerminalRunScript]: false,
|
||||||
|
[iTutorialSteps.TerminalGoToActiveScriptsPage]: false,
|
||||||
|
[iTutorialSteps.ActiveScriptsPage]: false,
|
||||||
|
[iTutorialSteps.ActiveScriptsToTerminal]: false,
|
||||||
|
[iTutorialSteps.TerminalTailScript]: false,
|
||||||
|
[iTutorialSteps.GoToHacknetNodesPage]: false,
|
||||||
|
[iTutorialSteps.HacknetNodesIntroduction]: false,
|
||||||
|
[iTutorialSteps.HacknetNodesGoToWorldPage]: false,
|
||||||
|
[iTutorialSteps.WorldDescription]: false,
|
||||||
|
[iTutorialSteps.TutorialPageInfo]: false,
|
||||||
|
[iTutorialSteps.End]: false,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
function iTutorialStart(): void {
|
||||||
|
ITutorial.isRunning = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Go to the next step and evaluate it
|
||||||
|
function iTutorialNextStep(): void {
|
||||||
|
ITutorial.stepIsDone[ITutorial.currStep] = true;
|
||||||
|
if (ITutorial.currStep < iTutorialSteps.End) {
|
||||||
|
ITutorial.currStep += 1;
|
||||||
|
}
|
||||||
|
if (ITutorial.currStep === iTutorialSteps.End) iTutorialEnd();
|
||||||
|
ITutorialEvents.emit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Go to previous step and evaluate
|
||||||
|
function iTutorialPrevStep(): void {
|
||||||
|
if (ITutorial.currStep > iTutorialSteps.Start) {
|
||||||
|
ITutorial.currStep -= 1;
|
||||||
|
}
|
||||||
|
ITutorialEvents.emit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function iTutorialEnd(): void {
|
||||||
|
ITutorial.isRunning = false;
|
||||||
|
|
||||||
|
// Create a popup with final introductory stuff
|
||||||
|
const popupId = "interactive-tutorial-ending-popup";
|
||||||
|
const txt = createElement("p", {
|
||||||
|
innerHTML:
|
||||||
|
"If you are new to the game, the following links may be useful for you!<br><br>" +
|
||||||
|
"<a class='a-link-button' href='https://bitburner.readthedocs.io/en/latest/guidesandtips/gettingstartedguideforbeginnerprogrammers.html' target='_blank'>Getting Started Guide</a>" +
|
||||||
|
"<a class='a-link-button' href='https://bitburner.readthedocs.io/en/latest/' target='_blank'>Documentation</a><br><br>" +
|
||||||
|
"The Beginner's Guide to Hacking was added to your home computer! It contains some tips/pointers for starting out with the game. " +
|
||||||
|
"To read it, go to Terminal and enter<br><br>cat " +
|
||||||
|
LiteratureNames.HackersStartingHandbook,
|
||||||
|
});
|
||||||
|
const gotitBtn = createElement("a", {
|
||||||
|
class: "a-link-button",
|
||||||
|
float: "right",
|
||||||
|
padding: "6px",
|
||||||
|
innerText: "Got it!",
|
||||||
|
clickListener: () => {
|
||||||
|
removeElementById(popupId);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
createPopup(popupId, [txt, gotitBtn]);
|
||||||
|
|
||||||
|
Player.getHomeComputer().messages.push(LiteratureNames.HackersStartingHandbook);
|
||||||
|
ITutorialEvents.emit();
|
||||||
|
}
|
||||||
|
|
||||||
|
export { iTutorialSteps, iTutorialEnd, iTutorialStart, iTutorialNextStep, ITutorial, iTutorialPrevStep };
|
@ -18,9 +18,7 @@ import { CasinoLocation } from "./CasinoLocation";
|
|||||||
|
|
||||||
import { Location } from "../Location";
|
import { Location } from "../Location";
|
||||||
import { LocationType } from "../LocationTypeEnum";
|
import { LocationType } from "../LocationTypeEnum";
|
||||||
import { CityName } from "../data/CityNames";
|
|
||||||
|
|
||||||
import { IRouter } from "../../ui/Router";
|
|
||||||
import { Settings } from "../../Settings/Settings";
|
import { Settings } from "../../Settings/Settings";
|
||||||
|
|
||||||
import { SpecialServerIps } from "../../Server/SpecialServerIps";
|
import { SpecialServerIps } from "../../Server/SpecialServerIps";
|
||||||
|
@ -17,7 +17,6 @@ import { CreateCorporationPopup } from "../../Corporation/ui/CreateCorporationPo
|
|||||||
import { createPopup } from "../../ui/React/createPopup";
|
import { createPopup } from "../../ui/React/createPopup";
|
||||||
import { LocationName } from "../data/LocationNames";
|
import { LocationName } from "../data/LocationNames";
|
||||||
|
|
||||||
import { IPlayer } from "../../PersonObjects/IPlayer";
|
|
||||||
import { use } from "../../ui/Context";
|
import { use } from "../../ui/Context";
|
||||||
|
|
||||||
import { AutoupdatingStdButton } from "../../ui/React/AutoupdatingStdButton";
|
import { AutoupdatingStdButton } from "../../ui/React/AutoupdatingStdButton";
|
||||||
@ -29,14 +28,10 @@ type IProps = {
|
|||||||
loc: Location;
|
loc: Location;
|
||||||
};
|
};
|
||||||
|
|
||||||
type IState = {
|
|
||||||
inBladeburner: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export function SpecialLocation(props: IProps): React.ReactElement {
|
export function SpecialLocation(props: IProps): React.ReactElement {
|
||||||
const player = use.Player();
|
const player = use.Player();
|
||||||
const router = use.Router();
|
const router = use.Router();
|
||||||
const [rerender, setRerender] = useState(false);
|
const setRerender = useState(false)[1];
|
||||||
const inBladeburner = player.inBladeburner();
|
const inBladeburner = player.inBladeburner();
|
||||||
/**
|
/**
|
||||||
* Click handler for "Create Corporation" button at Sector-12 City Hall
|
* Click handler for "Create Corporation" button at Sector-12 City Hall
|
||||||
|
@ -9,7 +9,6 @@ import { WorkerScriptStartStopEventEmitter } from "./Netscript/WorkerScriptStart
|
|||||||
import { generateNextPid } from "./Netscript/Pid";
|
import { generateNextPid } from "./Netscript/Pid";
|
||||||
|
|
||||||
import { CONSTANTS } from "./Constants";
|
import { CONSTANTS } from "./Constants";
|
||||||
import { Engine } from "./engine";
|
|
||||||
import { Interpreter } from "./JSInterpreter";
|
import { Interpreter } from "./JSInterpreter";
|
||||||
import { isScriptErrorMessage, makeRuntimeRejectMsg } from "./NetscriptEvaluator";
|
import { isScriptErrorMessage, makeRuntimeRejectMsg } from "./NetscriptEvaluator";
|
||||||
import { NetscriptFunctions } from "./NetscriptFunctions";
|
import { NetscriptFunctions } from "./NetscriptFunctions";
|
||||||
|
@ -15,10 +15,7 @@ import { AllServers } from "../Server/AllServers";
|
|||||||
|
|
||||||
import { removeLeadingSlash, isInRootDirectory, evaluateFilePath } from "./DirectoryHelpers";
|
import { removeLeadingSlash, isInRootDirectory, evaluateFilePath } from "./DirectoryHelpers";
|
||||||
import { checkIfConnectedToDarkweb } from "../DarkWeb/DarkWeb";
|
import { checkIfConnectedToDarkweb } from "../DarkWeb/DarkWeb";
|
||||||
import { logBoxCreate } from "../../utils/LogBox";
|
|
||||||
import { iTutorialNextStep, iTutorialSteps, ITutorial } from "../InteractiveTutorial";
|
import { iTutorialNextStep, iTutorialSteps, ITutorial } from "../InteractiveTutorial";
|
||||||
import { findRunningScript } from "../Script/ScriptHelpers";
|
|
||||||
import { TerminalHelpText } from "./HelpText";
|
|
||||||
import { GetServerByHostname, getServer, getServerOnNetwork } from "../Server/ServerHelpers";
|
import { GetServerByHostname, getServer, getServerOnNetwork } from "../Server/ServerHelpers";
|
||||||
import { ParseCommand, ParseCommands } from "./Parser";
|
import { ParseCommand, ParseCommands } from "./Parser";
|
||||||
import { SpecialServerIps, SpecialServerNames } from "../Server/SpecialServerIps";
|
import { SpecialServerIps, SpecialServerNames } from "../Server/SpecialServerIps";
|
||||||
|
3
src/engine.d.ts
vendored
3
src/engine.d.ts
vendored
@ -1,2 +1,3 @@
|
|||||||
export declare function load(cb: () => void): void;
|
export declare function load(cb: () => void): void;
|
||||||
export declare const Engine: any;
|
|
||||||
|
export declare const Engine: IEngine;
|
||||||
|
@ -13,8 +13,8 @@ import { Corporation } from "./Corporation/Corporation";
|
|||||||
import { CONSTANTS } from "./Constants";
|
import { CONSTANTS } from "./Constants";
|
||||||
import { Factions, initFactions } from "./Faction/Factions";
|
import { Factions, initFactions } from "./Faction/Factions";
|
||||||
import { processPassiveFactionRepGain, inviteToFaction } from "./Faction/FactionHelpers";
|
import { processPassiveFactionRepGain, inviteToFaction } from "./Faction/FactionHelpers";
|
||||||
import { GameRoot, Router } from "./ui/GameRoot";
|
import { Router } from "./ui/GameRoot";
|
||||||
import { TTheme as Theme } from "./ui/React/Theme";
|
|
||||||
import {
|
import {
|
||||||
getHackingWorkRepGain,
|
getHackingWorkRepGain,
|
||||||
getFactionSecurityWorkRepGain,
|
getFactionSecurityWorkRepGain,
|
||||||
@ -36,7 +36,6 @@ import { Terminal } from "./Terminal";
|
|||||||
import { Sleeve } from "./PersonObjects/Sleeve/Sleeve";
|
import { Sleeve } from "./PersonObjects/Sleeve/Sleeve";
|
||||||
import { Locations } from "./Locations/Locations";
|
import { Locations } from "./Locations/Locations";
|
||||||
import { LocationName } from "./Locations/data/LocationNames";
|
import { LocationName } from "./Locations/data/LocationNames";
|
||||||
import { LoadingScreen } from "./ui/LoadingScreen";
|
|
||||||
|
|
||||||
import { Money } from "./ui/React/Money";
|
import { Money } from "./ui/React/Money";
|
||||||
import { Hashes } from "./ui/React/Hashes";
|
import { Hashes } from "./ui/React/Hashes";
|
||||||
@ -49,7 +48,6 @@ import "./Exploits/tampering";
|
|||||||
import "./Exploits/unclickable";
|
import "./Exploits/unclickable";
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import ReactDOM from "react-dom";
|
|
||||||
|
|
||||||
const Engine = {
|
const Engine = {
|
||||||
indexedDb: undefined,
|
indexedDb: undefined,
|
||||||
@ -466,11 +464,4 @@ function load(cb) {
|
|||||||
|
|
||||||
var indexedDbRequest;
|
var indexedDbRequest;
|
||||||
|
|
||||||
ReactDOM.render(
|
|
||||||
<Theme>
|
|
||||||
<LoadingScreen />
|
|
||||||
</Theme>,
|
|
||||||
document.getElementById("mainmenu-container"),
|
|
||||||
);
|
|
||||||
|
|
||||||
export { Engine, load };
|
export { Engine, load };
|
||||||
|
13
src/index.tsx
Normal file
13
src/index.tsx
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import React from "react";
|
||||||
|
import ReactDOM from "react-dom";
|
||||||
|
|
||||||
|
import { TTheme as Theme } from "./ui/React/Theme";
|
||||||
|
import { LoadingScreen } from "./ui/LoadingScreen";
|
||||||
|
import "./engineStyle";
|
||||||
|
|
||||||
|
ReactDOM.render(
|
||||||
|
<Theme>
|
||||||
|
<LoadingScreen />
|
||||||
|
</Theme>,
|
||||||
|
document.getElementById("mainmenu-container"),
|
||||||
|
);
|
@ -10,7 +10,6 @@ import { ServerAccordions } from "./ServerAccordions";
|
|||||||
import { WorkerScript } from "../../Netscript/WorkerScript";
|
import { WorkerScript } from "../../Netscript/WorkerScript";
|
||||||
|
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import TextField from "@mui/material/TextField";
|
|
||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
workerScripts: Map<number, WorkerScript>;
|
workerScripts: Map<number, WorkerScript>;
|
||||||
@ -35,7 +34,7 @@ export function ActiveScriptsRoot(props: IProps): React.ReactElement {
|
|||||||
on which they are running.
|
on which they are running.
|
||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
<ScriptProduction {...props} />
|
<ScriptProduction />
|
||||||
<ServerAccordions {...props} />
|
<ServerAccordions {...props} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
@ -4,13 +4,10 @@
|
|||||||
*/
|
*/
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
|
|
||||||
import { WorkerScript } from "../../Netscript/WorkerScript";
|
|
||||||
import { Money } from "../React/Money";
|
|
||||||
import { MoneyRate } from "../React/MoneyRate";
|
import { MoneyRate } from "../React/MoneyRate";
|
||||||
import { use } from "../Context";
|
import { use } from "../Context";
|
||||||
|
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import Box from "@mui/material/Box";
|
|
||||||
|
|
||||||
import { Theme } from "@mui/material/styles";
|
import { Theme } from "@mui/material/styles";
|
||||||
import makeStyles from "@mui/styles/makeStyles";
|
import makeStyles from "@mui/styles/makeStyles";
|
||||||
@ -18,14 +15,8 @@ import createStyles from "@mui/styles/createStyles";
|
|||||||
import Table from "@mui/material/Table";
|
import Table from "@mui/material/Table";
|
||||||
import TableBody from "@mui/material/TableBody";
|
import TableBody from "@mui/material/TableBody";
|
||||||
import TableCell from "@mui/material/TableCell";
|
import TableCell from "@mui/material/TableCell";
|
||||||
import TableContainer from "@mui/material/TableContainer";
|
|
||||||
import TableHead from "@mui/material/TableHead";
|
|
||||||
import TableRow from "@mui/material/TableRow";
|
import TableRow from "@mui/material/TableRow";
|
||||||
|
|
||||||
type IProps = {
|
|
||||||
workerScripts: Map<number, WorkerScript>;
|
|
||||||
};
|
|
||||||
|
|
||||||
const useStyles = makeStyles((theme: Theme) =>
|
const useStyles = makeStyles((theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
cell: {
|
cell: {
|
||||||
@ -39,16 +30,11 @@ const useStyles = makeStyles((theme: Theme) =>
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
export function ScriptProduction(props: IProps): React.ReactElement {
|
export function ScriptProduction(): React.ReactElement {
|
||||||
const player = use.Player();
|
const player = use.Player();
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
const prodRateSinceLastAug = player.scriptProdSinceLastAug / (player.playtimeSinceLastAug / 1000);
|
const prodRateSinceLastAug = player.scriptProdSinceLastAug / (player.playtimeSinceLastAug / 1000);
|
||||||
|
|
||||||
let onlineProduction = 0;
|
|
||||||
for (const ws of props.workerScripts.values()) {
|
|
||||||
onlineProduction += ws.scriptRef.onlineMoneyMade / ws.scriptRef.onlineRunningTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Table size="small" classes={{ root: classes.size }}>
|
<Table size="small" classes={{ root: classes.size }}>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
@ -58,7 +44,7 @@ export function ScriptProduction(props: IProps): React.ReactElement {
|
|||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell align="left" classes={{ root: classes.cell }}>
|
<TableCell align="left" classes={{ root: classes.cell }}>
|
||||||
<Typography variant="body2">
|
<Typography variant="body2">
|
||||||
<Money money={player.scriptProdSinceLastAug} />
|
<MoneyRate money={player.scriptProdSinceLastAug} />
|
||||||
</Typography>
|
</Typography>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
@ -1,14 +1,10 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { WorkerScript } from "../../Netscript/WorkerScript";
|
import { WorkerScript } from "../../Netscript/WorkerScript";
|
||||||
import { WorkerScriptAccordion } from "./WorkerScriptAccordion";
|
import { WorkerScriptAccordion } from "./WorkerScriptAccordion";
|
||||||
import { AccordionButton } from "../React/AccordionButton";
|
|
||||||
import Paper from "@mui/material/Paper";
|
|
||||||
import List from "@mui/material/List";
|
import List from "@mui/material/List";
|
||||||
import TablePagination from "@mui/material/TablePagination";
|
import TablePagination from "@mui/material/TablePagination";
|
||||||
import { TablePaginationActionsAll } from "../React/TablePaginationActionsAll";
|
import { TablePaginationActionsAll } from "../React/TablePaginationActionsAll";
|
||||||
|
|
||||||
const pageSize = 20;
|
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
workerScripts: WorkerScript[];
|
workerScripts: WorkerScript[];
|
||||||
}
|
}
|
||||||
@ -16,11 +12,11 @@ interface IProps {
|
|||||||
export function ServerAccordionContent(props: IProps): React.ReactElement {
|
export function ServerAccordionContent(props: IProps): React.ReactElement {
|
||||||
const [page, setPage] = useState(0);
|
const [page, setPage] = useState(0);
|
||||||
const [rowsPerPage, setRowsPerPage] = useState(10);
|
const [rowsPerPage, setRowsPerPage] = useState(10);
|
||||||
const handleChangePage = (event: unknown, newPage: number) => {
|
const handleChangePage = (event: unknown, newPage: number): void => {
|
||||||
setPage(newPage);
|
setPage(newPage);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {
|
const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>): void => {
|
||||||
setRowsPerPage(parseInt(event.target.value, 10));
|
setRowsPerPage(parseInt(event.target.value, 10));
|
||||||
setPage(0);
|
setPage(0);
|
||||||
};
|
};
|
||||||
|
@ -7,9 +7,6 @@ import React, { useState, useEffect } from "react";
|
|||||||
import { ServerAccordion } from "./ServerAccordion";
|
import { ServerAccordion } from "./ServerAccordion";
|
||||||
|
|
||||||
import TextField from "@mui/material/TextField";
|
import TextField from "@mui/material/TextField";
|
||||||
import Typography from "@mui/material/Typography";
|
|
||||||
import Paper from "@mui/material/Paper";
|
|
||||||
import Box from "@mui/material/Box";
|
|
||||||
import List from "@mui/material/List";
|
import List from "@mui/material/List";
|
||||||
import TablePagination from "@mui/material/TablePagination";
|
import TablePagination from "@mui/material/TablePagination";
|
||||||
import { WorkerScript } from "../../Netscript/WorkerScript";
|
import { WorkerScript } from "../../Netscript/WorkerScript";
|
||||||
@ -33,12 +30,6 @@ type IProps = {
|
|||||||
workerScripts: Map<number, WorkerScript>;
|
workerScripts: Map<number, WorkerScript>;
|
||||||
};
|
};
|
||||||
|
|
||||||
type IState = {
|
|
||||||
rerenderFlag: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
const subscriberId = "ActiveScriptsUI";
|
|
||||||
|
|
||||||
export function ServerAccordions(props: IProps): React.ReactElement {
|
export function ServerAccordions(props: IProps): React.ReactElement {
|
||||||
const [filter, setFilter] = useState("");
|
const [filter, setFilter] = useState("");
|
||||||
const [page, setPage] = useState(0);
|
const [page, setPage] = useState(0);
|
||||||
@ -52,11 +43,11 @@ export function ServerAccordions(props: IProps): React.ReactElement {
|
|||||||
return WorkerScriptStartStopEventEmitter.subscribe(rerender);
|
return WorkerScriptStartStopEventEmitter.subscribe(rerender);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handleChangePage = (event: unknown, newPage: number) => {
|
const handleChangePage = (event: unknown, newPage: number): void => {
|
||||||
setPage(newPage);
|
setPage(newPage);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {
|
const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>): void => {
|
||||||
setRowsPerPage(parseInt(event.target.value, 10));
|
setRowsPerPage(parseInt(event.target.value, 10));
|
||||||
setPage(0);
|
setPage(0);
|
||||||
};
|
};
|
||||||
|
@ -14,21 +14,15 @@ import Button from "@mui/material/Button";
|
|||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import Paper from "@mui/material/Paper";
|
import Paper from "@mui/material/Paper";
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import Accordion from "@mui/material/Accordion";
|
|
||||||
import AccordionSummary from "@mui/material/AccordionSummary";
|
|
||||||
import AccordionDetails from "@mui/material/AccordionDetails";
|
|
||||||
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
|
|
||||||
import { AccordionButton } from "../React/AccordionButton";
|
|
||||||
import IconButton from "@mui/material/IconButton";
|
import IconButton from "@mui/material/IconButton";
|
||||||
import DeleteIcon from "@mui/icons-material/Delete";
|
import DeleteIcon from "@mui/icons-material/Delete";
|
||||||
import ListItemButton from "@mui/material/ListItemButton";
|
import ListItemButton from "@mui/material/ListItemButton";
|
||||||
import ListItemText from "@mui/material/ListItemText";
|
import ListItemText from "@mui/material/ListItemText";
|
||||||
import makeStyles from "@mui/styles/makeStyles";
|
import makeStyles from "@mui/styles/makeStyles";
|
||||||
import createStyles from "@mui/styles/createStyles";
|
|
||||||
|
|
||||||
import Collapse from "@mui/material/Collapse";
|
import Collapse from "@mui/material/Collapse";
|
||||||
import ExpandMore from "@mui/icons-material/ExpandMore";
|
|
||||||
import ExpandLess from "@mui/icons-material/ExpandLess";
|
import ExpandLess from "@mui/icons-material/ExpandLess";
|
||||||
|
import ExpandMore from "@mui/icons-material/ExpandMore";
|
||||||
|
|
||||||
import { killWorkerScript } from "../../Netscript/killWorkerScript";
|
import { killWorkerScript } from "../../Netscript/killWorkerScript";
|
||||||
import { WorkerScript } from "../../Netscript/WorkerScript";
|
import { WorkerScript } from "../../Netscript/WorkerScript";
|
||||||
@ -67,8 +61,6 @@ export function WorkerScriptAccordion(props: IProps): React.ReactElement {
|
|||||||
// Calculations for script stats
|
// Calculations for script stats
|
||||||
const onlineMps = scriptRef.onlineMoneyMade / scriptRef.onlineRunningTime;
|
const onlineMps = scriptRef.onlineMoneyMade / scriptRef.onlineRunningTime;
|
||||||
const onlineEps = scriptRef.onlineExpGained / scriptRef.onlineRunningTime;
|
const onlineEps = scriptRef.onlineExpGained / scriptRef.onlineRunningTime;
|
||||||
const offlineMps = scriptRef.offlineMoneyMade / scriptRef.offlineRunningTime;
|
|
||||||
const offlineEps = scriptRef.offlineExpGained / scriptRef.offlineRunningTime;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
|
|
||||||
import { numeralWrapper } from "../ui/numeralFormat";
|
import { numeralWrapper } from "../ui/numeralFormat";
|
||||||
import { BitNodes } from "../BitNode/BitNode";
|
|
||||||
import { IPlayer } from "../PersonObjects/IPlayer";
|
|
||||||
import { MoneySourceTracker } from "../utils/MoneySourceTracker";
|
|
||||||
import { dialogBoxCreate } from "../../utils/DialogBox";
|
|
||||||
import { convertTimeMsToTimeElapsedString } from "../../utils/StringHelperFunctions";
|
import { convertTimeMsToTimeElapsedString } from "../../utils/StringHelperFunctions";
|
||||||
import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers";
|
import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers";
|
||||||
import { SourceFileFlags } from "../SourceFile/SourceFileFlags";
|
import { SourceFileFlags } from "../SourceFile/SourceFileFlags";
|
||||||
@ -13,6 +9,8 @@ import { HacknetServerConstants } from "../Hacknet/data/Constants";
|
|||||||
import { StatsTable } from "./React/StatsTable";
|
import { StatsTable } from "./React/StatsTable";
|
||||||
import { Money } from "./React/Money";
|
import { Money } from "./React/Money";
|
||||||
import { use } from "./Context";
|
import { use } from "./Context";
|
||||||
|
import { MoneySourceTracker } from "../utils/MoneySourceTracker";
|
||||||
|
import { BitNodes } from "../BitNode/BitNode";
|
||||||
|
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import React, { useState, useEffect, useRef } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
|
|
||||||
import { IPlayer } from "../PersonObjects/IPlayer";
|
import { IPlayer } from "../PersonObjects/IPlayer";
|
||||||
import { IEngine } from "../IEngine";
|
import { IEngine } from "../IEngine";
|
||||||
|
@ -7,11 +7,9 @@ import Button from "@mui/material/Button";
|
|||||||
import ArrowForwardIos from "@mui/icons-material/ArrowForwardIos";
|
import ArrowForwardIos from "@mui/icons-material/ArrowForwardIos";
|
||||||
import ArrowBackIos from "@mui/icons-material/ArrowBackIos";
|
import ArrowBackIos from "@mui/icons-material/ArrowBackIos";
|
||||||
import { ITutorialEvents } from "./ITutorialEvents";
|
import { ITutorialEvents } from "./ITutorialEvents";
|
||||||
import { use } from "../Context";
|
|
||||||
import { CopyableText } from "../React/CopyableText";
|
import { CopyableText } from "../React/CopyableText";
|
||||||
|
|
||||||
import ListItem from "@mui/material/ListItem";
|
import ListItem from "@mui/material/ListItem";
|
||||||
import TextField from "@mui/material/TextField";
|
|
||||||
import EqualizerIcon from "@mui/icons-material/Equalizer";
|
import EqualizerIcon from "@mui/icons-material/Equalizer";
|
||||||
import LastPageIcon from "@mui/icons-material/LastPage";
|
import LastPageIcon from "@mui/icons-material/LastPage";
|
||||||
import HelpIcon from "@mui/icons-material/Help";
|
import HelpIcon from "@mui/icons-material/Help";
|
||||||
|
@ -2,10 +2,6 @@ import React, { useState, useEffect } from "react";
|
|||||||
import CircularProgress from "@mui/material/CircularProgress";
|
import CircularProgress from "@mui/material/CircularProgress";
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import Grid from "@mui/material/Grid";
|
import Grid from "@mui/material/Grid";
|
||||||
import Paper from "@mui/material/Paper";
|
|
||||||
import { Theme } from "@mui/material";
|
|
||||||
import makeStyles from "@mui/styles/makeStyles";
|
|
||||||
import createStyles from "@mui/styles/createStyles";
|
|
||||||
|
|
||||||
import { Terminal } from "../Terminal";
|
import { Terminal } from "../Terminal";
|
||||||
import { Engine } from "../engine";
|
import { Engine } from "../engine";
|
||||||
@ -14,24 +10,47 @@ import { GameRoot } from "./GameRoot";
|
|||||||
|
|
||||||
import { CONSTANTS } from "../Constants";
|
import { CONSTANTS } from "../Constants";
|
||||||
|
|
||||||
import { load } from "../engine";
|
function load(cb: () => void): void {
|
||||||
|
if (!window.indexedDB) {
|
||||||
|
return Engine.load(""); // Will try to load from localstorage
|
||||||
|
}
|
||||||
|
|
||||||
const useStyles = makeStyles((theme: Theme) =>
|
/**
|
||||||
createStyles({
|
* DB is called bitburnerSave
|
||||||
center: {
|
* Object store is called savestring
|
||||||
position: "fixed",
|
* key for the Object store is called save
|
||||||
top: "50%",
|
*/
|
||||||
left: "50%",
|
const indexedDbRequest: IDBOpenDBRequest = window.indexedDB.open("bitburnerSave", 1);
|
||||||
},
|
|
||||||
}),
|
indexedDbRequest.onerror = function (this: IDBRequest<IDBDatabase>, ev: Event) {
|
||||||
);
|
console.error("Error opening indexedDB: ");
|
||||||
|
console.error(ev);
|
||||||
|
Engine.load(""); // Try to load from localstorage
|
||||||
|
cb();
|
||||||
|
};
|
||||||
|
|
||||||
|
indexedDbRequest.onsuccess = function (this: IDBRequest<IDBDatabase>) {
|
||||||
|
Engine.indexedDb = this.result;
|
||||||
|
const transaction = Engine.indexedDb.transaction(["savestring"]);
|
||||||
|
const objectStore = transaction.objectStore("savestring");
|
||||||
|
const request: IDBRequest<string> = objectStore.get("save");
|
||||||
|
request.onerror = function (this: IDBRequest<string>, ev: Event) {
|
||||||
|
console.error("Error in Database request to get savestring: " + ev);
|
||||||
|
Engine.load(""); // Try to load from localstorage
|
||||||
|
cb();
|
||||||
|
};
|
||||||
|
|
||||||
|
request.onsuccess = function (this: IDBRequest<string>) {
|
||||||
|
Engine.load(this.result);
|
||||||
|
cb();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function LoadingScreen(): React.ReactElement {
|
export function LoadingScreen(): React.ReactElement {
|
||||||
const classes = useStyles();
|
|
||||||
const [show, setShow] = useState(false);
|
const [show, setShow] = useState(false);
|
||||||
const [loaded, setLoaded] = useState(false);
|
const [loaded, setLoaded] = useState(false);
|
||||||
|
|
||||||
console.log("renredering");
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const id = setTimeout(() => {
|
const id = setTimeout(() => {
|
||||||
if (!loaded) setShow(true);
|
if (!loaded) setShow(true);
|
||||||
|
@ -14,16 +14,11 @@ import Box from "@mui/material/Box";
|
|||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import Button from "@mui/material/Button";
|
import Button from "@mui/material/Button";
|
||||||
import IconButton from "@mui/material/IconButton";
|
import IconButton from "@mui/material/IconButton";
|
||||||
import Collapse from "@mui/material/Collapse";
|
|
||||||
import Fab from "@mui/material/Fab";
|
|
||||||
import VisibilityOffIcon from "@mui/icons-material/VisibilityOff";
|
|
||||||
import SaveIcon from "@mui/icons-material/Save";
|
import SaveIcon from "@mui/icons-material/Save";
|
||||||
|
|
||||||
import { colors } from "./Theme";
|
import { colors } from "./Theme";
|
||||||
import { Settings } from "../../Settings/Settings";
|
import { Settings } from "../../Settings/Settings";
|
||||||
import { use } from "../Context";
|
import { use } from "../Context";
|
||||||
import { Page } from "../Router";
|
|
||||||
import { Overview } from "./Overview";
|
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
save: () => void;
|
save: () => void;
|
||||||
@ -115,7 +110,6 @@ const useStyles = makeStyles({
|
|||||||
|
|
||||||
export function CharacterOverview({ save }: IProps): React.ReactElement {
|
export function CharacterOverview({ save }: IProps): React.ReactElement {
|
||||||
const player = use.Player();
|
const player = use.Player();
|
||||||
const router = use.Router();
|
|
||||||
|
|
||||||
const setRerender = useState(false)[1];
|
const setRerender = useState(false)[1];
|
||||||
|
|
||||||
|
@ -1,14 +1,6 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { useTheme } from "@mui/material/styles";
|
import { useTheme } from "@mui/material/styles";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import Table from "@mui/material/Table";
|
|
||||||
import TableBody from "@mui/material/TableBody";
|
|
||||||
import TableCell from "@mui/material/TableCell";
|
|
||||||
import TableContainer from "@mui/material/TableContainer";
|
|
||||||
import TableFooter from "@mui/material/TableFooter";
|
|
||||||
import TablePagination from "@mui/material/TablePagination";
|
|
||||||
import TableRow from "@mui/material/TableRow";
|
|
||||||
import Paper from "@mui/material/Paper";
|
|
||||||
import IconButton from "@mui/material/IconButton";
|
import IconButton from "@mui/material/IconButton";
|
||||||
import FirstPageIcon from "@mui/icons-material/FirstPage";
|
import FirstPageIcon from "@mui/icons-material/FirstPage";
|
||||||
import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
|
import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
|
||||||
@ -22,23 +14,23 @@ interface TablePaginationActionsProps {
|
|||||||
onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void;
|
onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function TablePaginationActionsAll(props: TablePaginationActionsProps) {
|
export function TablePaginationActionsAll(props: TablePaginationActionsProps): React.ReactElement {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const { count, page, rowsPerPage, onPageChange } = props;
|
const { count, page, rowsPerPage, onPageChange } = props;
|
||||||
|
|
||||||
const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>): void => {
|
||||||
onPageChange(event, 0);
|
onPageChange(event, 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>): void => {
|
||||||
onPageChange(event, page - 1);
|
onPageChange(event, page - 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>): void => {
|
||||||
onPageChange(event, page + 1);
|
onPageChange(event, page + 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>): void => {
|
||||||
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
|
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -12,9 +12,7 @@ module.exports = (env, argv) => {
|
|||||||
const runInContainer = (env || {}).runInContainer === true;
|
const runInContainer = (env || {}).runInContainer === true;
|
||||||
const isDevelopment = argv.mode === "development";
|
const isDevelopment = argv.mode === "development";
|
||||||
const outputDirectory = isDevServer ? "dist-dev" : "dist";
|
const outputDirectory = isDevServer ? "dist-dev" : "dist";
|
||||||
const entries = {};
|
const entry = "./src/index.tsx";
|
||||||
entries[`${outputDirectory}/engine`] = "./src/engine.jsx";
|
|
||||||
entries[`${outputDirectory}/engineStyle`] = "./src/engineStyle.js";
|
|
||||||
|
|
||||||
const statsConfig = {
|
const statsConfig = {
|
||||||
builtAt: true,
|
builtAt: true,
|
||||||
@ -134,7 +132,7 @@ module.exports = (env, argv) => {
|
|||||||
isDevelopment && new ReactRefreshWebpackPlugin(),
|
isDevelopment && new ReactRefreshWebpackPlugin(),
|
||||||
].filter(Boolean),
|
].filter(Boolean),
|
||||||
target: "web",
|
target: "web",
|
||||||
entry: entries,
|
entry: entry,
|
||||||
output: {
|
output: {
|
||||||
path: path.resolve(__dirname, "./"),
|
path: path.resolve(__dirname, "./"),
|
||||||
filename: "[name].bundle.js",
|
filename: "[name].bundle.js",
|
||||||
|
Loading…
Reference in New Issue
Block a user