Luanti 5.16.0-dev
Loading...
Searching...
No Matches
statusTextHelper.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4
5#pragma once
6
7#include "irr_ptr.h"
8#include "irrlichttypes.h"
9
10#include <IGUIEnvironment.h>
11#include <IGUIStaticText.h>
12#include <IVideoDriver.h>
13
14#include <string>
15
16/*
17 * Helper for displaying temporary status texts with automatic fade-out.
18 *
19 * IMPORTANT:
20 * This is NOT an Irrlicht IGUIElement.
21 *
22 */
24{
25public:
26 StatusTextHelper(gui::IGUIEnvironment *guienv, gui::IGUIElement *parent = nullptr);
28
29 // Display a status text (will fade out after configured duration)
30 void showStatusText(const std::wstring &str);
31
32 // Update the element (call once per frame)
33 void update(float dtime);
34
35 // Style for in-game display (centered above bottom, no background)
36 void setGameStyle();
37
38 // Style for main menu display (full-width bar at bottom)
39 void setMainMenuStyle();
40
41 // Clear the current text immediately
42 void clearStatusText();
43
44 // Visibility control
45 void setVisible(bool visible);
46 bool isVisible() const;
47
48 // Getters for testing / debugging
49 const std::wstring &getStatusText() const { return m_statustext; }
50 float getStatusTextTime() const { return m_statustext_time; }
51
52private:
53 irr_ptr<gui::IGUIStaticText> m_guitext_status;
54
55 std::wstring m_statustext;
56 float m_statustext_time = 0.0f;
57 float m_display_duration = 1.5f;
58 float m_fade_progress = 0.0f;
59
60 video::SColor m_text_color;
61 video::SColor m_background_color = video::SColor(0, 0, 0, 0);
62
65
66 // Height of the full-width bar at the bottom of the screen (main menu style)
67 static constexpr s32 MAIN_MENU_BAR_HEIGHT = 40;
68
69 // per-style vertical text alignment (horizontal is always centered)
70 gui::EGUI_ALIGNMENT m_text_alignment_v = gui::EGUIA_UPPERLEFT;
71
72 // Internal helper to update position based on screen size and style
73 void updatePosition();
74};
bool m_background_enabled
Definition statusTextHelper.h:63
gui::EGUI_ALIGNMENT m_text_alignment_v
Definition statusTextHelper.h:70
void updatePosition()
Definition statusTextHelper.cpp:126
void setGameStyle()
Definition statusTextHelper.cpp:64
std::wstring m_statustext
Definition statusTextHelper.h:55
video::SColor m_background_color
Definition statusTextHelper.h:61
~StatusTextHelper()
Definition statusTextHelper.cpp:29
const std::wstring & getStatusText() const
Definition statusTextHelper.h:49
float getStatusTextTime() const
Definition statusTextHelper.h:50
StatusTextHelper(gui::IGUIEnvironment *guienv, gui::IGUIElement *parent=nullptr)
Definition statusTextHelper.cpp:11
float m_statustext_time
Definition statusTextHelper.h:56
void setVisible(bool visible)
Definition statusTextHelper.cpp:53
void showStatusText(const std::wstring &str)
Definition statusTextHelper.cpp:37
bool m_use_main_menu_position
Definition statusTextHelper.h:64
video::SColor m_text_color
Definition statusTextHelper.h:60
irr_ptr< gui::IGUIStaticText > m_guitext_status
Definition statusTextHelper.h:53
static constexpr s32 MAIN_MENU_BAR_HEIGHT
Definition statusTextHelper.h:67
float m_fade_progress
Definition statusTextHelper.h:58
float m_display_duration
Definition statusTextHelper.h:57
void clearStatusText()
Definition statusTextHelper.cpp:44
void setMainMenuStyle()
Definition statusTextHelper.cpp:73
void update(float dtime)
Definition statusTextHelper.cpp:83
bool isVisible() const
Definition statusTextHelper.cpp:59
gui::IGUIEnvironment * guienv
Definition clientlauncher.cpp:36