bitburner-src/src/Terminal/ITerminal.ts
2021-09-25 14:42:57 -04:00

86 lines
2.8 KiB
TypeScript

import { TextFile } from "../TextFile";
import { Script } from "../Script/Script";
import { IPlayer } from "../PersonObjects/IPlayer";
import { IRouter } from "../ui/Router";
import { Settings } from "../Settings/Settings";
import { getTimestamp } from "../utils/helpers/getTimestamp";
export class Output {
text: string;
color: "inherit" | "initial" | "primary" | "secondary" | "error" | "textPrimary" | "textSecondary" | undefined;
constructor(
text: string,
color: "inherit" | "initial" | "primary" | "secondary" | "error" | "textPrimary" | "textSecondary" | undefined,
) {
if (Settings.EnableTimestamps) text = "[" + getTimestamp() + "] " + text;
this.text = text;
this.color = color;
}
}
export class Link {
hostname: string;
dashes: string;
constructor(dashes: string, hostname: string) {
if (Settings.EnableTimestamps) dashes = "[" + getTimestamp() + "] " + dashes;
this.hostname = hostname;
this.dashes = dashes;
}
}
export class TTimer {
time: number;
timeLeft: number;
action: "h" | "b" | "a";
constructor(time: number, action: "h" | "b" | "a") {
this.time = time;
this.timeLeft = time;
this.action = action;
}
}
export interface ITerminal {
action: TTimer | null;
commandHistory: string[];
commandHistoryIndex: number;
outputHistory: (Output | Link)[];
// True if a Coding Contract prompt is opened
contractOpen: boolean;
// Full Path of current directory
// Excludes the trailing forward slash
currDir: string;
print(s: string): void;
error(s: string): void;
clear(): void;
startAnalyze(): void;
startBackdoor(player: IPlayer): void;
startHack(player: IPlayer): void;
finishHack(router: IRouter, player: IPlayer, cancelled?: boolean): void;
finishBackdoor(router: IRouter, player: IPlayer, cancelled?: boolean): void;
finishAnalyze(player: IPlayer, cancelled?: boolean): void;
finishAction(router: IRouter, player: IPlayer, cancelled?: boolean): void;
getFilepath(filename: string): string;
getFile(player: IPlayer, filename: string): Script | TextFile | string | null;
getScript(player: IPlayer, filename: string): Script | null;
getTextFile(player: IPlayer, filename: string): TextFile | null;
getLitFile(player: IPlayer, filename: string): string | null;
cwd(): string;
setcwd(dir: string): void;
runContract(player: IPlayer, name: string): void;
executeScanAnalyzeCommand(player: IPlayer, depth?: number, all?: boolean): void;
connectToServer(player: IPlayer, server: string): void;
executeCommand(router: IRouter, player: IPlayer, command: string): void;
executeCommands(router: IRouter, player: IPlayer, commands: string): void;
// If there was any changes, will return true, once.
process(router: IRouter, player: IPlayer, cycles: number): void;
prestige(): void;
getProgressText(): string;
}