R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
KeyBindingsMenu.hpp
Go to the documentation of this file.
1
/*
2
** EPITECH PROJECT, 2026
3
** r-type
4
** File description:
5
** KeyBindingsMenu - Menu for remapping key bindings
6
*/
7
8
#pragma once
9
10
#include <functional>
11
#include <memory>
12
#include <string>
13
#include <vector>
14
15
#include "
Graphics/IGraphics.hpp
"
16
#include "
Input/KeyBindings.hpp
"
17
#include "
Menu/BaseMenu.hpp
"
18
#include "
UI/IUIFactory.hpp
"
19
20
namespace
Game
{
21
28
class
KeyBindingsMenu
:
public
BaseMenu
{
29
public
:
33
enum class
Mode
{
34
FULLSCREEN
,
35
OVERLAY
36
};
37
43
explicit
KeyBindingsMenu
(
UI::IUIFactory
&uiFactory,
Graphics::IGraphics
&graphics);
44
~KeyBindingsMenu
()
override
=
default
;
45
49
void
Initialize
()
override
;
50
51
void
Update
()
override
;
52
void
Render
()
override
;
53
54
// --- Display Mode ---
55
void
SetMode
(
Mode
mode);
56
[[nodiscard]]
Mode
GetMode
()
const
;
57
58
void
SetOverlayDimColor
(
unsigned
int
color);
59
[[nodiscard]]
unsigned
int
GetOverlayDimColor
()
const
;
60
[[nodiscard]]
bool
ShouldDimBackground
()
const
;
61
62
// --- Callbacks ---
63
67
void
SetOnBack
(std::function<
void
()> callback);
68
72
void
SetOnBindingsChanged
(std::function<
void
()> callback);
73
74
private
:
80
void
CreateBindingRow
(
Input::GameAction
action,
float
yOffset);
81
87
void
UpdateBindingButtonText
(
Input::GameAction
action,
bool
isPrimary);
88
94
void
StartKeyCapture
(
Input::GameAction
action,
bool
isPrimary);
95
99
void
CancelKeyCapture
();
100
105
void
HandleCapturedKey
(
int
key);
106
110
void
RefreshAllBindings
();
111
112
Graphics::IGraphics
&
_graphics
;
113
114
// Display mode
115
Mode
_mode
{
Mode::FULLSCREEN
};
116
unsigned
int
_overlayDimColor
{0x80000000};
// Semi-transparent black
117
118
// Callbacks
119
std::function<void()>
_onBack
;
120
std::function<void()>
_onBindingsChanged
;
121
122
// Key capture state
123
bool
_isCapturing
{
false
};
124
Input::GameAction
_captureAction
{
Input::GameAction::MOVE_UP
};
125
bool
_capturePrimary
{
true
};
126
127
// Binding buttons (for updating text)
128
struct
BindingButtons
{
129
std::shared_ptr<UI::IButton>
primaryButton
;
130
std::shared_ptr<UI::IButton>
secondaryButton
;
131
};
132
std::unordered_map<Input::GameAction, BindingButtons>
_bindingButtons
;
133
134
// UI Elements
135
std::shared_ptr<UI::IButton>
_backButton
;
136
std::shared_ptr<UI::IButton>
_resetButton
;
137
};
138
139
}
// namespace Game
BaseMenu.hpp
IGraphics.hpp
IUIFactory.hpp
KeyBindings.hpp
Game::BaseMenu
Base class for all menu implementations.
Definition
BaseMenu.hpp:26
Game::KeyBindingsMenu
Menu for viewing and remapping key bindings.
Definition
KeyBindingsMenu.hpp:28
Game::KeyBindingsMenu::_captureAction
Input::GameAction _captureAction
Definition
KeyBindingsMenu.hpp:124
Game::KeyBindingsMenu::_capturePrimary
bool _capturePrimary
Definition
KeyBindingsMenu.hpp:125
Game::KeyBindingsMenu::CreateBindingRow
void CreateBindingRow(Input::GameAction action, float yOffset)
Create a binding row for an action.
Definition
KeyBindingsMenu.cpp:110
Game::KeyBindingsMenu::GetMode
Mode GetMode() const
Definition
KeyBindingsMenu.cpp:327
Game::KeyBindingsMenu::GetOverlayDimColor
unsigned int GetOverlayDimColor() const
Definition
KeyBindingsMenu.cpp:335
Game::KeyBindingsMenu::HandleCapturedKey
void HandleCapturedKey(int key)
Handle a key press during capture mode.
Definition
KeyBindingsMenu.cpp:277
Game::KeyBindingsMenu::Render
void Render() override
Render menu (should be called every frame).
Definition
KeyBindingsMenu.cpp:226
Game::KeyBindingsMenu::_onBindingsChanged
std::function< void()> _onBindingsChanged
Definition
KeyBindingsMenu.hpp:120
Game::KeyBindingsMenu::_overlayDimColor
unsigned int _overlayDimColor
Definition
KeyBindingsMenu.hpp:116
Game::KeyBindingsMenu::_graphics
Graphics::IGraphics & _graphics
Definition
KeyBindingsMenu.hpp:112
Game::KeyBindingsMenu::Initialize
void Initialize() override
Initialize UI elements.
Definition
KeyBindingsMenu.cpp:17
Game::KeyBindingsMenu::Update
void Update() override
Update menu state (should be called every frame).
Definition
KeyBindingsMenu.cpp:177
Game::KeyBindingsMenu::RefreshAllBindings
void RefreshAllBindings()
Refresh all binding button texts.
Definition
KeyBindingsMenu.cpp:316
Game::KeyBindingsMenu::_onBack
std::function< void()> _onBack
Definition
KeyBindingsMenu.hpp:119
Game::KeyBindingsMenu::_backButton
std::shared_ptr< UI::IButton > _backButton
Definition
KeyBindingsMenu.hpp:135
Game::KeyBindingsMenu::~KeyBindingsMenu
~KeyBindingsMenu() override=default
Game::KeyBindingsMenu::Mode
Mode
Display mode for the menu.
Definition
KeyBindingsMenu.hpp:33
Game::KeyBindingsMenu::Mode::OVERLAY
@ OVERLAY
Displays over the game with dimmed background.
Game::KeyBindingsMenu::Mode::FULLSCREEN
@ FULLSCREEN
Takes the whole window.
Game::KeyBindingsMenu::_mode
Mode _mode
Definition
KeyBindingsMenu.hpp:115
Game::KeyBindingsMenu::_bindingButtons
std::unordered_map< Input::GameAction, BindingButtons > _bindingButtons
Definition
KeyBindingsMenu.hpp:132
Game::KeyBindingsMenu::_isCapturing
bool _isCapturing
Definition
KeyBindingsMenu.hpp:123
Game::KeyBindingsMenu::UpdateBindingButtonText
void UpdateBindingButtonText(Input::GameAction action, bool isPrimary)
Update the display text for a binding button.
Definition
KeyBindingsMenu.cpp:298
Game::KeyBindingsMenu::SetOverlayDimColor
void SetOverlayDimColor(unsigned int color)
Definition
KeyBindingsMenu.cpp:331
Game::KeyBindingsMenu::StartKeyCapture
void StartKeyCapture(Input::GameAction action, bool isPrimary)
Start listening for a new key press to remap.
Definition
KeyBindingsMenu.cpp:263
Game::KeyBindingsMenu::SetOnBindingsChanged
void SetOnBindingsChanged(std::function< void()> callback)
Set callback for when bindings are changed.
Definition
KeyBindingsMenu.cpp:347
Game::KeyBindingsMenu::SetOnBack
void SetOnBack(std::function< void()> callback)
Set callback for when back button is pressed.
Definition
KeyBindingsMenu.cpp:343
Game::KeyBindingsMenu::_resetButton
std::shared_ptr< UI::IButton > _resetButton
Definition
KeyBindingsMenu.hpp:136
Game::KeyBindingsMenu::SetMode
void SetMode(Mode mode)
Definition
KeyBindingsMenu.cpp:323
Game::KeyBindingsMenu::ShouldDimBackground
bool ShouldDimBackground() const
Definition
KeyBindingsMenu.cpp:339
Game::KeyBindingsMenu::CancelKeyCapture
void CancelKeyCapture()
Cancel key capture mode.
Definition
KeyBindingsMenu.cpp:272
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
Input::GameAction
GameAction
Enumeration of all bindable game actions.
Definition
KeyBindings.hpp:47
Input::GameAction::MOVE_UP
@ MOVE_UP
Game::KeyBindingsMenu::BindingButtons
Definition
KeyBindingsMenu.hpp:128
Game::KeyBindingsMenu::BindingButtons::secondaryButton
std::shared_ptr< UI::IButton > secondaryButton
Definition
KeyBindingsMenu.hpp:130
Game::KeyBindingsMenu::BindingButtons::primaryButton
std::shared_ptr< UI::IButton > primaryButton
Definition
KeyBindingsMenu.hpp:129
client
Menu
KeyBindingsMenu.hpp
Generated by
1.9.8