Help Overlay: implementación preliminar

This commit is contained in:
2025-10-12 07:02:22 +02:00
parent 35f29340db
commit 18a8812ad7
7 changed files with 362 additions and 8 deletions

View File

@@ -10,12 +10,14 @@
#include "../text/textrenderer.h" // for TextRenderer
#include "../theme_manager.h" // for ThemeManager
#include "notifier.h" // for Notifier
#include "help_overlay.h" // for HelpOverlay
UIManager::UIManager()
: text_renderer_(nullptr)
, text_renderer_debug_(nullptr)
, text_renderer_notifier_(nullptr)
, notifier_(nullptr)
, help_overlay_(nullptr)
, show_debug_(false)
, show_text_(true)
, text_()
@@ -38,6 +40,7 @@ UIManager::~UIManager() {
delete text_renderer_debug_;
delete text_renderer_notifier_;
delete notifier_;
delete help_overlay_;
}
void UIManager::initialize(SDL_Renderer* renderer, ThemeManager* theme_manager,
@@ -63,6 +66,10 @@ void UIManager::initialize(SDL_Renderer* renderer, ThemeManager* theme_manager,
notifier_->init(renderer, text_renderer_notifier_, theme_manager_,
physical_width, physical_height);
// Crear y configurar sistema de ayuda (overlay)
help_overlay_ = new HelpOverlay();
help_overlay_->initialize(renderer, theme_manager_, physical_width, physical_height);
// Inicializar FPS counter
fps_last_time_ = SDL_GetTicks();
fps_frame_count_ = 0;
@@ -114,12 +121,23 @@ void UIManager::render(SDL_Renderer* renderer,
// Renderizar notificaciones (siempre al final, sobre todo lo demás)
notifier_->render();
// Renderizar ayuda (siempre última, sobre todo incluso notificaciones)
if (help_overlay_) {
help_overlay_->render(renderer);
}
}
void UIManager::toggleDebug() {
show_debug_ = !show_debug_;
}
void UIManager::toggleHelp() {
if (help_overlay_) {
help_overlay_->toggle();
}
}
void UIManager::showNotification(const std::string& text, Uint64 duration) {
if (duration == 0) {
duration = NOTIFICATION_DURATION;
@@ -135,6 +153,9 @@ void UIManager::updatePhysicalWindowSize(int width, int height) {
physical_window_width_ = width;
physical_window_height_ = height;
notifier_->updateWindowSize(width, height);
if (help_overlay_) {
help_overlay_->updatePhysicalWindowSize(width, height);
}
}
void UIManager::setTextObsolete(const std::string& text, int pos, int current_screen_width) {