/**
 * Печать текста по символам (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 };
}