R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
WaitingRoomMenu.hpp
Go to the documentation of this file.
1
/*
2
** EPITECH PROJECT, 2025
3
** r-type
4
** File description:
5
** WaitingRoomMenu - Menu for waiting before game starts
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 "
Menu/BaseMenu.hpp
"
17
#include "
UI/IUIFactory.hpp
"
18
19
namespace
Game
{
23
struct
PlayerInfo
{
24
uint32_t
playerId
;
25
std::string
playerName
;
26
bool
isHost
;
27
bool
isSpectator
;
28
29
PlayerInfo
(uint32_t
id
,
const
std::string &name,
bool
host,
bool
spectator)
30
:
playerId
(id),
playerName
(name),
isHost
(host),
isSpectator
(spectator) {}
31
};
32
36
class
WaitingRoomMenu
:
public
BaseMenu
{
37
public
:
38
explicit
WaitingRoomMenu
(
UI::IUIFactory
&uiFactory,
Graphics::IGraphics
&graphics);
39
~WaitingRoomMenu
()
override
=
default
;
40
44
void
SetOnStartGame
(std::function<
void
()> onStartGame);
45
49
void
SetOnBack
(std::function<
void
()> onBack);
50
54
void
UpdatePlayerList
(
const
std::vector<PlayerInfo> &players);
55
59
void
SetRoomInfo
(
const
std::string &roomName, uint32_t currentPlayers, uint32_t maxPlayers);
60
64
void
SetIsHost
(
bool
isHost);
65
69
void
SetIsSpectator
(
bool
isSpectator);
70
71
void
Initialize
()
override
;
72
void
Update
()
override
;
73
void
Render
()
override
;
74
75
private
:
76
void
OnStartGameClicked
();
77
void
OnBackClicked
();
78
void
RebuildPlayerList
();
79
80
std::function<void()>
_onStartGame
{};
81
std::function<void()>
_onBack
{};
82
83
Graphics::IGraphics
&
_graphics
;
84
85
std::string
_roomName
;
86
uint32_t
_currentPlayers
= 0;
87
uint32_t
_maxPlayers
= 4;
88
bool
_isHost
=
false
;
89
bool
_isSpectator
=
false
;
// True if player is in spectator mode
90
91
std::vector<PlayerInfo>
_players
;
92
std::shared_ptr<UI::IButton>
_startGameButton
;
93
std::shared_ptr<UI::IButton>
_backButton
;
94
95
static
constexpr
float
PLAYER_ITEM_HEIGHT
= 50.0f;
96
static
constexpr
float
PLAYER_ITEM_SPACING
= 10.0f;
97
static
constexpr
float
LIST_START_Y
= 150.0f;
98
static
constexpr
size_t
MAX_VISIBLE_PLAYERS
= 8;
99
};
100
}
// namespace Game
BaseMenu.hpp
IGraphics.hpp
IUIFactory.hpp
Game::BaseMenu
Base class for all menu implementations.
Definition
BaseMenu.hpp:26
Game::WaitingRoomMenu
Menu displayed while waiting for game to start.
Definition
WaitingRoomMenu.hpp:36
Game::WaitingRoomMenu::~WaitingRoomMenu
~WaitingRoomMenu() override=default
Game::WaitingRoomMenu::OnBackClicked
void OnBackClicked()
Definition
WaitingRoomMenu.cpp:183
Game::WaitingRoomMenu::_startGameButton
std::shared_ptr< UI::IButton > _startGameButton
Definition
WaitingRoomMenu.hpp:92
Game::WaitingRoomMenu::Update
void Update() override
Update menu state (should be called every frame).
Definition
WaitingRoomMenu.cpp:95
Game::WaitingRoomMenu::_isHost
bool _isHost
Definition
WaitingRoomMenu.hpp:88
Game::WaitingRoomMenu::_isSpectator
bool _isSpectator
Definition
WaitingRoomMenu.hpp:89
Game::WaitingRoomMenu::SetOnStartGame
void SetOnStartGame(std::function< void()> onStartGame)
Set callback triggered when Start Game button is clicked (host only)
Definition
WaitingRoomMenu.cpp:17
Game::WaitingRoomMenu::_onStartGame
std::function< void()> _onStartGame
Definition
WaitingRoomMenu.hpp:80
Game::WaitingRoomMenu::_graphics
Graphics::IGraphics & _graphics
Definition
WaitingRoomMenu.hpp:83
Game::WaitingRoomMenu::PLAYER_ITEM_HEIGHT
static constexpr float PLAYER_ITEM_HEIGHT
Definition
WaitingRoomMenu.hpp:95
Game::WaitingRoomMenu::Render
void Render() override
Render menu (should be called every frame).
Definition
WaitingRoomMenu.cpp:102
Game::WaitingRoomMenu::SetRoomInfo
void SetRoomInfo(const std::string &roomName, uint32_t currentPlayers, uint32_t maxPlayers)
Set room name and player count info.
Definition
WaitingRoomMenu.cpp:30
Game::WaitingRoomMenu::_backButton
std::shared_ptr< UI::IButton > _backButton
Definition
WaitingRoomMenu.hpp:93
Game::WaitingRoomMenu::_maxPlayers
uint32_t _maxPlayers
Definition
WaitingRoomMenu.hpp:87
Game::WaitingRoomMenu::LIST_START_Y
static constexpr float LIST_START_Y
Definition
WaitingRoomMenu.hpp:97
Game::WaitingRoomMenu::_roomName
std::string _roomName
Definition
WaitingRoomMenu.hpp:85
Game::WaitingRoomMenu::UpdatePlayerList
void UpdatePlayerList(const std::vector< PlayerInfo > &players)
Update the player list.
Definition
WaitingRoomMenu.cpp:25
Game::WaitingRoomMenu::_currentPlayers
uint32_t _currentPlayers
Definition
WaitingRoomMenu.hpp:86
Game::WaitingRoomMenu::SetOnBack
void SetOnBack(std::function< void()> onBack)
Set callback triggered when Back button is clicked.
Definition
WaitingRoomMenu.cpp:21
Game::WaitingRoomMenu::_players
std::vector< PlayerInfo > _players
Definition
WaitingRoomMenu.hpp:91
Game::WaitingRoomMenu::SetIsSpectator
void SetIsSpectator(bool isSpectator)
Set whether current player is spectator (shows spectator banner)
Definition
WaitingRoomMenu.cpp:43
Game::WaitingRoomMenu::OnStartGameClicked
void OnStartGameClicked()
Definition
WaitingRoomMenu.cpp:176
Game::WaitingRoomMenu::RebuildPlayerList
void RebuildPlayerList()
Definition
WaitingRoomMenu.cpp:165
Game::WaitingRoomMenu::_onBack
std::function< void()> _onBack
Definition
WaitingRoomMenu.hpp:81
Game::WaitingRoomMenu::Initialize
void Initialize() override
Initialize menu (must be implemented by derived classes).
Definition
WaitingRoomMenu.cpp:47
Game::WaitingRoomMenu::SetIsHost
void SetIsHost(bool isHost)
Set whether current player is host (enables Start Game button)
Definition
WaitingRoomMenu.cpp:37
Game::WaitingRoomMenu::PLAYER_ITEM_SPACING
static constexpr float PLAYER_ITEM_SPACING
Definition
WaitingRoomMenu.hpp:96
Game::WaitingRoomMenu::MAX_VISIBLE_PLAYERS
static constexpr size_t MAX_VISIBLE_PLAYERS
Definition
WaitingRoomMenu.hpp:98
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
Game::PlayerInfo
Player information in waiting room.
Definition
WaitingRoomMenu.hpp:23
Game::PlayerInfo::isSpectator
bool isSpectator
Definition
WaitingRoomMenu.hpp:27
Game::PlayerInfo::playerId
uint32_t playerId
Definition
WaitingRoomMenu.hpp:24
Game::PlayerInfo::isHost
bool isHost
Definition
WaitingRoomMenu.hpp:26
Game::PlayerInfo::playerName
std::string playerName
Definition
WaitingRoomMenu.hpp:25
Game::PlayerInfo::PlayerInfo
PlayerInfo(uint32_t id, const std::string &name, bool host, bool spectator)
Definition
WaitingRoomMenu.hpp:29
client
Menu
WaitingRoomMenu.hpp
Generated by
1.9.8