Files
aee-arcade/source/core/rendering/notification_presets.hpp
T
JailDesigner beb6a4aad1 HC-04+HC-05: índexs de paleta UI centralitzats a Defaults::UI
Afegit `Defaults::UI::` amb els 5 índexs (RENDER_INFO_TEXT/SHADOW,
CANVAS_BG, NOTIFICATION_TEXT/BG, EXIT_TEXT/BG) i 2 durades
(NOTIFICATION_TIME_MS, EXIT_TIME_MS). `ui_palette.hpp` i
`notification_presets.hpp` queden com a alias: canviar el tema global
és tocar un sol bloc. Equivalent a tenir un "tema" (vindria d'un YAML el
dia que calga).
2026-04-20 18:07:31 +02:00

47 lines
1.7 KiB
C++

#pragma once
#include <SDL3/SDL.h>
#include <string>
#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