|
R-Type
Distributed multiplayer game engine in C++
|
Server list menu for selecting and managing servers. More...
#include <ServerListMenu.hpp>


Classes | |
| struct | ServerInfo |
Public Member Functions | |
| ServerListMenu (UI::IUIFactory &uiFactory, Graphics::IGraphics &graphics) | |
| ~ServerListMenu () override=default | |
| void | SetOnServerSelected (std::function< void(const std::string &, uint16_t)> onServerSelected) |
| Set callback triggered when a server is selected. | |
| void | SetOnAddServer (std::function< void()> onAddServer) |
| Set callback triggered when "Add Server" button is clicked. | |
| void | SetOnBack (std::function< void()> onBack) |
| Set callback triggered when the Back button is clicked. | |
| void | AddServer (const std::string &name, const std::string &ip, uint16_t port) |
| Add a server to the list. | |
| void | RemoveServer (size_t index) |
| Remove a server from the list. | |
| const std::vector< ServerInfo > & | GetServers () const |
| Get the list of servers. | |
| void | SetConnectionError (const std::string &errorMsg) |
| Set connection error message. | |
| void | ClearConnectionError () |
| Clear connection error message. | |
| void | SetConnecting (bool connecting, const std::string &serverName="") |
| Set connecting state. | |
| void | Initialize () override |
| Initialize menu (must be implemented by derived classes). | |
| void | Update () override |
| Update menu state (should be called every frame). | |
| void | Render () override |
| Render menu (should be called every frame). | |
Public Member Functions inherited from Game::BaseMenu | |
| BaseMenu (UI::IUIFactory &uiFactory) | |
| Constructor with UI factory reference. | |
| virtual | ~BaseMenu ()=default |
| Virtual destructor. | |
| virtual void | Show () |
| Show the menu. | |
| virtual void | Hide () |
| Hide the menu. | |
| virtual bool | IsVisible () const |
| Check if menu is currently visible. | |
| void | SetSoundEffectService (Audio::ISoundEffectService *soundService) |
| Set the sound effect service for playing UI sounds. | |
Private Member Functions | |
| void | OnServerClicked (size_t index) |
| void | OnAddServerClicked () |
| void | OnBackClicked () |
| void | OnDeleteServerClicked (size_t index) |
| void | RebuildServerList () |
| void | UpdateAddServerButtonState () |
Private Attributes | |
| std::function< void(const std::string &, uint16_t)> | _onServerSelected {} |
| std::function< void()> | _onAddServer {} |
| std::function< void()> | _onBack {} |
| Graphics::IGraphics & | _graphics |
| std::vector< ServerInfo > | _servers |
| std::vector< std::shared_ptr< UI::IButton > > | _serverButtons |
| std::vector< std::shared_ptr< UI::IButton > > | _deleteButtons |
| std::shared_ptr< UI::IButton > | _addServerButton |
| std::shared_ptr< UI::IButton > | _backButton |
| std::string | _connectionError |
| bool | _hasConnectionError {false} |
| bool | _isConnecting {false} |
| std::string | _connectingServerName |
Static Private Attributes | |
| static constexpr size_t | MAX_SERVERS = 5 |
| static constexpr float | SERVER_BUTTON_WIDTH = 400.0f |
| static constexpr float | SERVER_BUTTON_HEIGHT = 50.0f |
| static constexpr float | SERVER_BUTTON_SPACING = 15.0f |
| static constexpr float | LIST_START_Y = 100.0f |
| static constexpr int | MAX_VISIBLE_SERVERS = 8 |
Additional Inherited Members | |
Protected Member Functions inherited from Game::BaseMenu | |
| std::function< void()> | WrapWithClickSound (std::function< void()> callback) |
| Wrap a callback to play click sound before executing. | |
| std::shared_ptr< UI::IButton > | CreateCenteredButton (const char *label, float offsetY, float width, float height, unsigned int backgroundColor, unsigned int hoverColor, std::function< void()> callback) |
| Create a button with standard styling and positioning. | |
Protected Attributes inherited from Game::BaseMenu | |
| UI::IUIFactory & | _uiFactory |
| std::shared_ptr< UI::IMenu > | _menu |
| Audio::ISoundEffectService * | _soundService {nullptr} |
Server list menu for selecting and managing servers.
This menu displays a list of saved servers and allows:
Definition at line 28 of file ServerListMenu.hpp.
|
explicit |
Definition at line 14 of file ServerListMenu.cpp.
References _servers.
|
overridedefault |
| void Game::ServerListMenu::AddServer | ( | const std::string & | name, |
| const std::string & | ip, | ||
| uint16_t | port | ||
| ) |
Add a server to the list.
Definition at line 33 of file ServerListMenu.cpp.
References _servers, LOG_WARNING, MAX_SERVERS, RebuildServerList(), and UpdateAddServerButtonState().

