Scene for creating and configuring new multiplayer lobbies. More...
#include <CreateRoom.hpp>
Inheritance diagram for gme::CreateRoomScene:
Collaboration diagram for gme::CreateRoomScene:Public Member Functions | |
| CreateRoomScene (eng::id assignedId, const std::shared_ptr< eng::IRenderer > &renderer) | |
| Constructor. | |
| ~CreateRoomScene () override=default | |
| Destructor. | |
| CreateRoomScene (const CreateRoomScene &other)=delete | |
| Deleted copy constructor (non-copyable) | |
| CreateRoomScene & | operator= (const CreateRoomScene &other)=delete |
| Deleted copy assignment operator (non-copyable) | |
| CreateRoomScene (CreateRoomScene &&other)=delete | |
| Deleted move constructor (non-movable) | |
| CreateRoomScene & | operator= (CreateRoomScene &&other)=delete |
| Deleted move assignment operator (non-movable) | |
| void | update (float dt, const eng::WindowSize &size) override |
| Update the scene (called each frame) | |
| void | event (const eng::Event &event) override |
| Handle input events. | |
| void | processEventBus () const |
| Process events from the event bus. | |
| bool & | playMusic () |
| Get reference to music playback flag. | |
Public Member Functions inherited from eng::AScene | |
| AScene (const id assignedId) | |
| ~AScene () override=default | |
| AScene (const AScene &other)=delete | |
| AScene (AScene &&other)=delete | |
| AScene & | operator= (const AScene &other)=delete |
| AScene & | operator= (AScene &&other)=delete |
| std::string & | getName () override |
| id | getId () const override |
| ecs::Registry & | getRegistry () override |
| void | setName (const std::string &newName) override |
| void | addSystem (std::unique_ptr< ecs::ISystem > system) override |
| void | updateSystems (const float dt) override |
Public Member Functions inherited from eng::IScene | |
| virtual | ~IScene ()=default |
Public Attributes | |
| std::function< void(const std::string &roomName, int maxPlayers)> | onCreate |
| Callback invoked when player creates a room. | |
| std::function< void()> | onBackToMulti |
| Callback invoked when player navigates back to multiplayer menu. | |
| std::function< void(int lobbyId, const rnp::LobbyInfo *lobbyInfo)> | onRoomCreated |
| Callback invoked when room is successfully created on server. | |
Private Member Functions | |
| void | updateValueDisplay () |
| Update the visual display of configuration values. | |
| void | createRoom () const |
| Send lobby creation request to server. | |
Private Attributes | |
| size_t | m_selectedIndex = 0 |
| Currently selected menu option index. | |
| float | m_animationTime = 0.0f |
| Animation timer for visual effects. | |
| const std::vector< std::string > | m_options = {"Room Name", "Max Players", "Create", "Back"} |
| bool | m_playMusic = false |
| Music playback state flag. | |
| std::string | m_roomName = "My Room" |
| Current room name input (default: "My Room") | |
| int | m_maxPlayers = 4 |
| Maximum players setting (default: 4) | |
| ecs::Entity | m_titleEntity = 0 |
| Title text entity. | |
| ecs::Entity | m_roomNameValueEntity = 0 |
| Text entity displaying room name. | |
| ecs::Entity | m_maxPlayersValueEntity = 0 |
| Text entity displaying max players. | |
Additional Inherited Members | |
Protected Attributes inherited from eng::AScene | |
| utl::EventBus & | m_eventBus = utl::EventBus::getInstance() |
| std::uint32_t | m_eventComponentId = 0 |
Scene for creating and configuring new multiplayer lobbies.
This scene provides an interface for players to:
The scene uses a menu-based navigation system with keyboard input and provides visual feedback for the selected option. Upon successful lobby creation, the scene transitions to the waiting room.
Definition at line 34 of file CreateRoom.hpp.
| gme::CreateRoomScene::CreateRoomScene | ( | eng::id | assignedId, |
| const std::shared_ptr< eng::IRenderer > & | renderer ) |
Constructor.
| assignedId | Unique scene identifier |
| renderer | Shared pointer to the rendering interface |
Initializes the create room UI with default values
Definition at line 98 of file createRoom.cpp.
References eng::Color::a, eng::Color::b, utl::Config::Color::CYAN_ELECTRIC, utl::Path::Font::FONTS_RTYPE, eng::Color::g, utl::Config::Color::GRAY_BLUE_SUBTLE, ecs::IComponent::id, utl::LOBBY_CREATE_RESPONSE, eng::AScene::m_eventBus, eng::AScene::m_eventComponentId, m_maxPlayers, m_maxPlayersValueEntity, m_options, m_roomName, m_roomNameValueEntity, m_titleEntity, eng::Color::r, utl::EventBus::registerComponent(), utl::EventBus::subscribe(), and utl::Config::Color::TEXT_VALUE_COLOR.
Here is the call graph for this function:
|
overridedefault |
Destructor.
|
delete |
Deleted copy constructor (non-copyable)
|
delete |
Deleted move constructor (non-movable)
|
private |
Send lobby creation request to server.
Validates inputs and triggers the onCreate callback
Definition at line 310 of file createRoom.cpp.
References utl::INFO, utl::LOBBY_CREATE, utl::Logger::log(), rnp::PacketLobbyCreate::maxPlayers, and utl::NETWORK_CLIENT.
Here is the call graph for this function:
|
overridevirtual |
Handle input events.
| event | Input event (keyboard, mouse) |
Processes user input for menu navigation and value modification
Implements eng::IScene.
Definition at line 210 of file createRoom.cpp.
References eng::Delete, eng::Down, eng::Enter, eng::Escape, eng::Event::key, eng::KeyPressed, eng::KeyReleased, keyToChar(), eng::Left, eng::Right, eng::Event::type, and eng::Up.
Here is the call graph for this function:
|
delete |
Deleted copy assignment operator (non-copyable)
|
delete |
Deleted move assignment operator (non-movable)
|
inline |
Get reference to music playback flag.
Definition at line 95 of file CreateRoom.hpp.
References m_playMusic.
| void gme::CreateRoomScene::processEventBus | ( | ) | const |
Process events from the event bus.
Handles lobby creation responses from the network layer
Definition at line 332 of file createRoom.cpp.
References rnp::Serializer::deserializeLobbyCreateResponse(), utl::INFO, utl::LOBBY_CREATE_RESPONSE, utl::Logger::log(), and utl::WARNING.
Here is the call graph for this function:
|
overridevirtual |
Update the scene (called each frame)
| dt | Delta time since last frame (in seconds) |
| size | Current window dimensions |
Updates animations and UI state
Implements eng::IScene.
Definition at line 173 of file createRoom.cpp.
References eng::Color::b, eng::Color::g, utl::Config::Color::GRAY_BLUE_SUBTLE, and eng::Color::r.
|
private |
Update the visual display of configuration values.
Refreshes text entities to reflect current room name and max players
Definition at line 295 of file createRoom.cpp.
|
private |
Animation timer for visual effects.
Menu options displayed to the player
Definition at line 116 of file CreateRoom.hpp.
|
private |
Maximum players setting (default: 4)
Definition at line 123 of file CreateRoom.hpp.
Referenced by CreateRoomScene().
|
private |
Text entity displaying max players.
Definition at line 127 of file CreateRoom.hpp.
Referenced by CreateRoomScene().
|
private |
Definition at line 119 of file CreateRoom.hpp.
Referenced by CreateRoomScene().
|
private |
Music playback state flag.
Definition at line 121 of file CreateRoom.hpp.
Referenced by playMusic().
|
private |
Current room name input (default: "My Room")
Definition at line 122 of file CreateRoom.hpp.
Referenced by CreateRoomScene().
|
private |
Text entity displaying room name.
Definition at line 126 of file CreateRoom.hpp.
Referenced by CreateRoomScene().
|
private |
Currently selected menu option index.
Definition at line 115 of file CreateRoom.hpp.
|
private |
| std::function<void()> gme::CreateRoomScene::onBackToMulti |
Callback invoked when player navigates back to multiplayer menu.
Definition at line 106 of file CreateRoom.hpp.
| std::function<void(const std::string &roomName, int maxPlayers)> gme::CreateRoomScene::onCreate |
Callback invoked when player creates a room.
Function signature: (roomName, maxPlayers) -> void
Definition at line 101 of file CreateRoom.hpp.
| std::function<void(int lobbyId, const rnp::LobbyInfo *lobbyInfo)> gme::CreateRoomScene::onRoomCreated |
Callback invoked when room is successfully created on server.
Function signature: (lobbyId, lobbyInfo*) -> void
Definition at line 112 of file CreateRoom.hpp.