#pragma once #include #include #include "core/rendering/notifier.hpp" #include "utils/defaults.hpp" // Temes per a les notificacions de pantalla. Un "preset" captura els dos // colors (text i fons, índexs sobre la paleta "ui") i el temps de visibilitat // en mil·lisegons. Per a llançar una notificació amb un preset concret, // cridar Notification::notify(text, preset); si s'omet, s'usa DEFAULT. namespace Notification { struct Preset { Uint8 text_color; Uint8 bg_color; int time_ms; }; // Tema per defecte: text clar sobre fons fosc. Els valors concrets // viuen a `Defaults::UI` — tocar l'aparença global es fa allà. constexpr Preset DEFAULT{ .text_color = Defaults::UI::NOTIFICATION_TEXT, .bg_color = Defaults::UI::NOTIFICATION_BG, .time_ms = Defaults::UI::NOTIFICATION_TIME_MS, }; // Preset per al missatge de confirmació d'eixida (ESC doble). Color // d'accent per a distingir-lo d'una notificació informativa; la durada // coincideix amb la finestra durant la qual la segona pulsació d'ESC // confirma el tancament — veure GlobalInputs::onExit. constexpr Preset EXIT{ .text_color = Defaults::UI::EXIT_TEXT, .bg_color = Defaults::UI::EXIT_BG, .time_ms = Defaults::UI::EXIT_TIME_MS, }; // Helper de conveniència: aplica un preset (per defecte DEFAULT) cridant // la API crua de Notifier. La direcció game → core és la correcta. inline void notify(const std::string& text, const Preset& preset = DEFAULT) { Notifier::get().notify(text, preset.text_color, preset.bg_color, preset.time_ms); } } // namespace Notification