mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-22 22:22:26 +01:00
Persist terminal command history in game save
Copy the terminal commands into the player object so that they are saved between game reloads. Adds a 'history' command to display history, and a 'history -c' command to clear it from both the current terminal & the player's save.
This commit is contained in:
parent
07fe3c1906
commit
e7aa977eb0
@ -72,6 +72,7 @@ export interface IPlayer {
|
||||
sourceFiles: IPlayerOwnedSourceFile[];
|
||||
exploits: Exploit[];
|
||||
achievements: PlayerAchievement[];
|
||||
terminalCommandHistory: string[];
|
||||
lastUpdate: number;
|
||||
totalPlaytime: number;
|
||||
|
||||
|
@ -77,6 +77,7 @@ export class PlayerObject implements IPlayer {
|
||||
sourceFiles: IPlayerOwnedSourceFile[];
|
||||
exploits: Exploit[];
|
||||
achievements: PlayerAchievement[];
|
||||
terminalCommandHistory: string[];
|
||||
lastUpdate: number;
|
||||
totalPlaytime: number;
|
||||
|
||||
@ -471,6 +472,7 @@ export class PlayerObject implements IPlayer {
|
||||
|
||||
this.exploits = [];
|
||||
this.achievements = [];
|
||||
this.terminalCommandHistory = [];
|
||||
|
||||
this.init = generalMethods.init;
|
||||
this.prestigeAugmentation = generalMethods.prestigeAugmentation;
|
||||
|
@ -21,6 +21,7 @@ export const TerminalHelpText: string[] = [
|
||||
" grow Spoof money in a servers bank account, increasing the amount available.",
|
||||
" hack Hack the current machine",
|
||||
" help [command] Display this help text, or the help text for a command",
|
||||
" history [-c] Display the terminal history",
|
||||
" home Connect to home computer",
|
||||
" hostname Displays the hostname of the machine",
|
||||
" kill [script/pid] [args...] Stops the specified script on the current server ",
|
||||
@ -255,6 +256,12 @@ export const HelpTexts: IMap<string[]> = {
|
||||
" help scan-analyze",
|
||||
" ",
|
||||
],
|
||||
history: [
|
||||
"Usage: history [-c]",
|
||||
" ",
|
||||
"Without arguments, displays the terminal command history. To clear the history, pass in the '-c' argument.",
|
||||
" ",
|
||||
],
|
||||
home: [
|
||||
"Usage: home", " ", "Connect to your home computer. This will work no matter what server you are currently connected to.", " ",
|
||||
],
|
||||
|
@ -48,6 +48,7 @@ import { free } from "./commands/free";
|
||||
import { grow } from "./commands/grow";
|
||||
import { hack } from "./commands/hack";
|
||||
import { help } from "./commands/help";
|
||||
import { history } from "./commands/history";
|
||||
import { home } from "./commands/home";
|
||||
import { hostname } from "./commands/hostname";
|
||||
import { kill } from "./commands/kill";
|
||||
@ -576,6 +577,7 @@ export class Terminal implements ITerminal {
|
||||
if (this.commandHistory.length > 50) {
|
||||
this.commandHistory.splice(0, 1);
|
||||
}
|
||||
player.terminalCommandHistory = this.commandHistory;
|
||||
}
|
||||
this.commandHistoryIndex = this.commandHistory.length;
|
||||
const allCommands = ParseCommands(commands);
|
||||
@ -785,6 +787,7 @@ export class Terminal implements ITerminal {
|
||||
grow: grow,
|
||||
hack: hack,
|
||||
help: help,
|
||||
history: history,
|
||||
home: home,
|
||||
hostname: hostname,
|
||||
kill: kill,
|
||||
|
27
src/Terminal/commands/history.ts
Normal file
27
src/Terminal/commands/history.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import { ITerminal } from "../ITerminal";
|
||||
import { IRouter } from "../../ui/Router";
|
||||
import { IPlayer } from "../../PersonObjects/IPlayer";
|
||||
import { BaseServer } from "../../Server/BaseServer";
|
||||
|
||||
export function history(
|
||||
terminal: ITerminal,
|
||||
router: IRouter,
|
||||
player: IPlayer,
|
||||
server: BaseServer,
|
||||
args: (string | number | boolean)[],
|
||||
): void {
|
||||
if (args.length === 0) {
|
||||
terminal.commandHistory.forEach((command, index) => {
|
||||
terminal.print(`${index.toString().padStart(2)} ${command}`);
|
||||
});
|
||||
return;
|
||||
}
|
||||
const arg = args[0] + "";
|
||||
if (arg === "-c" || arg === "--clear") {
|
||||
player.terminalCommandHistory = [];
|
||||
terminal.commandHistory = [];
|
||||
terminal.commandHistoryIndex = 1;
|
||||
} else {
|
||||
terminal.error("Incorrect usage of history command. usage: history [-c]");
|
||||
}
|
||||
}
|
@ -52,6 +52,12 @@ export function TerminalInput({ terminal, router, player }: IProps): React.React
|
||||
const [possibilities, setPossibilities] = useState<string[]>([]);
|
||||
const classes = useStyles();
|
||||
|
||||
// If we have no data in the current terminal history, let's initialize it from the player save
|
||||
if (terminal.commandHistory.length === 0 && player.terminalCommandHistory.length > 0) {
|
||||
terminal.commandHistory = player.terminalCommandHistory;
|
||||
terminal.commandHistoryIndex = terminal.commandHistory.length;
|
||||
}
|
||||
|
||||
// Need to run after state updates, for example if we need to move cursor
|
||||
// *after* we modify input
|
||||
useEffect(() => {
|
||||
|
Loading…
Reference in New Issue
Block a user