Newer
Older
rpg / packages / engine / src / anim / FrameAnimation.ts
/**
 * @deprecated Тонкая обёртка совместимости над SpriteAnimator (один клип).
 * Используйте SpriteAnimator: именованные клипы, pause/play, события,
 * pingpong. Публичный API прежний — позиционный конструктор, setFrames,
 * update; поведение сохранено байт-в-байт (loop=false → 'once').
 */
import type { Sprite, Texture } from 'pixi.js';
import { SpriteAnimator } from './SpriteAnimator';

export class FrameAnimation {
    private readonly animator: SpriteAnimator;
    private clipName: string;

    constructor(sprite: Sprite, frames: Texture[], fps = 8, loop = true) {
        this.clipName = 'frames';
        this.animator = new SpriteAnimator(
            sprite,
            { [this.clipName]: { frames, fps, loop: loop ? 'loop' : 'once' } },
            'frames'
        );
    }
    setFrames(frames: Texture[], reset = false): void {
        this.animator.setClipFrames(this.clipName, frames);
        if (reset) this.animator.play(this.clipName, { restart: true });
    }

    update(dt: number): void {
        this.animator.update(dt);
    }
}