/**
* Печать текста по символам (typewriter) — чистая логика без Pixi:
* тестируется в node, DialogueBox только применяет результат к PixelText.
*/
export interface RevealState {
/** Сколько символов показано. */
shown: number;
/** Печатание закончилось. */
done: boolean;
}
/**
* Сколько символов текста `full` видно через `elapsedMs` при скорости
* `cps` (символов в секунду). cps <= 0 — текст показан сразу.
*/
export function revealText(full: string, elapsedMs: number, cps: number): RevealState {
if (cps <= 0 || full.length === 0) return { shown: full.length, done: true };
const shown = Math.min(full.length, Math.floor((elapsedMs * cps) / 1000));
return { shown, done: shown >= full.length };
}