Newer
Older
rpg / packages / engine / src / debug / DebugOverlay.ts
import { Text, Container } from 'pixi.js';
import type { FpsMeter } from '../core/FpsMeter';

/**
 * Дебаг-оверлей: FPS (из FpsMeter движка) и произвольные строки статистики.
 * Добавьте view в uiRoot и вызывайте update(dt) каждый тик; перерисовка Text
 * дорога (растеризация) — не чаще 0,5 с.
 */
export class DebugOverlay {
    readonly view: Container;
    private text: Text;
    private lines: string[] = [];
    private acc = 0;

    constructor(
        private readonly fpsMeter: FpsMeter,
        enabled = true
    ) {
        this.view = new Container();
        this.view.visible = enabled;
        this.text = new Text({
            text: '',
            style: { fontFamily: 'monospace', fontSize: 8, fill: 0x00ff88, lineHeight: 10 }
        });
        this.view.addChild(this.text);
    }

    /** Задать строки статуса (fps подставляется автоматически). */
    setLines(lines: string[]): void {
        this.lines = lines;
    }

    update(dt: number): void {
        this.acc += dt;
        if (this.acc < 0.5) return;
        this.acc = 0;
        this.text.text = `fps ${this.fpsMeter.fps}\n${this.lines.join('\n')}`;
    }
}