mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-10-23 10:13:13 +02:00
28 lines
625 B
TypeScript
28 lines
625 B
TypeScript
|
import React, { useState } from "react";
|
||
|
|
||
|
import { CinematicLine } from "./CinematicLine";
|
||
|
|
||
|
interface IProps {
|
||
|
lines: string[];
|
||
|
onDone?: () => void;
|
||
|
}
|
||
|
|
||
|
export function CinematicText(props: IProps): React.ReactElement {
|
||
|
const [i, setI] = useState(0);
|
||
|
|
||
|
function advance(): void {
|
||
|
const newI = i + 1;
|
||
|
setI(newI);
|
||
|
if (newI >= props.lines.length && props.onDone) props.onDone();
|
||
|
}
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
{props.lines.slice(0, i).map((line, i) => (
|
||
|
<pre key={i}>{line}</pre>
|
||
|
))}
|
||
|
{props.lines.length > i && <CinematicLine key={i} text={props.lines[i]} onDone={advance} />}
|
||
|
</>
|
||
|
);
|
||
|
}
|