/* * GlobalLobbyClient.h, part of VCMI engine * * Authors: listed in file AUTHORS in main folder * * License: GNU General Public License v2.0 or later * Full text of license available in license.txt file, in main folder * */ #pragma once #include "GlobalLobbyDefines.h" #include "../../lib/network/NetworkInterface.h" VCMI_LIB_NAMESPACE_BEGIN class JsonNode; VCMI_LIB_NAMESPACE_END class GlobalLobbyLoginWindow; class GlobalLobbyWindow; class GlobalLobbyClient final : public INetworkClientListener, boost::noncopyable { std::vector activeAccounts; std::vector activeRooms; std::shared_ptr networkConnection; std::weak_ptr loginWindow; std::weak_ptr lobbyWindow; std::shared_ptr lobbyWindowLock; // helper strong reference to prevent window destruction on closing void onPacketReceived(const std::shared_ptr &, const std::vector & message) override; void onConnectionFailed(const std::string & errorMessage) override; void onConnectionEstablished(const std::shared_ptr &) override; void onDisconnected(const std::shared_ptr &, const std::string & errorMessage) override; void receiveAccountCreated(const JsonNode & json); void receiveOperationFailed(const JsonNode & json); void receiveLoginSuccess(const JsonNode & json); void receiveChatHistory(const JsonNode & json); void receiveChatMessage(const JsonNode & json); void receiveActiveAccounts(const JsonNode & json); void receiveActiveGameRooms(const JsonNode & json); void receiveJoinRoomSuccess(const JsonNode & json); void receiveInviteReceived(const JsonNode & json); std::shared_ptr createLoginWindow(); std::shared_ptr createLobbyWindow(); public: explicit GlobalLobbyClient(); ~GlobalLobbyClient(); const std::vector & getActiveAccounts() const; const std::vector & getActiveRooms() const; /// Activate interface and pushes lobby UI as top window void activateInterface(); void sendMessage(const JsonNode & data); void sendClientRegister(const std::string & accountName); void sendClientLogin(); void sendOpenPublicRoom(); void sendOpenPrivateRoom(); void sendProxyConnectionLogin(const NetworkConnectionPtr & netConnection); void connect(); bool isConnected() const; };