R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
AccessibilityMenu.hpp
Go to the documentation of this file.
1
/*
2
** EPITECH PROJECT, 2026
3
** r-type
4
** File description:
5
** AccessibilityMenu - Accessibility features menu
6
*/
7
8
#pragma once
9
10
#include <functional>
11
#include <memory>
12
#include <string>
13
14
#include "
Graphics/IGraphics.hpp
"
15
#include "
Menu/BaseMenu.hpp
"
16
#include "
UI/IUIFactory.hpp
"
17
18
namespace
Game
{
28
class
AccessibilityMenu
:
public
BaseMenu
{
29
public
:
33
enum class
ColorblindFilter
{
34
NONE
,
35
PROTANOPIA
,
36
DEUTERANOPIA
,
37
TRITANOPIA
,
38
MONOCHROMACY
39
};
40
44
enum class
Mode
{
45
FULLSCREEN
,
46
OVERLAY
47
};
48
54
explicit
AccessibilityMenu
(
UI::IUIFactory
&uiFactory,
Graphics::IGraphics
&graphics);
55
~AccessibilityMenu
()
override
=
default
;
56
60
void
Initialize
()
override
;
61
62
void
Update
()
override
;
63
void
Render
()
override
;
64
65
// --- Display Mode ---
66
void
SetMode
(
Mode
mode);
67
[[nodiscard]]
Mode
GetMode
()
const
;
68
69
void
SetOverlayDimColor
(
unsigned
int
color);
70
[[nodiscard]]
unsigned
int
GetOverlayDimColor
()
const
;
71
[[nodiscard]]
bool
ShouldDimBackground
()
const
;
72
73
// --- Colorblind Filters ---
78
void
SetColorblindFilter
(
ColorblindFilter
filter);
79
84
[[nodiscard]]
ColorblindFilter
GetColorblindFilter
()
const
;
85
89
void
SetOnColorblindFilterChanged
(std::function<
void
(
ColorblindFilter
)> callback);
90
94
void
SetColorblindFilterSilent
(
ColorblindFilter
filter);
95
96
// --- Game Speed ---
101
void
SetGameSpeed
(
float
speed);
102
106
[[nodiscard]]
float
GetGameSpeed
()
const
;
107
111
void
SetOnGameSpeedChanged
(std::function<
void
(
float
)> callback);
112
116
void
SetGameSpeedSilent
(
float
speed);
117
118
// --- Key Bindings ---
122
void
OpenKeyBindingsConfig
();
123
127
void
SetOnConfigureKeyBindings
(std::function<
void
()> callback);
128
129
// --- Callbacks ---
133
void
SetOnBack
(std::function<
void
()> callback);
134
138
void
SetOnMainMenu
(std::function<
void
()> callback);
139
143
void
RefreshVisuals
();
144
145
private
:
146
// Helper methods
147
void
UpdateColorblindFilterVisuals
();
148
[[nodiscard]]
ColorblindFilter
NextColorblindFilter
(
ColorblindFilter
current)
const
;
149
[[nodiscard]]
const
char
*
ColorblindFilterToString
(
ColorblindFilter
filter)
const
;
150
[[nodiscard]]
float
ClampGameSpeed
(
float
speed)
const
;
151
152
// Member variables
153
Graphics::IGraphics
&
_graphics
;
154
155
Mode
_mode
{
Mode::FULLSCREEN
};
156
ColorblindFilter
_colorblindFilter
{
ColorblindFilter::NONE
};
157
float
_gameSpeed
{1.0f};
// Normal speed
158
unsigned
int
_overlayDimColor
{0x88000000};
159
160
// Callbacks
161
std::function<void(
ColorblindFilter
)>
_onColorblindFilterChanged
{};
162
std::function<void(
float
)>
_onGameSpeedChanged
{};
163
std::function<void()>
_onConfigureKeyBindings
{};
164
std::function<void()>
_onBack
{};
165
std::function<void()>
_onMainMenu
{};
166
167
// Button indices
168
static
constexpr
size_t
COLORBLIND_FILTER_INDEX
= 0;
169
static
constexpr
size_t
KEY_BINDINGS_INDEX
= 1;
170
static
constexpr
size_t
BACK_INDEX
= 2;
171
static
constexpr
size_t
MAIN_MENU_INDEX
= 3;
172
};
173
}
// namespace Game
BaseMenu.hpp
IGraphics.hpp
IUIFactory.hpp
Game::AccessibilityMenu
Accessibility menu for configuring accessibility features.
Definition
AccessibilityMenu.hpp:28
Game::AccessibilityMenu::MAIN_MENU_INDEX
static constexpr size_t MAIN_MENU_INDEX
Definition
AccessibilityMenu.hpp:171
Game::AccessibilityMenu::SetGameSpeedSilent
void SetGameSpeedSilent(float speed)
Set game speed without emitting callbacks.
Definition
AccessibilityMenu.cpp:168
Game::AccessibilityMenu::ColorblindFilter
ColorblindFilter
Colorblind filter types.
Definition
AccessibilityMenu.hpp:33
Game::AccessibilityMenu::ColorblindFilter::DEUTERANOPIA
@ DEUTERANOPIA
Green-blind.
Game::AccessibilityMenu::ColorblindFilter::PROTANOPIA
@ PROTANOPIA
Red-blind.
Game::AccessibilityMenu::ColorblindFilter::MONOCHROMACY
@ MONOCHROMACY
Complete color blindness.
Game::AccessibilityMenu::ColorblindFilter::TRITANOPIA
@ TRITANOPIA
Blue-blind.
Game::AccessibilityMenu::ColorblindFilter::NONE
@ NONE
No filter applied.
Game::AccessibilityMenu::ShouldDimBackground
bool ShouldDimBackground() const
Definition
AccessibilityMenu.cpp:119
Game::AccessibilityMenu::SetOnColorblindFilterChanged
void SetOnColorblindFilterChanged(std::function< void(ColorblindFilter)> callback)
Set callback invoked when colorblind filter changes.
Definition
AccessibilityMenu.cpp:139
Game::AccessibilityMenu::GetMode
Mode GetMode() const
Definition
AccessibilityMenu.cpp:107
Game::AccessibilityMenu::_onBack
std::function< void()> _onBack
Definition
AccessibilityMenu.hpp:164
Game::AccessibilityMenu::SetGameSpeed
void SetGameSpeed(float speed)
Set game speed multiplier (0.5 = 50% speed, 1.0 = normal)
Definition
AccessibilityMenu.cpp:149
Game::AccessibilityMenu::_onGameSpeedChanged
std::function< void(float)> _onGameSpeedChanged
Definition
AccessibilityMenu.hpp:162
Game::AccessibilityMenu::RefreshVisuals
void RefreshVisuals()
Refresh button labels/colors to match current state.
Definition
AccessibilityMenu.cpp:197
Game::AccessibilityMenu::BACK_INDEX
static constexpr size_t BACK_INDEX
Definition
AccessibilityMenu.hpp:170
Game::AccessibilityMenu::UpdateColorblindFilterVisuals
void UpdateColorblindFilterVisuals()
Definition
AccessibilityMenu.cpp:201
Game::AccessibilityMenu::_overlayDimColor
unsigned int _overlayDimColor
Definition
AccessibilityMenu.hpp:158
Game::AccessibilityMenu::~AccessibilityMenu
~AccessibilityMenu() override=default
Game::AccessibilityMenu::SetMode
void SetMode(Mode mode)
Definition
AccessibilityMenu.cpp:100
Game::AccessibilityMenu::SetColorblindFilter
void SetColorblindFilter(ColorblindFilter filter)
Set the colorblind filter type.
Definition
AccessibilityMenu.cpp:124
Game::AccessibilityMenu::SetOverlayDimColor
void SetOverlayDimColor(unsigned int color)
Definition
AccessibilityMenu.cpp:111
Game::AccessibilityMenu::Initialize
void Initialize() override
Initialize UI elements.
Definition
AccessibilityMenu.cpp:17
Game::AccessibilityMenu::OpenKeyBindingsConfig
void OpenKeyBindingsConfig()
Open key bindings configuration dialog.
Definition
AccessibilityMenu.cpp:173
Game::AccessibilityMenu::_graphics
Graphics::IGraphics & _graphics
Definition
AccessibilityMenu.hpp:153
Game::AccessibilityMenu::ClampGameSpeed
float ClampGameSpeed(float speed) const
Definition
AccessibilityMenu.cpp:252
Game::AccessibilityMenu::COLORBLIND_FILTER_INDEX
static constexpr size_t COLORBLIND_FILTER_INDEX
Definition
AccessibilityMenu.hpp:168
Game::AccessibilityMenu::SetOnMainMenu
void SetOnMainMenu(std::function< void()> callback)
Set callback invoked when "Main Menu" is clicked (overlay mode)
Definition
AccessibilityMenu.cpp:192
Game::AccessibilityMenu::Update
void Update() override
Update menu state (should be called every frame).
Definition
AccessibilityMenu.cpp:73
Game::AccessibilityMenu::GetColorblindFilter
ColorblindFilter GetColorblindFilter() const
Get the current colorblind filter.
Definition
AccessibilityMenu.cpp:135
Game::AccessibilityMenu::SetOnBack
void SetOnBack(std::function< void()> callback)
Set callback invoked when Back is clicked.
Definition
AccessibilityMenu.cpp:188
Game::AccessibilityMenu::GetOverlayDimColor
unsigned int GetOverlayDimColor() const
Definition
AccessibilityMenu.cpp:115
Game::AccessibilityMenu::_onColorblindFilterChanged
std::function< void(ColorblindFilter)> _onColorblindFilterChanged
Definition
AccessibilityMenu.hpp:161
Game::AccessibilityMenu::KEY_BINDINGS_INDEX
static constexpr size_t KEY_BINDINGS_INDEX
Definition
AccessibilityMenu.hpp:169
Game::AccessibilityMenu::_gameSpeed
float _gameSpeed
Definition
AccessibilityMenu.hpp:157
Game::AccessibilityMenu::ColorblindFilterToString
const char * ColorblindFilterToString(ColorblindFilter filter) const
Definition
AccessibilityMenu.cpp:235
Game::AccessibilityMenu::Render
void Render() override
Render menu (should be called every frame).
Definition
AccessibilityMenu.cpp:77
Game::AccessibilityMenu::_colorblindFilter
ColorblindFilter _colorblindFilter
Definition
AccessibilityMenu.hpp:156
Game::AccessibilityMenu::SetOnGameSpeedChanged
void SetOnGameSpeedChanged(std::function< void(float)> callback)
Set callback invoked when game speed changes.
Definition
AccessibilityMenu.cpp:164
Game::AccessibilityMenu::_onConfigureKeyBindings
std::function< void()> _onConfigureKeyBindings
Definition
AccessibilityMenu.hpp:163
Game::AccessibilityMenu::GetGameSpeed
float GetGameSpeed() const
Get current game speed multiplier.
Definition
AccessibilityMenu.cpp:160
Game::AccessibilityMenu::SetOnConfigureKeyBindings
void SetOnConfigureKeyBindings(std::function< void()> callback)
Set callback invoked when user wants to configure key bindings.
Definition
AccessibilityMenu.cpp:183
Game::AccessibilityMenu::_onMainMenu
std::function< void()> _onMainMenu
Definition
AccessibilityMenu.hpp:165
Game::AccessibilityMenu::NextColorblindFilter
ColorblindFilter NextColorblindFilter(ColorblindFilter current) const
Definition
AccessibilityMenu.cpp:217
Game::AccessibilityMenu::Mode
Mode
Display mode for the accessibility menu.
Definition
AccessibilityMenu.hpp:44
Game::AccessibilityMenu::Mode::OVERLAY
@ OVERLAY
Displays over the game with a dimmed background.
Game::AccessibilityMenu::Mode::FULLSCREEN
@ FULLSCREEN
Takes the whole window (main menu context)
Game::AccessibilityMenu::_mode
Mode _mode
Definition
AccessibilityMenu.hpp:155
Game::AccessibilityMenu::SetColorblindFilterSilent
void SetColorblindFilterSilent(ColorblindFilter filter)
Set colorblind filter without emitting callbacks.
Definition
AccessibilityMenu.cpp:143
Game::BaseMenu
Base class for all menu implementations.
Definition
BaseMenu.hpp:26
Graphics::IGraphics
Abstract interface for graphics rendering operations.
Definition
IGraphics.hpp:32
UI::IUIFactory
Abstract factory interface for creating UI elements.
Definition
IUIFactory.hpp:28
Game
Definition
AccessibilityMenu.cpp:13
client
Menu
AccessibilityMenu.hpp
Generated by
1.9.8