| void Game::ServerListMenu::ClearConnectionError | ( | ) |
Clear connection error message.
Definition at line 287 of file ServerListMenu.cpp.
References _connectionError, and _hasConnectionError.
Referenced by OnServerClicked(), and SetConnecting().
|
inline |
|
overridevirtual |
Initialize menu (must be implemented by derived classes).
Implements Game::BaseMenu.
Definition at line 57 of file ServerListMenu.cpp.
References _addServerButton, _backButton, _graphics, Game::BaseMenu::_menu, _serverButtons, Game::BaseMenu::_uiFactory, UI::CENTER_HORIZONTAL, UI::IUIFactory::CreateButton(), Graphics::IGraphics::GetScreenHeight(), OnAddServerClicked(), OnBackClicked(), RebuildServerList(), UpdateAddServerButtonState(), and Game::BaseMenu::WrapWithClickSound().

|
private |
Definition at line 243 of file ServerListMenu.cpp.
References _onAddServer, and LOG_INFO.
Referenced by Initialize(), and UpdateAddServerButtonState().
|
private |
Definition at line 250 of file ServerListMenu.cpp.
References _onBack, and LOG_INFO.
Referenced by Initialize().
|
private |
Definition at line 257 of file ServerListMenu.cpp.
References LOG_INFO, and RemoveServer().
Referenced by RebuildServerList().

|
private |
Definition at line 226 of file ServerListMenu.cpp.
References _onServerSelected, _servers, ClearConnectionError(), LOG_ERROR, and LOG_INFO.
Referenced by RebuildServerList().

|
private |
Definition at line 108 of file ServerListMenu.cpp.
References _addServerButton, _backButton, _deleteButtons, Game::BaseMenu::_menu, _serverButtons, _servers, Game::BaseMenu::_uiFactory, UI::CENTER_HORIZONTAL, UI::IUIFactory::CreateButton(), LIST_START_Y, MAX_VISIBLE_SERVERS, OnDeleteServerClicked(), OnServerClicked(), SERVER_BUTTON_HEIGHT, SERVER_BUTTON_SPACING, SERVER_BUTTON_WIDTH, and Game::BaseMenu::WrapWithClickSound().
Referenced by AddServer(), Initialize(), and RemoveServer().

| void Game::ServerListMenu::RemoveServer | ( | size_t | index | ) |
Remove a server from the list.
| index | Index of the server to remove |
Definition at line 43 of file ServerListMenu.cpp.
References _servers, LOG_ERROR, LOG_INFO, RebuildServerList(), and UpdateAddServerButtonState().
Referenced by OnDeleteServerClicked().

|
overridevirtual |
Render menu (should be called every frame).
Reimplemented from Game::BaseMenu.
Definition at line 191 of file ServerListMenu.cpp.
References _connectingServerName, _connectionError, _graphics, _hasConnectionError, _isConnecting, Game::BaseMenu::_menu, Graphics::IGraphics::DrawText(), Graphics::IGraphics::GetScreenWidth(), and Game::BaseMenu::Render().

| void Game::ServerListMenu::SetConnecting | ( | bool | connecting, |
| const std::string & | serverName = "" |
||
| ) |
Set connecting state.
| connecting | True if currently connecting |
| serverName | Name of server being connected to |
Definition at line 292 of file ServerListMenu.cpp.
References _connectingServerName, _isConnecting, and ClearConnectionError().

