mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-20 06:33:49 +01:00
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
|
interface IProgressBarConfiguration {
|
||
|
/**
|
||
|
* Current progress, taken as a decimal (i.e. '0.6' to represent '60%')
|
||
|
*/
|
||
|
progress?: number;
|
||
|
|
||
|
/**
|
||
|
* Total number of ticks in progress bar. Preferably a factor of 100.
|
||
|
*/
|
||
|
totalTicks?: number;
|
||
|
}
|
||
|
|
||
|
interface IProgressBarConfigurationMaterialized extends IProgressBarConfiguration {
|
||
|
progress: number;
|
||
|
totalTicks: number;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a graphical "progress bar"
|
||
|
* e.g.: [||||---------------]
|
||
|
* @param params The configuration parameters for the progress bar
|
||
|
*/
|
||
|
export function createProgressBarText(params: IProgressBarConfiguration) {
|
||
|
// Default values
|
||
|
const defaultParams: IProgressBarConfigurationMaterialized = {
|
||
|
progress: 0,
|
||
|
totalTicks: 20,
|
||
|
};
|
||
|
|
||
|
// tslint:disable-next-line:prefer-object-spread
|
||
|
const derivedParams: IProgressBarConfigurationMaterialized = Object.assign({}, params, defaultParams);
|
||
|
|
||
|
const bars: number = Math.floor(derivedParams.progress / (1 / derivedParams.totalTicks));
|
||
|
const dashes: number = derivedParams.totalTicks - bars;
|
||
|
|
||
|
// String.prototype.repeat isn't completley supported, but good enough for our purposes
|
||
|
return `[${"|".repeat(bars + 1)}${"-".repeat(dashes + 1)}]`;
|
||
|
}
|