#pragma once

#include "core/jail/jdraw8.hpp"

namespace Scenes {

    // Embolcall fi damunt de la màquina d'estats de fade de jdraw8
    // (`JD8_FadeStart*` / `Jd8::fadeTickStep`). Exposa una API time-based
    // però internament avança un pas del fade per cada crida a `tick()`.
    // La raó de tindre-ho com a classe a banda: que una escena no puga
    // cridar accidentalment a `JD8_FadeOut`/`JD8_FadeToPal` (els shims
    // bloquejants vells) i que el `done()` siga consultable com la resta
    // dels helpers.
    class PaletteFade {
       public:
        PaletteFade() = default;

        void startFadeOut();
        void startFadeTo(const Color* target);

        void tick(int delta_ms);

        [[nodiscard]] auto active() const -> bool { return active_; }
        [[nodiscard]] auto done() const -> bool { return !active_; }

       private:
        bool active_{false};
    };

}  // namespace Scenes