| void Game::ServerListMenu::SetConnectionError | ( | const std::string & | errorMsg | ) |
Set connection error message.
| errorMsg | Error message to display |
Definition at line 281 of file ServerListMenu.cpp.
References _connectionError, _hasConnectionError, and LOG_ERROR.
| void Game::ServerListMenu::SetOnAddServer | ( | std::function< void()> | onAddServer | ) |
Set callback triggered when "Add Server" button is clicked.
Definition at line 25 of file ServerListMenu.cpp.
References _onAddServer.
| void Game::ServerListMenu::SetOnBack | ( | std::function< void()> | onBack | ) |
Set callback triggered when the Back button is clicked.
Definition at line 29 of file ServerListMenu.cpp.
References _onBack.
| void Game::ServerListMenu::SetOnServerSelected | ( | std::function< void(const std::string &, uint16_t)> | onServerSelected | ) |
Set callback triggered when a server is selected.
| onServerSelected | Callback receiving (ip, port) as parameters |
Definition at line 20 of file ServerListMenu.cpp.
References _onServerSelected.
|
overridevirtual |
Update menu state (should be called every frame).
Reimplemented from Game::BaseMenu.
Definition at line 187 of file ServerListMenu.cpp.
References Game::BaseMenu::Update().

|
private |
Definition at line 262 of file ServerListMenu.cpp.
References _addServerButton, _servers, LOG_WARNING, MAX_SERVERS, OnAddServerClicked(), and Game::BaseMenu::WrapWithClickSound().
Referenced by AddServer(), Initialize(), and RemoveServer().

|
private |
Definition at line 116 of file ServerListMenu.hpp.
Referenced by Initialize(), RebuildServerList(), and UpdateAddServerButtonState().
|
private |
Definition at line 117 of file ServerListMenu.hpp.
Referenced by Initialize(), and RebuildServerList().
|
private |
Definition at line 123 of file ServerListMenu.hpp.
Referenced by Render(), and SetConnecting().
|
private |
Definition at line 119 of file ServerListMenu.hpp.
Referenced by ClearConnectionError(), Render(), and SetConnectionError().
|
private |
Definition at line 114 of file ServerListMenu.hpp.
Referenced by RebuildServerList().
|
private |
Definition at line 110 of file ServerListMenu.hpp.
Referenced by Initialize(), and Render().
|
private |
Definition at line 120 of file ServerListMenu.hpp.
Referenced by ClearConnectionError(), Render(), and SetConnectionError().
|
private |
Definition at line 122 of file ServerListMenu.hpp.
Referenced by Render(), and SetConnecting().
|
private |
Definition at line 107 of file ServerListMenu.hpp.
Referenced by OnAddServerClicked(), and SetOnAddServer().
|
private |
Definition at line 108 of file ServerListMenu.hpp.
Referenced by OnBackClicked(), and SetOnBack().
|
private |
Definition at line 106 of file ServerListMenu.hpp.
Referenced by OnServerClicked(), and SetOnServerSelected().
|
private |
Definition at line 113 of file ServerListMenu.hpp.
Referenced by Initialize(), and RebuildServerList().
|
private |
Definition at line 112 of file ServerListMenu.hpp.
Referenced by AddServer(), GetServers(), OnServerClicked(), RebuildServerList(), RemoveServer(), ServerListMenu(), and UpdateAddServerButtonState().
|
staticconstexprprivate |
Definition at line 129 of file ServerListMenu.hpp.
Referenced by RebuildServerList().
|
staticconstexprprivate |
Definition at line 125 of file ServerListMenu.hpp.
Referenced by AddServer(), and UpdateAddServerButtonState().
|
staticconstexprprivate |
Definition at line 130 of file ServerListMenu.hpp.
Referenced by RebuildServerList().
|
staticconstexprprivate |
Definition at line 127 of file ServerListMenu.hpp.
Referenced by RebuildServerList().
|
staticconstexprprivate |
Definition at line 128 of file ServerListMenu.hpp.
Referenced by RebuildServerList().
|
staticconstexprprivate |
Definition at line 126 of file ServerListMenu.hpp.
Referenced by RebuildServerList().