#pragma once #include "stdafx.h" #include #include "INotificationListener.h" using std::thread; class Socket; class GameClientConnection; class ClientConnectionData; class Console; class GameClient : public INotificationListener { private: static shared_ptr _instance; shared_ptr _console; unique_ptr _clientThread; atomic _stop; shared_ptr _connection; bool _connected = false; static shared_ptr GetConnection(); void PrivateConnect(ClientConnectionData &connectionData); void Exec(); public: GameClient(shared_ptr console); virtual ~GameClient(); static bool Connected(); static void Connect(shared_ptr console, ClientConnectionData &connectionData); static void Disconnect(); static void SelectController(uint8_t port); static uint8_t GetControllerPort(); static uint8_t GetAvailableControllers(); void ProcessNotification(ConsoleNotificationType type, void* parameter) override; };