r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
gme::CreateRoomScene Class Referencefinal

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)
 
CreateRoomSceneoperator= (const CreateRoomScene &other)=delete
 Deleted copy assignment operator (non-copyable)
 
 CreateRoomScene (CreateRoomScene &&other)=delete
 Deleted move constructor (non-movable)
 
CreateRoomSceneoperator= (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
 
ASceneoperator= (const AScene &other)=delete
 
ASceneoperator= (AScene &&other)=delete
 
std::string & getName () override
 
id getId () const override
 
ecs::RegistrygetRegistry () 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::EventBusm_eventBus = utl::EventBus::getInstance()
 
std::uint32_t m_eventComponentId = 0
 

Detailed Description

Scene for creating and configuring new multiplayer lobbies.

This scene provides an interface for players to:

  • Enter a custom lobby/room name
  • Set maximum player count (2-8 players)
  • Create the lobby on the server
  • Navigate back to multiplayer menu

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.

Constructor & Destructor Documentation

◆ CreateRoomScene() [1/3]

gme::CreateRoomScene::CreateRoomScene ( eng::id assignedId,
const std::shared_ptr< eng::IRenderer > & renderer )

◆ ~CreateRoomScene()

gme::CreateRoomScene::~CreateRoomScene ( )
overridedefault

Destructor.

◆ CreateRoomScene() [2/3]

gme::CreateRoomScene::CreateRoomScene ( const CreateRoomScene & other)
delete

Deleted copy constructor (non-copyable)

◆ CreateRoomScene() [3/3]

gme::CreateRoomScene::CreateRoomScene ( CreateRoomScene && other)
delete

Deleted move constructor (non-movable)

Member Function Documentation

◆ createRoom()

void gme::CreateRoomScene::createRoom ( ) const
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:

◆ event()

void gme::CreateRoomScene::event ( const eng::Event & event)
overridevirtual

Handle input events.

Parameters
eventInput 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:

◆ operator=() [1/2]

CreateRoomScene & gme::CreateRoomScene::operator= ( const CreateRoomScene & other)
delete

Deleted copy assignment operator (non-copyable)

◆ operator=() [2/2]

CreateRoomScene & gme::CreateRoomScene::operator= ( CreateRoomScene && other)
delete

Deleted move assignment operator (non-movable)

◆ playMusic()

bool & gme::CreateRoomScene::playMusic ( )
inline

Get reference to music playback flag.

Returns
Reference to music play state

Definition at line 95 of file CreateRoom.hpp.

References m_playMusic.

◆ processEventBus()

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:

◆ update()

void gme::CreateRoomScene::update ( float dt,
const eng::WindowSize & size )
overridevirtual

Update the scene (called each frame)

Parameters
dtDelta time since last frame (in seconds)
sizeCurrent 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.

◆ updateValueDisplay()

void gme::CreateRoomScene::updateValueDisplay ( )
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.

Member Data Documentation

◆ m_animationTime

float gme::CreateRoomScene::m_animationTime = 0.0f
private

Animation timer for visual effects.

Menu options displayed to the player

Definition at line 116 of file CreateRoom.hpp.

◆ m_maxPlayers

int gme::CreateRoomScene::m_maxPlayers = 4
private

Maximum players setting (default: 4)

Definition at line 123 of file CreateRoom.hpp.

Referenced by CreateRoomScene().

◆ m_maxPlayersValueEntity

ecs::Entity gme::CreateRoomScene::m_maxPlayersValueEntity = 0
private

Text entity displaying max players.

Definition at line 127 of file CreateRoom.hpp.

Referenced by CreateRoomScene().

◆ m_options

const std::vector<std::string> gme::CreateRoomScene::m_options = {"Room Name", "Max Players", "Create", "Back"}
private

Definition at line 119 of file CreateRoom.hpp.

Referenced by CreateRoomScene().

◆ m_playMusic

bool gme::CreateRoomScene::m_playMusic = false
private

Music playback state flag.

Definition at line 121 of file CreateRoom.hpp.

Referenced by playMusic().

◆ m_roomName

std::string gme::CreateRoomScene::m_roomName = "My Room"
private

Current room name input (default: "My Room")

Definition at line 122 of file CreateRoom.hpp.

Referenced by CreateRoomScene().

◆ m_roomNameValueEntity

ecs::Entity gme::CreateRoomScene::m_roomNameValueEntity = 0
private

Text entity displaying room name.

Definition at line 126 of file CreateRoom.hpp.

Referenced by CreateRoomScene().

◆ m_selectedIndex

size_t gme::CreateRoomScene::m_selectedIndex = 0
private

Currently selected menu option index.

Definition at line 115 of file CreateRoom.hpp.

◆ m_titleEntity

ecs::Entity gme::CreateRoomScene::m_titleEntity = 0
private

Title text entity.

Definition at line 125 of file CreateRoom.hpp.

Referenced by CreateRoomScene().

◆ onBackToMulti

std::function<void()> gme::CreateRoomScene::onBackToMulti

Callback invoked when player navigates back to multiplayer menu.

Definition at line 106 of file CreateRoom.hpp.

◆ onCreate

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.

◆ onRoomCreated

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.


The documentation for this class was generated from the following files: