From fd80330a6103216dec27be26ba0013f78e97f772 Mon Sep 17 00:00:00 2001 From: Souryo Date: Sun, 6 Jul 2014 20:40:33 -0400 Subject: [PATCH] Added missing file --- Core/GameClientConnection.h | 64 +++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Core/GameClientConnection.h diff --git a/Core/GameClientConnection.h b/Core/GameClientConnection.h new file mode 100644 index 00000000..3bf7812a --- /dev/null +++ b/Core/GameClientConnection.h @@ -0,0 +1,64 @@ +#pragma once +#include "stdafx.h" +#include "GameConnection.h" +#include "VirtualController.h" + +class GameClientConnection : public GameConnection +{ +private: + vector> _virtualControllers; + IControlDevice* _controlDevice; + +private: + void SendHandshake() + { + SendNetMessage(HandShakeMessage()); + } + +protected: + void ProcessMessage(NetMessage* message) + { + switch(message->Type) { + case MessageType::SaveState: + Console::Pause(); + + ((SaveStateMessage*)message)->LoadState(); + + _virtualControllers.clear(); + for(int i = 0; i < 4; i++) { + _virtualControllers.push_back(unique_ptr(new VirtualController(i))); + } + + Console::Resume(); + break; + case MessageType::MovieData: + uint8_t port = ((MovieDataMessage*)message)->PortNumber; + uint8_t state = ((MovieDataMessage*)message)->InputState; + + _virtualControllers[port]->PushState(state); + break; + } + } + +public: + GameClientConnection(shared_ptr socket) : GameConnection(socket) + { + _controlDevice = ControlManager::GetControlDevice(0); + ControlManager::BackupControlDevices(); + + Console::DisplayMessage(L"Connected to server."); + + SendHandshake(); + } + + ~GameClientConnection() + { + ControlManager::RestoreControlDevices(); + Console::DisplayMessage(L"Connection to server lost."); + } + + void SendInput() + { + SendNetMessage(InputDataMessage(_controlDevice->GetButtonState().ToByte())); + } +}; \ No newline at end of file