R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
RoomListMenu.hpp
Go to the documentation of this file.
1
/*
2
** EPITECH PROJECT, 2025
3
** r-type
4
** File description:
5
** RoomListMenu - Menu for selecting or creating a room
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
class
RoomListMenu
:
public
BaseMenu
{
24
public
:
25
struct
RoomInfo
{
26
std::string
roomId
;
27
std::string
roomName
;
28
uint32_t
playerCount
;
29
uint32_t
maxPlayers
;
30
bool
isPrivate
;
31
uint8_t
state
;
// 0=WAITING, 1=STARTING, 2=IN_PROGRESS, 3=FINISHED
32
33
RoomInfo
(
const
std::string &
id
,
const
std::string &name, uint32_t count, uint32_t max,
bool
priv,
34
uint8_t st)
35
:
roomId
(id),
36
roomName
(name),
37
playerCount
(count),
38
maxPlayers
(max),
39
isPrivate
(priv),
40
state
(st) {}
41
};
42
43
explicit
RoomListMenu
(
UI::IUIFactory
&uiFactory,
Graphics::IGraphics
&graphics);
44
~RoomListMenu
()
override
=
default
;
45
49
void
SetOnRoomSelected
(std::function<
void
(
const
std::string &roomId)> onRoomSelected);
50
54
void
SetOnCreateRoom
(std::function<
void
()> onCreateRoom);
55
59
void
SetOnBack
(std::function<
void
()> onBack);
60
64
void
UpdateRoomList
(
const
std::vector<RoomInfo> &rooms);
65
69
void
ClearRooms
();
70
71
void
Initialize
()
override
;
72
void
Update
()
override
;
73
void
Render
()
override
;
74
78
void
Show
()
override
;
79
80
private
:
81
void
OnRoomClicked
(
size_t
index);
82
void
OnCreateRoomClicked
();
83
void
OnBackClicked
();
84
void
RebuildRoomList
();
85
86
std::function<void(
const
std::string &)>
_onRoomSelected
{};
87
std::function<void()>
_onCreateRoom
{};
88
std::function<void()>
_onBack
{};
89
90
Graphics::IGraphics
&
_graphics
;
91
92
std::vector<RoomInfo>
_rooms
;
93
std::vector<std::shared_ptr<UI::IButton>>
_roomButtons
;
94
95
std::shared_ptr<UI::IButton>
_createRoomButton
;
96
std::shared_ptr<UI::IButton>
_backButton
;
97
98
static
constexpr
float
ROOM_BUTTON_WIDTH
= 500.0f;
99
static
constexpr
float
ROOM_BUTTON_HEIGHT
= 60.0f;
100
static
constexpr
float
ROOM_BUTTON_SPACING
= 10.0f;
101
static
constexpr
float
LIST_START_Y
= 100.0f;
102
static
constexpr
size_t
MAX_VISIBLE_ROOMS
= 6;
103
};
104
}
// namespace Game
BaseMenu.hpp
IGraphics.hpp
IUIFactory.hpp
Game::BaseMenu
Base class for all menu implementations.
Definition
BaseMenu.hpp:26
Game::RoomListMenu
Room list menu for selecting and managing game rooms.
Definition
RoomListMenu.hpp:23
Game::RoomListMenu::SetOnBack
void SetOnBack(std::function< void()> onBack)
Set callback triggered when Back button is clicked.
Definition
RoomListMenu.cpp:25
Game::RoomListMenu::_createRoomButton
std::shared_ptr< UI::IButton > _createRoomButton
Definition
RoomListMenu.hpp:95
Game::RoomListMenu::_roomButtons
std::vector< std::shared_ptr< UI::IButton > > _roomButtons
Definition
RoomListMenu.hpp:93
Game::RoomListMenu::UpdateRoomList
void UpdateRoomList(const std::vector< RoomInfo > &rooms)
Update the room list.
Definition
RoomListMenu.cpp:29
Game::RoomListMenu::ROOM_BUTTON_HEIGHT
static constexpr float ROOM_BUTTON_HEIGHT
Definition
RoomListMenu.hpp:99
Game::RoomListMenu::SetOnRoomSelected
void SetOnRoomSelected(std::function< void(const std::string &roomId)> onRoomSelected)
Set callback triggered when a room is selected.
Definition
RoomListMenu.cpp:17
Game::RoomListMenu::Update
void Update() override
Update menu state (should be called every frame).
Definition
RoomListMenu.cpp:95
Game::RoomListMenu::~RoomListMenu
~RoomListMenu() override=default
Game::RoomListMenu::SetOnCreateRoom
void SetOnCreateRoom(std::function< void()> onCreateRoom)
Set callback triggered when "Create Room" button is clicked.
Definition
RoomListMenu.cpp:21
Game::RoomListMenu::_onRoomSelected
std::function< void(const std::string &)> _onRoomSelected
Definition
RoomListMenu.hpp:86
Game::RoomListMenu::Render
void Render() override
Render menu (should be called every frame).
Definition
RoomListMenu.cpp:102
Game::RoomListMenu::OnBackClicked
void OnBackClicked()
Definition
RoomListMenu.cpp:233
Game::RoomListMenu::MAX_VISIBLE_ROOMS
static constexpr size_t MAX_VISIBLE_ROOMS
Definition
RoomListMenu.hpp:102
Game::RoomListMenu::ROOM_BUTTON_SPACING
static constexpr float ROOM_BUTTON_SPACING
Definition
RoomListMenu.hpp:100
Game::RoomListMenu::_onCreateRoom
std::function< void()> _onCreateRoom
Definition
RoomListMenu.hpp:87
Game::RoomListMenu::Show
void Show() override
Show the menu and play the room menu open sound effect.
Definition
RoomListMenu.cpp:39
Game::RoomListMenu::_backButton
std::shared_ptr< UI::IButton > _backButton
Definition
RoomListMenu.hpp:96
Game::RoomListMenu::OnCreateRoomClicked
void OnCreateRoomClicked()
Definition
RoomListMenu.cpp:226
Game::RoomListMenu::ClearRooms
void ClearRooms()
Clear all rooms.
Definition
RoomListMenu.cpp:34
Game::RoomListMenu::_graphics
Graphics::IGraphics & _graphics
Definition
RoomListMenu.hpp:90
Game::RoomListMenu::_onBack
std::function< void()> _onBack
Definition
RoomListMenu.hpp:88
Game::RoomListMenu::ROOM_BUTTON_WIDTH
static constexpr float ROOM_BUTTON_WIDTH
Definition
RoomListMenu.hpp:98
Game::RoomListMenu::OnRoomClicked
void OnRoomClicked(size_t index)
Definition
RoomListMenu.cpp:212
Game::RoomListMenu::RebuildRoomList
void RebuildRoomList()
Definition
RoomListMenu.cpp:125
Game::RoomListMenu::Initialize
void Initialize() override
Initialize menu (must be implemented by derived classes).
Definition
RoomListMenu.cpp:46
Game::RoomListMenu::LIST_START_Y
static constexpr float LIST_START_Y
Definition
RoomListMenu.hpp:101
Game::RoomListMenu::_rooms
std::vector< RoomInfo > _rooms
Definition
RoomListMenu.hpp:92
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::RoomListMenu::RoomInfo
Definition
RoomListMenu.hpp:25
Game::RoomListMenu::RoomInfo::playerCount
uint32_t playerCount
Definition
RoomListMenu.hpp:28
Game::RoomListMenu::RoomInfo::RoomInfo
RoomInfo(const std::string &id, const std::string &name, uint32_t count, uint32_t max, bool priv, uint8_t st)
Definition
RoomListMenu.hpp:33
Game::RoomListMenu::RoomInfo::roomId
std::string roomId
Definition
RoomListMenu.hpp:26
Game::RoomListMenu::RoomInfo::isPrivate
bool isPrivate
Definition
RoomListMenu.hpp:30
Game::RoomListMenu::RoomInfo::maxPlayers
uint32_t maxPlayers
Definition
RoomListMenu.hpp:29
Game::RoomListMenu::RoomInfo::roomName
std::string roomName
Definition
RoomListMenu.hpp:27
Game::RoomListMenu::RoomInfo::state
uint8_t state
Definition
RoomListMenu.hpp:31
client
Menu
RoomListMenu.hpp
Generated by
1.9.8