Files
orni-attack/source/core/graphics/screen_fade.hpp
T

44 lines
1.3 KiB
C++

// screen_fade.hpp - Fosa a/desde negre per a transicions d'escena
// © 2026 JailDesigner
//
// Rect negre a pantalla completa amb l'alpha animat linealment. L'escena que el
// posseeix l'actualitza cada frame i el dibuixa l'ÚLTIM (per damunt de tot). En
// repòs (default-construït o fosa acabada amb alpha 0) el draw() és un no-op.
#pragma once
#include "core/rendering/render_context.hpp"
namespace Graphics {
class ScreenFade {
public:
explicit ScreenFade(Rendering::Renderer* renderer);
// Arrenca una fosa lineal d'alpha 'from' a 'to' en 'duration' segons.
void start(float from, float to, float duration);
// Avança el temporitzador intern.
void update(float delta_time);
// Dibuixa el rect negre a pantalla completa amb l'alpha actual.
// No fa res si l'alpha és ~0 (estalvia el pushRect).
void draw() const;
// Cert quan la fosa ha acabat (o no s'ha arrencat mai).
[[nodiscard]] auto isDone() const -> bool;
// Alpha actual ∈ [0, 1].
[[nodiscard]] auto alpha() const -> float;
private:
Rendering::Renderer* renderer_;
float from_{0.0F};
float to_{0.0F};
float duration_{0.0F};
float elapsed_{0.0F};
bool active_{false};
};
} // namespace Graphics