From 32e64c0dbbeae9717d4a1538da19cd9d3438c9a3 Mon Sep 17 00:00:00 2001 From: lindaandersson Date: Tue, 14 Jan 2014 10:25:49 +0100 Subject: [PATCH] GL - moved reciever struct to a separate file --- Code/Game/DanBiasGame/DanBiasGame.vcxproj | 1 + Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 105 +--------------- .../Game/DanBiasGame/GameClientRecieverFunc.h | 113 ++++++++++++++++++ .../HLSL/Deffered Shaders/PostPass.hlsl | 4 +- 4 files changed, 119 insertions(+), 104 deletions(-) create mode 100644 Code/Game/DanBiasGame/GameClientRecieverFunc.h diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index 740f9a51..0e856428 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -204,6 +204,7 @@ + diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index cd3783ff..6bd3f865 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -12,112 +12,13 @@ #include "L_inputClass.h" #include "WinTimer.h" #include "vld.h" +#include "GameClientRecieverFunc.h" namespace DanBias { #pragma region Game Data - - struct MyRecieverObject :public Oyster::Network::ProtocolRecieverObject - { - Oyster::Network::NetworkClient* nwClient; - Client::GameClientState* gameClientState; - - - void NetworkCallback(Oyster::Network::CustomNetProtocol& p) override - { - int pType = p[0].value.netInt; - switch (pType) - { - case protocol_General_Status: - { - GameLogic::Protocol_General_Status::States state; - state = (GameLogic::Protocol_General_Status::States)p[1].value.netShort; - - } - break; - case protocol_Gameplay_PlayerNavigation: - { - Client::GameClientState::KeyInput* protocolData = new Client::GameClientState::KeyInput; - for(int i = 0; i< 6; i++) - { - protocolData->key[i] = p[i+1].value.netBool; - } - - if(dynamic_cast(gameClientState)) - ((Client::GameState*)gameClientState)->Protocol(protocolData); - delete protocolData; - protocolData = NULL; - } - break; - case protocol_Gameplay_PlayerPosition: - { - Client::GameClientState::PlayerPos* protocolData = new Client::GameClientState::PlayerPos; - for(int i = 0; i< 3; i++) - { - protocolData->playerPos[i] = p[i].value.netFloat; - } - if(dynamic_cast(gameClientState)) - ((Client::GameState*)gameClientState)->Protocol(protocolData); - delete protocolData; - protocolData = NULL; - } - break; - - case protocol_Gameplay_CreateObject: - { - - Client::GameClientState::NewObj* protocolData = new Client::GameClientState::NewObj; - protocolData->object_ID = p[1].value.netInt; - protocolData->path = p[2].value.netCharPtr; - for(int i = 0; i< 16; i++) - { - protocolData->worldPos[i] = p[i+3].value.netFloat; - } - - if(dynamic_cast(gameClientState)) - ((Client::GameState*)gameClientState)->Protocol(protocolData); - - delete protocolData; - protocolData = NULL; - } - break; - case protocol_Gameplay_RemoveObject: - { - Client::GameClientState::RemoveObj* protocolData = new Client::GameClientState::RemoveObj; - protocolData->object_ID = p[1].value.netInt; - - if(dynamic_cast(gameClientState)) - ((Client::GameState*)gameClientState)->Protocol(protocolData); - - delete protocolData; - protocolData = NULL; - } - break; - case protocol_Gameplay_ObjectPosition: - { - - Client::GameClientState::ObjPos* protocolData = new Client::GameClientState::ObjPos; - protocolData->object_ID = p[1].value.netInt; - for(int i = 0; i< 16; i++) - { - protocolData->worldPos[i] = p[i+2].value.netFloat; - } - - if(dynamic_cast(gameClientState)) - ((Client::GameState*)gameClientState)->Protocol(protocolData); - - delete protocolData; - protocolData = NULL; - } - break; - - default: - break; - } - } - }; class DanBiasGamePrivateData { @@ -135,7 +36,7 @@ namespace DanBias WindowShell* window; InputClass* inputObj; Utility::WinTimer* timer; - MyRecieverObject* recieverObj; + GameRecieverObject* recieverObj; } data; #pragma endregion @@ -159,7 +60,7 @@ namespace DanBias if( FAILED( InitInput() ) ) return DanBiasClientReturn_Error; - m_data->recieverObj = new MyRecieverObject; + m_data->recieverObj = new GameRecieverObject; m_data->recieverObj->nwClient = new Oyster::Network::NetworkClient(m_data->recieverObj, Oyster::Network::NetworkProtocolCallbackType_Object); m_data->recieverObj->nwClient->Connect(desc.port, desc.IP); diff --git a/Code/Game/DanBiasGame/GameClientRecieverFunc.h b/Code/Game/DanBiasGame/GameClientRecieverFunc.h new file mode 100644 index 00000000..0a42d33a --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientRecieverFunc.h @@ -0,0 +1,113 @@ +#ifndef DANBIAS_CLIENTRECIEVEROBJECT_H +#define DANBIAS_CLIENTRECIEVEROBJECT_H + +namespace DanBias +{ +struct GameRecieverObject :public Oyster::Network::ProtocolRecieverObject +{ + Oyster::Network::NetworkClient* nwClient; + Client::GameClientState* gameClientState; + + // receiver function for server messages + // parsing protocols and sending it to the gameState + void NetworkCallback(Oyster::Network::CustomNetProtocol& p) override + { + int pType = p[0].value.netInt; + switch (pType) + { + case protocol_General_Status: + { + GameLogic::Protocol_General_Status::States state; + state = (GameLogic::Protocol_General_Status::States)p[1].value.netShort; + if( state == GameLogic::Protocol_General_Status::States_disconected) + { + // server disconnected + DanBiasGame::Release(); + } + } + break; + case protocol_Gameplay_PlayerNavigation: + { + Client::GameClientState::KeyInput* protocolData = new Client::GameClientState::KeyInput; + for(int i = 0; i< 6; i++) + { + protocolData->key[i] = p[i+1].value.netBool; + } + + if(dynamic_cast(gameClientState)) + ((Client::GameState*)gameClientState)->Protocol(protocolData); + delete protocolData; + protocolData = NULL; + } + break; + case protocol_Gameplay_PlayerPosition: + { + Client::GameClientState::PlayerPos* protocolData = new Client::GameClientState::PlayerPos; + for(int i = 0; i< 3; i++) + { + protocolData->playerPos[i] = p[i].value.netFloat; + } + if(dynamic_cast(gameClientState)) + ((Client::GameState*)gameClientState)->Protocol(protocolData); + delete protocolData; + protocolData = NULL; + } + break; + + case protocol_Gameplay_CreateObject: + { + + Client::GameClientState::NewObj* protocolData = new Client::GameClientState::NewObj; + protocolData->object_ID = p[1].value.netInt; + protocolData->path = p[2].value.netCharPtr; + for(int i = 0; i< 16; i++) + { + protocolData->worldPos[i] = p[i+3].value.netFloat; + } + + if(dynamic_cast(gameClientState)) + ((Client::GameState*)gameClientState)->Protocol(protocolData); + + delete p[2].value.netCharPtr; //delete char array + delete protocolData; + protocolData = NULL; + } + break; + case protocol_Gameplay_RemoveObject: + { + Client::GameClientState::RemoveObj* protocolData = new Client::GameClientState::RemoveObj; + protocolData->object_ID = p[1].value.netInt; + + if(dynamic_cast(gameClientState)) + ((Client::GameState*)gameClientState)->Protocol(protocolData); + + delete protocolData; + protocolData = NULL; + } + break; + case protocol_Gameplay_ObjectPosition: + { + + Client::GameClientState::ObjPos* protocolData = new Client::GameClientState::ObjPos; + protocolData->object_ID = p[1].value.netInt; + for(int i = 0; i< 16; i++) + { + protocolData->worldPos[i] = p[i+2].value.netFloat; + } + + if(dynamic_cast(gameClientState)) + ((Client::GameState*)gameClientState)->Protocol(protocolData); + + delete protocolData; + protocolData = NULL; + } + break; + + default: + break; + } + + } +}; +} +#endif \ No newline at end of file diff --git a/Code/OysterGraphics/Shader/HLSL/Deffered Shaders/PostPass.hlsl b/Code/OysterGraphics/Shader/HLSL/Deffered Shaders/PostPass.hlsl index 1c52e5bf..2aaf2051 100644 --- a/Code/OysterGraphics/Shader/HLSL/Deffered Shaders/PostPass.hlsl +++ b/Code/OysterGraphics/Shader/HLSL/Deffered Shaders/PostPass.hlsl @@ -7,6 +7,6 @@ RWTexture2D Output; [numthreads(16, 16, 1)] void main( uint3 DTid : SV_DispatchThreadID ) { - //Output[DTid.xy] = Diffuse[DTid.xy] + Specular[DTid.xy] + Diffuse[DTid.xy] * Ambient[DTid.xy/4].w;// + float4(Ambient[DTid.xy/4].xyz,1); GLOW - Output[DTid.xy] = Diffuse[DTid.xy]; + Output[DTid.xy] = Diffuse[DTid.xy] + Specular[DTid.xy] + Diffuse[DTid.xy] * Ambient[DTid.xy/4].w;// + float4(Ambient[DTid.xy/4].xyz,1); GLOW + //Output[DTid.xy] = Diffuse[DTid.xy]; } \ No newline at end of file