working main menu
This commit is contained in:
62
include/client/states/ConnectingState.h
Normal file
62
include/client/states/ConnectingState.h
Normal file
@@ -0,0 +1,62 @@
|
||||
#pragma once
|
||||
|
||||
#include <Nazara/Network/IpAddress.hpp>
|
||||
#include <Nazara/Widgets/ButtonWidget.hpp>
|
||||
#include <Nazara/Widgets/LabelWidget.hpp>
|
||||
#include <client/Client.h>
|
||||
#include <client/states/AbstractState.h>
|
||||
#include <queue>
|
||||
|
||||
namespace blitz {
|
||||
|
||||
namespace server {
|
||||
class Server;
|
||||
} // namespace server
|
||||
|
||||
namespace client {
|
||||
|
||||
class ConnectingState : public AbstractState {
|
||||
public:
|
||||
ConnectingState(std::shared_ptr<StateData> a_StateData, std::shared_ptr<AbstractState> a_PreviousState,
|
||||
const std::string& a_Address, std::uint16_t a_Port, bool a_IntegratedServer = false);
|
||||
~ConnectingState();
|
||||
|
||||
private:
|
||||
struct ResolvingData {
|
||||
bool m_HasResult = false;
|
||||
Nz::Result<std::vector<Nz::IpAddress>, std::string /*error*/> m_Result = Nz::Err("");
|
||||
std::string m_ServerName;
|
||||
std::uint16_t m_Port;
|
||||
};
|
||||
|
||||
ResolvingData m_ResolvingData;
|
||||
bool m_IsConnected = false;
|
||||
std::queue<Nz::IpAddress> m_Addresses;
|
||||
Nz::MillisecondClock m_TimeoutClock;
|
||||
|
||||
Nz::ButtonWidget* m_BackButton;
|
||||
Nz::LabelWidget* m_StatusText;
|
||||
std::shared_ptr<AbstractState> m_NextState;
|
||||
std::shared_ptr<AbstractState> m_PreviousState;
|
||||
|
||||
std::unique_ptr<Client> m_Client;
|
||||
std::unique_ptr<server::Server> m_Server;
|
||||
|
||||
void LayoutWidgets() override;
|
||||
bool Update(Nz::StateMachine& fsm, Nz::Time elapsedTime) override;
|
||||
|
||||
void TryResolve();
|
||||
void TryConnect(const Nz::IpAddress& a_ServerAddress);
|
||||
void TryNextAddress();
|
||||
|
||||
void OnBackPressed();
|
||||
|
||||
void OnConnect();
|
||||
void OnConnectFailed();
|
||||
|
||||
NazaraSlot(Client, OnClientReady, m_ClientReady);
|
||||
NazaraSlot(Client, OnClientDisconnect, m_ClientDisconnect);
|
||||
};
|
||||
|
||||
} // namespace client
|
||||
} // namespace blitz
|
||||
Reference in New Issue
Block a user