R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
SettingsMenu.hpp
Go to the documentation of this file.
1
/*
2
** EPITECH PROJECT, 2026
3
** r-type
4
** File description:
5
** SettingsMenu - Settings menu (business logic)
6
*/
7
8
#pragma once
9
10
#include <functional>
11
#include <memory>
12
13
#include "
Graphics/IGraphics.hpp
"
14
#include "
Menu/BaseMenu.hpp
"
15
#include "
UI/ISlider.hpp
"
16
#include "
UI/IUIFactory.hpp
"
17
18
namespace
Game
{
25
class
SettingsMenu
:
public
BaseMenu
{
26
public
:
30
enum class
Mode
{
31
FULLSCREEN
,
32
OVERLAY
33
};
34
40
explicit
SettingsMenu
(
UI::IUIFactory
&uiFactory,
Graphics::IGraphics
&graphics);
41
~SettingsMenu
()
override
=
default
;
42
46
void
Initialize
()
override
;
47
48
void
Update
()
override
;
49
void
Render
()
override
;
50
54
void
SetMode
(
Mode
mode);
55
[[nodiscard]]
Mode
GetMode
()
const
;
56
60
void
SetShowPing
(
bool
enabled);
61
66
void
SetAutoMatchmaking
(
bool
enabled);
67
72
void
ApplyAutoMatchmakingPreference
(
bool
enabled);
73
74
[[nodiscard]]
bool
GetAutoMatchmaking
()
const
;
75
void
SetOnAutoMatchmakingChanged
(std::function<
void
(
bool
)> cb);
76
[[nodiscard]]
bool
GetShowPing
()
const
;
77
82
void
SetOnShowPingChanged
(std::function<
void
(
bool
)> cb);
83
87
void
SetOnBack
(std::function<
void
()> cb);
88
94
void
SetOnMainMenu
(std::function<
void
()> cb);
95
99
void
SetOnAccessibility
(std::function<
void
()> cb);
100
105
void
SetOverlayDimColor
(
unsigned
int
color);
106
111
[[nodiscard]]
unsigned
int
GetOverlayDimColor
()
const
;
112
117
[[nodiscard]]
bool
ShouldDimBackground
()
const
;
118
122
void
SetShowFps
(
bool
enabled);
123
[[nodiscard]]
bool
GetShowFps
()
const
;
124
129
void
SetOnShowFpsChanged
(std::function<
void
(
bool
)> cb);
130
136
void
SetTargetFps
(uint32_t targetFps);
137
141
[[nodiscard]] uint32_t
GetTargetFps
()
const
;
142
146
void
SetOnTargetFpsChanged
(std::function<
void
(uint32_t)> callback);
147
154
void
RefreshVisuals
();
155
161
void
SetShowPingSilent
(
bool
enabled);
162
166
void
SetShowFpsSilent
(
bool
enabled);
167
171
void
SetTargetFpsSilent
(uint32_t targetFps);
172
176
void
SetVolume
(
float
volume);
177
181
[[nodiscard]]
float
GetVolume
()
const
;
182
186
void
SetOnVolumeChanged
(std::function<
void
(
float
)> callback);
187
191
void
SetVolumeSilent
(
float
volume);
192
197
void
SetShowChat
(
bool
enabled);
198
203
bool
GetShowChat
()
const
;
204
209
void
SetOnShowChatChanged
(std::function<
void
(
bool
)> cb);
210
215
void
SetShowChatSilent
(
bool
enabled);
216
220
void
UpdateChatToggleVisuals
();
221
222
private
:
223
[[nodiscard]] uint32_t
ValidateTargetFps
(uint32_t targetFps)
const
;
224
void
UpdateToggleVisuals
();
225
void
UpdateFpsToggleVisuals
();
226
void
UpdateAutoMatchmakingVisuals
();
227
void
UpdateTargetFpsVisuals
();
228
[[nodiscard]] uint32_t
NextTargetFps
(uint32_t current)
const
;
229
230
Graphics::IGraphics
&
_graphics
;
231
std::unique_ptr<UI::ISlider>
_volumeSlider
;
232
233
Mode
_mode
{
Mode::FULLSCREEN
};
234
bool
_showPing
{
true
};
235
bool
_showFps
{
true
};
236
bool
_showChat
{
false
};
// Désactivé par défaut
237
bool
_autoMatchmaking
{
false
};
// Auto-matchmaking disabled by default
238
unsigned
int
_overlayDimColor
{0x88000000};
239
uint32_t
_targetFps
{60};
240
float
_volume
{50.0F};
// Default volume 50%
241
242
std::function<void(
bool
)>
_onShowPingChanged
{};
243
std::function<void()>
_onBack
{};
244
std::function<void()>
_onMainMenu
{};
245
std::function<void()>
_onAccessibility
{};
246
std::function<void(
bool
)>
_onShowFpsChanged
{};
247
std::function<void(
bool
)>
_onShowChatChanged
{};
248
std::function<void(uint32_t)>
_onTargetFpsChanged
{};
249
std::function<void(
float
)>
_onVolumeChanged
{};
250
std::function<void(
bool
)>
_onAutoMatchmakingChanged
{};
251
252
static
constexpr
size_t
TOGGLE_PING_INDEX
= 0;
253
static
constexpr
size_t
TOGGLE_FPS_INDEX
= 1;
254
static
constexpr
size_t
TOGGLE_CHAT_INDEX
= 2;
255
static
constexpr
size_t
AUTO_MATCHMAKING_INDEX
= 3;
256
static
constexpr
size_t
TARGET_FPS_INDEX
= 4;
257
static
constexpr
size_t
ACCESSIBILITY_INDEX
= 5;
258
static
constexpr
size_t
BACK_INDEX
= 6;
259
static
constexpr
size_t
MAIN_MENU_INDEX
= 7;
260
};
261
}
// namespace Game
BaseMenu.hpp
IGraphics.hpp
ISlider.hpp
IUIFactory.hpp
Game::BaseMenu
Base class for all menu implementations.
Definition
BaseMenu.hpp:26
Game::SettingsMenu
Settings menu of the game.
Definition
SettingsMenu.hpp:25
Game::SettingsMenu::SetShowFps
void SetShowFps(bool enabled)
Toggle whether FPS should be displayed.
Definition
SettingsMenu.cpp:216
Game::SettingsMenu::Initialize
void Initialize() override
Initialize UI elements.
Definition
SettingsMenu.cpp:18
Game::SettingsMenu::SetTargetFpsSilent
void SetTargetFpsSilent(uint32_t targetFps)
Set targetFps without emitting callbacks/logs.
Definition
SettingsMenu.cpp:279
Game::SettingsMenu::SetOnShowFpsChanged
void SetOnShowFpsChanged(std::function< void(bool)> cb)
Set callback invoked when the FPS toggle changes.
Definition
SettingsMenu.cpp:229
Game::SettingsMenu::GetShowPing
bool GetShowPing() const
Definition
SettingsMenu.cpp:196
Game::SettingsMenu::GetAutoMatchmaking
bool GetAutoMatchmaking() const
Definition
SettingsMenu.cpp:459
Game::SettingsMenu::SetShowChat
void SetShowChat(bool enabled)
Set chat visibility.
Definition
SettingsMenu.cpp:397
Game::SettingsMenu::GetTargetFps
uint32_t GetTargetFps() const
Get the target FPS for the client.
Definition
SettingsMenu.cpp:294
Game::SettingsMenu::SetTargetFps
void SetTargetFps(uint32_t targetFps)
Set the target FPS for the client.
Definition
SettingsMenu.cpp:284
Game::SettingsMenu::_mode
Mode _mode
Definition
SettingsMenu.hpp:233
Game::SettingsMenu::SetAutoMatchmaking
void SetAutoMatchmaking(bool enabled)
Toggle auto-matchmaking feature. This triggers the callback to notify the server.
Definition
SettingsMenu.cpp:440
Game::SettingsMenu::_onAutoMatchmakingChanged
std::function< void(bool)> _onAutoMatchmakingChanged
Definition
SettingsMenu.hpp:250
Game::SettingsMenu::GetOverlayDimColor
unsigned int GetOverlayDimColor() const
Get the dim color used when this menu is displayed in overlay mode.
Definition
SettingsMenu.cpp:363
Game::SettingsMenu::SetOverlayDimColor
void SetOverlayDimColor(unsigned int color)
Set the dim color used when this menu is displayed in overlay mode.
Definition
SettingsMenu.cpp:359
Game::SettingsMenu::_onShowPingChanged
std::function< void(bool)> _onShowPingChanged
Definition
SettingsMenu.hpp:242
Game::SettingsMenu::SetShowPingSilent
void SetShowPingSilent(bool enabled)
Set showPing without emitting callbacks/logs.
Definition
SettingsMenu.cpp:269
Game::SettingsMenu::_showPing
bool _showPing
Definition
SettingsMenu.hpp:234
Game::SettingsMenu::AUTO_MATCHMAKING_INDEX
static constexpr size_t AUTO_MATCHMAKING_INDEX
Definition
SettingsMenu.hpp:255
Game::SettingsMenu::SetShowPing
void SetShowPing(bool enabled)
Toggle whether ping should be displayed.
Definition
SettingsMenu.cpp:187
Game::SettingsMenu::UpdateTargetFpsVisuals
void UpdateTargetFpsVisuals()
Definition
SettingsMenu.cpp:344
Game::SettingsMenu::GetShowChat
bool GetShowChat() const
Get chat visibility.
Definition
SettingsMenu.cpp:406
Game::SettingsMenu::_showChat
bool _showChat
Definition
SettingsMenu.hpp:236
Game::SettingsMenu::SetShowChatSilent
void SetShowChatSilent(bool enabled)
Set chat visibility without emitting callbacks/logs.
Definition
SettingsMenu.cpp:414
Game::SettingsMenu::UpdateAutoMatchmakingVisuals
void UpdateAutoMatchmakingVisuals()
Definition
SettingsMenu.cpp:467
Game::SettingsMenu::_overlayDimColor
unsigned int _overlayDimColor
Definition
SettingsMenu.hpp:238
Game::SettingsMenu::RefreshVisuals
void RefreshVisuals()
Refresh button labels/colors to match current internal state.
Definition
SettingsMenu.cpp:261
Game::SettingsMenu::_graphics
Graphics::IGraphics & _graphics
Definition
SettingsMenu.hpp:230
Game::SettingsMenu::ACCESSIBILITY_INDEX
static constexpr size_t ACCESSIBILITY_INDEX
Definition
SettingsMenu.hpp:257
Game::SettingsMenu::SetVolume
void SetVolume(float volume)
Set the volume level (0-100).
Definition
SettingsMenu.cpp:371
Game::SettingsMenu::SetVolumeSilent
void SetVolumeSilent(float volume)
Set volume without emitting callbacks/logs.
Definition
SettingsMenu.cpp:390
Game::SettingsMenu::~SettingsMenu
~SettingsMenu() override=default
Game::SettingsMenu::BACK_INDEX
static constexpr size_t BACK_INDEX
Definition
SettingsMenu.hpp:258
Game::SettingsMenu::SetMode
void SetMode(Mode mode)
Set display mode (fullscreen or overlay).
Definition
SettingsMenu.cpp:179
Game::SettingsMenu::TOGGLE_FPS_INDEX
static constexpr size_t TOGGLE_FPS_INDEX
Definition
SettingsMenu.hpp:253
Game::SettingsMenu::TOGGLE_PING_INDEX
static constexpr size_t TOGGLE_PING_INDEX
Definition
SettingsMenu.hpp:252
Game::SettingsMenu::SetOnShowPingChanged
void SetOnShowPingChanged(std::function< void(bool)> cb)
Set callback invoked when the ping toggle changes.
Definition
SettingsMenu.cpp:200
Game::SettingsMenu::_volumeSlider
std::unique_ptr< UI::ISlider > _volumeSlider
Definition
SettingsMenu.hpp:231
Game::SettingsMenu::GetMode
Mode GetMode() const
Definition
SettingsMenu.cpp:183
Game::SettingsMenu::_onMainMenu
std::function< void()> _onMainMenu
Definition
SettingsMenu.hpp:244
Game::SettingsMenu::UpdateFpsToggleVisuals
void UpdateFpsToggleVisuals()
Definition
SettingsMenu.cpp:323
Game::SettingsMenu::GetVolume
float GetVolume() const
Get the current volume level.
Definition
SettingsMenu.cpp:382
Game::SettingsMenu::SetOnShowChatChanged
void SetOnShowChatChanged(std::function< void(bool)> cb)
Set callback invoked when the chat visibility changes.
Definition
SettingsMenu.cpp:410
Game::SettingsMenu::UpdateChatToggleVisuals
void UpdateChatToggleVisuals()
Updates the visuals of the chat toggle button.
Definition
SettingsMenu.cpp:419
Game::SettingsMenu::Render
void Render() override
Render menu (should be called every frame).
Definition
SettingsMenu.cpp:133
Game::SettingsMenu::ApplyAutoMatchmakingPreference
void ApplyAutoMatchmakingPreference(bool enabled)
Apply auto-matchmaking preference silently (without triggering callback). Used when loading preferenc...
Definition
SettingsMenu.cpp:450
Game::SettingsMenu::NextTargetFps
uint32_t NextTargetFps(uint32_t current) const
Definition
SettingsMenu.cpp:233
Game::SettingsMenu::TARGET_FPS_INDEX
static constexpr size_t TARGET_FPS_INDEX
Definition
SettingsMenu.hpp:256
Game::SettingsMenu::SetShowFpsSilent
void SetShowFpsSilent(bool enabled)
Set showFps without emitting callbacks/logs.
Definition
SettingsMenu.cpp:274
Game::SettingsMenu::_showFps
bool _showFps
Definition
SettingsMenu.hpp:235
Game::SettingsMenu::ValidateTargetFps
uint32_t ValidateTargetFps(uint32_t targetFps) const
Definition
SettingsMenu.cpp:248
Game::SettingsMenu::SetOnTargetFpsChanged
void SetOnTargetFpsChanged(std::function< void(uint32_t)> callback)
Set callback invoked when the target FPS changes.
Definition
SettingsMenu.cpp:298
Game::SettingsMenu::_onAccessibility
std::function< void()> _onAccessibility
Definition
SettingsMenu.hpp:245
Game::SettingsMenu::SetOnAutoMatchmakingChanged
void SetOnAutoMatchmakingChanged(std::function< void(bool)> cb)
Definition
SettingsMenu.cpp:463
Game::SettingsMenu::SetOnAccessibility
void SetOnAccessibility(std::function< void()> cb)
Set callback invoked when "Accessibility" button is clicked.
Definition
SettingsMenu.cpp:212
Game::SettingsMenu::Update
void Update() override
Update menu state (should be called every frame).
Definition
SettingsMenu.cpp:126
Game::SettingsMenu::_onShowFpsChanged
std::function< void(bool)> _onShowFpsChanged
Definition
SettingsMenu.hpp:246
Game::SettingsMenu::_autoMatchmaking
bool _autoMatchmaking
Definition
SettingsMenu.hpp:237
Game::SettingsMenu::ShouldDimBackground
bool ShouldDimBackground() const
Whether the background should be dimmed when the menu is visible.
Definition
SettingsMenu.cpp:367
Game::SettingsMenu::SetOnBack
void SetOnBack(std::function< void()> cb)
Set callback invoked when Back is clicked.
Definition
SettingsMenu.cpp:204
Game::SettingsMenu::UpdateToggleVisuals
void UpdateToggleVisuals()
Definition
SettingsMenu.cpp:302
Game::SettingsMenu::_onBack
std::function< void()> _onBack
Definition
SettingsMenu.hpp:243
Game::SettingsMenu::Mode
Mode
Display mode for the settings menu.
Definition
SettingsMenu.hpp:30
Game::SettingsMenu::Mode::OVERLAY
@ OVERLAY
Displays over the game with a dimmed background.
Game::SettingsMenu::Mode::FULLSCREEN
@ FULLSCREEN
Takes the whole window (main menu context)
Game::SettingsMenu::_targetFps
uint32_t _targetFps
Definition
SettingsMenu.hpp:239
Game::SettingsMenu::GetShowFps
bool GetShowFps() const
Definition
SettingsMenu.cpp:225
Game::SettingsMenu::TOGGLE_CHAT_INDEX
static constexpr size_t TOGGLE_CHAT_INDEX
Definition
SettingsMenu.hpp:254
Game::SettingsMenu::_volume
float _volume
Definition
SettingsMenu.hpp:240
Game::SettingsMenu::_onTargetFpsChanged
std::function< void(uint32_t)> _onTargetFpsChanged
Definition
SettingsMenu.hpp:248
Game::SettingsMenu::_onShowChatChanged
std::function< void(bool)> _onShowChatChanged
Definition
SettingsMenu.hpp:247
Game::SettingsMenu::SetOnVolumeChanged
void SetOnVolumeChanged(std::function< void(float)> callback)
Set callback invoked when the volume changes.
Definition
SettingsMenu.cpp:386
Game::SettingsMenu::MAIN_MENU_INDEX
static constexpr size_t MAIN_MENU_INDEX
Definition
SettingsMenu.hpp:259
Game::SettingsMenu::_onVolumeChanged
std::function< void(float)> _onVolumeChanged
Definition
SettingsMenu.hpp:249
Game::SettingsMenu::SetOnMainMenu
void SetOnMainMenu(std::function< void()> cb)
Set callback invoked when "Main Menu" is clicked.
Definition
SettingsMenu.cpp:208
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
SettingsMenu.hpp
Generated by
1.9.8