GameLogic - Final sprint2 merge
This commit is contained in:
parent
694d5576d7
commit
15d6ac8cf9
|
@ -31,10 +31,10 @@ namespace DanBias
|
||||||
int pType = p[0].value.netInt;
|
int pType = p[0].value.netInt;
|
||||||
switch (pType)
|
switch (pType)
|
||||||
{
|
{
|
||||||
case protocol_Status:
|
case protocol_General_Status:
|
||||||
{
|
{
|
||||||
GameLogic::Protocol_Status::States state;
|
GameLogic::Protocol_General_Status::States state;
|
||||||
state = (GameLogic::Protocol_Status::States)p[1].value.netShort;
|
state = (GameLogic::Protocol_General_Status::States)p[1].value.netShort;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -184,7 +184,7 @@ namespace DanBias
|
||||||
// Main message loop
|
// Main message loop
|
||||||
while(m_data->window->Frame())
|
while(m_data->window->Frame())
|
||||||
{
|
{
|
||||||
float dt = m_data->timer->getElapsedSeconds();
|
float dt = (float)m_data->timer->getElapsedSeconds();
|
||||||
m_data->timer->reset();
|
m_data->timer->reset();
|
||||||
|
|
||||||
if(Update(dt) != S_OK)
|
if(Update(dt) != S_OK)
|
||||||
|
|
|
@ -90,8 +90,8 @@ GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyI
|
||||||
// load map
|
// load map
|
||||||
// wait for all players
|
// wait for all players
|
||||||
LoadGame();
|
LoadGame();
|
||||||
GameLogic::Protocol_Status gameStatus;
|
GameLogic::Protocol_General_Status gameStatus;
|
||||||
gameStatus.status = GameLogic::Protocol_Status::States_ready;
|
gameStatus.status = GameLogic::Protocol_General_Status::States_ready;
|
||||||
privData->nwClient->Send(gameStatus);
|
privData->nwClient->Send(gameStatus);
|
||||||
privData->state = gameStateState_playing;
|
privData->state = gameStateState_playing;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ int WINAPI WinMain( HINSTANCE hinst, HINSTANCE prevInst, PSTR cmdLine, int cmdSh
|
||||||
// Game client starter code goes here
|
// Game client starter code goes here
|
||||||
DanBias::DanBiasGameDesc gameDesc;
|
DanBias::DanBiasGameDesc gameDesc;
|
||||||
gameDesc.port = 15151;
|
gameDesc.port = 15151;
|
||||||
gameDesc.IP = "193.11.184.196";
|
//gameDesc.IP = "193.11.184.196";
|
||||||
gameDesc.IP = "127.0.0.1";
|
gameDesc.IP = "127.0.0.1";
|
||||||
gameDesc.hinst = hinst;
|
gameDesc.hinst = hinst;
|
||||||
gameDesc.nCmdShow = cmdShow;
|
gameDesc.nCmdShow = cmdShow;
|
||||||
|
|
|
@ -178,7 +178,6 @@
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Helpers\GameSessionManager.cpp" />
|
<ClCompile Include="Helpers\GameSessionManager.cpp" />
|
||||||
<ClCompile Include="Helpers\ProtocolParser.cpp" />
|
|
||||||
<ClCompile Include="Include\DanBiasServerAPI.cpp" />
|
<ClCompile Include="Include\DanBiasServerAPI.cpp" />
|
||||||
<ClCompile Include="DLLMain.cpp" />
|
<ClCompile Include="DLLMain.cpp" />
|
||||||
<ClCompile Include="GameServer.cpp" />
|
<ClCompile Include="GameServer.cpp" />
|
||||||
|
@ -199,7 +198,6 @@
|
||||||
<ClInclude Include="ServerObjects\Lobby\GameLobby.h" />
|
<ClInclude Include="ServerObjects\Lobby\GameLobby.h" />
|
||||||
<ClInclude Include="ServerObjects\Lobby\MainLobby.h" />
|
<ClInclude Include="ServerObjects\Lobby\MainLobby.h" />
|
||||||
<ClInclude Include="ServerObjects\NetworkSession.h" />
|
<ClInclude Include="ServerObjects\NetworkSession.h" />
|
||||||
<ClInclude Include="Helpers\ProtocolParser.h" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\GamePhysics\GamePhysics.vcxproj">
|
<ProjectReference Include="..\..\GamePhysics\GamePhysics.vcxproj">
|
||||||
|
|
|
@ -23,6 +23,8 @@ namespace DanBias
|
||||||
|
|
||||||
void GameServer::ClientConnectCallback(NetworkClient* client)
|
void GameServer::ClientConnectCallback(NetworkClient* client)
|
||||||
{
|
{
|
||||||
|
printf("Client with ID [%i] connected.\n", client->Id());
|
||||||
|
|
||||||
if(!myTest)
|
if(!myTest)
|
||||||
{
|
{
|
||||||
myTest = new GameSession();
|
myTest = new GameSession();
|
||||||
|
@ -33,8 +35,6 @@ namespace DanBias
|
||||||
|
|
||||||
myTest->Run(desc);
|
myTest->Run(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
//printf("Client connected with socket: %i\n", client->Id());
|
|
||||||
//
|
//
|
||||||
//Utility::DynamicMemory::SmartPointer<ClientObject> c = new ClientObject(client);
|
//Utility::DynamicMemory::SmartPointer<ClientObject> c = new ClientObject(client);
|
||||||
//this->mainLobby->AttachClient(c, this->mainLobby->GetPostbox());
|
//this->mainLobby->AttachClient(c, this->mainLobby->GetPostbox());
|
||||||
|
|
|
@ -41,14 +41,15 @@ void GameSessionManager::AddSession(DanBias::GameSession* session)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
void GameSessionManager::CloseSession(DanBias::GameSession* session)
|
void GameSessionManager::CloseSession()
|
||||||
{
|
{
|
||||||
int i = gameSessionData.Existst(session);
|
|
||||||
|
|
||||||
//Moron check...
|
//int i = gameSessionData.Existst(session);
|
||||||
if(i == -1) return;
|
//
|
||||||
|
////Moron check...
|
||||||
//gameSessionData.sessions[i]->Close();
|
//if(i == -1) return;
|
||||||
|
//
|
||||||
|
////gameSessionData.sessions[i]->Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ class GameSessionManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void AddSession(DanBias::GameSession* session);
|
static void AddSession(DanBias::GameSession* session);
|
||||||
static void CloseSession(DanBias::GameSession* session);
|
static void CloseSession();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // !DANBIASSERVER_GAME_SEESION_MANAGER_H
|
#endif // !DANBIASSERVER_GAME_SEESION_MANAGER_H
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
#include "ProtocolParser.h"
|
|
||||||
using namespace DanBias;
|
|
||||||
|
|
||||||
|
|
||||||
void ParseGeneralP(Oyster::Network::CustomNetProtocol& p, const short &f, ProtocolParser::ProtocolData& d)
|
|
||||||
{
|
|
||||||
switch (f)
|
|
||||||
{
|
|
||||||
case protocol_General_Disconnect:
|
|
||||||
|
|
||||||
break;
|
|
||||||
case protocol_General_Ping:
|
|
||||||
|
|
||||||
break;
|
|
||||||
case protocol_General_Text:
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void ParseLobbyP(Oyster::Network::CustomNetProtocol& p, const short &f, ProtocolParser::ProtocolData& d)
|
|
||||||
{
|
|
||||||
Oyster::Network::CustomNetProtocol* lp;
|
|
||||||
d.type = f;
|
|
||||||
switch (f)
|
|
||||||
{
|
|
||||||
case protocol_Lobby_CreateGame:
|
|
||||||
{
|
|
||||||
//lp = d.p.createGame.GetProtocol();
|
|
||||||
//d.p.createGame (*lp)[0].value;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case protocol_Lobby_JoinGame:
|
|
||||||
{
|
|
||||||
lp = d.p.createGame.GetProtocol();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case protocol_Lobby_StartGame:
|
|
||||||
{
|
|
||||||
lp = d.p.createGame.GetProtocol();
|
|
||||||
d.p.startGame.gameId = (*lp)[1].value.netChar;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case protocol_Lobby_JoinLobby:
|
|
||||||
{
|
|
||||||
lp = d.p.createGame.GetProtocol();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case protocol_Lobby_LeaveLobby:
|
|
||||||
{
|
|
||||||
lp = d.p.createGame.GetProtocol();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ProtocolParser::ProtocolData ProtocolParser::ParseProtocol(Oyster::Network::CustomNetProtocol& p)
|
|
||||||
{
|
|
||||||
ProtocolParser::ProtocolData d;
|
|
||||||
memset(&d, 0, sizeof(ProtocolData));
|
|
||||||
|
|
||||||
short f = p[0].value.netShort;
|
|
||||||
|
|
||||||
switch (f)
|
|
||||||
{
|
|
||||||
case protocol_TypeId_General:
|
|
||||||
ParseGeneralP(p, f, d);
|
|
||||||
break;
|
|
||||||
case protocol_TypeId_Lobby:
|
|
||||||
ParseLobbyP(p, f, d);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return d;
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
#ifndef DANBIASSERVER_PROTOCOLPARSER_H
|
|
||||||
#define DANBIASSERVER_PROTOCOLPARSER_H
|
|
||||||
|
|
||||||
#include <GameProtocols.h>
|
|
||||||
namespace DanBias
|
|
||||||
{
|
|
||||||
class ProtocolParser
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
union ProtocolCollection
|
|
||||||
{
|
|
||||||
struct{ GameLogic::Protocol_LobbyCreateGame createGame; };
|
|
||||||
struct{ GameLogic::Protocol_LobbyJoinGame joinGame; };
|
|
||||||
struct{ GameLogic::Protocol_LobbyStartGame startGame; };
|
|
||||||
struct{ GameLogic::Protocol_LobbyJoinLobby joinLobby; };
|
|
||||||
struct{ GameLogic::Protocol_LobbyLeaveLobby leaveLobby; };
|
|
||||||
};
|
|
||||||
struct ProtocolData
|
|
||||||
{
|
|
||||||
short type;
|
|
||||||
ProtocolCollection p;
|
|
||||||
};
|
|
||||||
public:
|
|
||||||
static ProtocolData ParseProtocol(Oyster::Network::CustomNetProtocol& p);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
#endif // !DANBIASSERVER_PROTOCOLPARSER_H
|
|
|
@ -14,31 +14,34 @@ ClientObject::~ClientObject()
|
||||||
}
|
}
|
||||||
void ClientObject::SetProtocolCallback(Oyster::Network::ProtocolRecieverObject* object)
|
void ClientObject::SetProtocolCallback(Oyster::Network::ProtocolRecieverObject* object)
|
||||||
{
|
{
|
||||||
this->NetClient_Object()->SetRecieverObject(object, Oyster::Network::NetworkProtocolCallbackType_Object);
|
this->GetClient()->SetRecieverObject(object, Oyster::Network::NetworkProtocolCallbackType_Object);
|
||||||
}
|
}
|
||||||
void ClientObject::SetPostbox(Oyster::IPostBox<NetworkSession::NetEvent>* box)
|
void ClientObject::SetPostbox(Oyster::IPostBox<NetworkSession::NetEvent>* box)
|
||||||
{
|
{
|
||||||
this->box = box;
|
this->box = box;
|
||||||
}
|
}
|
||||||
GameLogic::Player* ClientObject::Logic_Object()
|
GameLogic::Player* ClientObject::GetPlayer()
|
||||||
{
|
{
|
||||||
return this->logicPlayer;
|
return this->player.Get();
|
||||||
}
|
}
|
||||||
Oyster::Network::NetworkClient* ClientObject::NetClient_Object()
|
Oyster::Network::NetworkClient* ClientObject::GetClient()
|
||||||
{
|
{
|
||||||
return this->client;
|
return this->client.Get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientObject::CreatePlayer()
|
void ClientObject::CreatePlayer()
|
||||||
{
|
{
|
||||||
if(this->logicPlayer) return;
|
if(this->player) return;
|
||||||
|
|
||||||
this->logicPlayer = new GameLogic::Player();
|
this->player = new GameLogic::Player();
|
||||||
|
}
|
||||||
|
void ClientObject::ErasePlayer()
|
||||||
|
{
|
||||||
|
while(this->player.Release());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientObject::ProtocolRecievedCallback(Oyster::Network::CustomNetProtocol& protocol)
|
void ClientObject::ProtocolRecievedCallback(Oyster::Network::CustomNetProtocol& protocol)
|
||||||
{
|
{
|
||||||
//this->client->Send(&protocol);
|
|
||||||
if(!this->box) return;
|
if(!this->box) return;
|
||||||
|
|
||||||
NetworkSession::NetEvent _event;
|
NetworkSession::NetEvent _event;
|
||||||
|
|
|
@ -19,18 +19,20 @@ namespace DanBias
|
||||||
void SetPostbox(Oyster::IPostBox<NetworkSession::NetEvent>* box);
|
void SetPostbox(Oyster::IPostBox<NetworkSession::NetEvent>* box);
|
||||||
void SetProtocolCallback(Oyster::Network::ProtocolRecieverObject* object);
|
void SetProtocolCallback(Oyster::Network::ProtocolRecieverObject* object);
|
||||||
|
|
||||||
GameLogic::Player* Logic_Object();
|
GameLogic::Player* GetPlayer();
|
||||||
Oyster::Network::NetworkClient* NetClient_Object();
|
Oyster::Network::NetworkClient* GetClient();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void CreatePlayer();
|
void CreatePlayer();
|
||||||
|
void ErasePlayer();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/** This method is NOT threadsafe. */
|
/** This method is NOT threadsafe. */
|
||||||
virtual void ProtocolRecievedCallback(Oyster::Network::CustomNetProtocol& protocol) override;
|
virtual void ProtocolRecievedCallback(Oyster::Network::CustomNetProtocol& protocol) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Utility::DynamicMemory::SmartPointer<GameLogic::Player> logicPlayer;
|
Utility::DynamicMemory::SmartPointer<GameLogic::Player> player;
|
||||||
Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> client;
|
Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> client;
|
||||||
Oyster::IPostBox<DanBias::NetworkSession::NetEvent>* box;
|
Oyster::IPostBox<DanBias::NetworkSession::NetEvent>* box;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,12 +3,9 @@
|
||||||
#include <PostBox\PostBox.h>
|
#include <PostBox\PostBox.h>
|
||||||
#include "GameSession.h"
|
#include "GameSession.h"
|
||||||
#include "ClientObject.h"
|
#include "ClientObject.h"
|
||||||
#include "..\Helpers\ProtocolParser.h"
|
|
||||||
#include <GameLogicStates.h>
|
#include <GameLogicStates.h>
|
||||||
|
|
||||||
|
|
||||||
#define ERIK
|
|
||||||
|
|
||||||
using namespace Utility::DynamicMemory;
|
using namespace Utility::DynamicMemory;
|
||||||
using namespace Oyster::Network;
|
using namespace Oyster::Network;
|
||||||
using namespace Oyster;
|
using namespace Oyster;
|
||||||
|
@ -72,7 +69,7 @@ namespace DanBias
|
||||||
}
|
}
|
||||||
void GameSession::SetPostbox(IPostBox<NetworkSession::NetEvent> *box)
|
void GameSession::SetPostbox(IPostBox<NetworkSession::NetEvent> *box)
|
||||||
{
|
{
|
||||||
|
NetworkSession::SetPostbox(box);
|
||||||
}
|
}
|
||||||
void GameSession::CloseSession(NetworkSession* clientDestination)
|
void GameSession::CloseSession(NetworkSession* clientDestination)
|
||||||
{
|
{
|
||||||
|
@ -128,47 +125,46 @@ namespace DanBias
|
||||||
}
|
}
|
||||||
void GameSession::ParseProtocol(Oyster::Network::CustomNetProtocol& p, DanBias::ClientObject& c)
|
void GameSession::ParseProtocol(Oyster::Network::CustomNetProtocol& p, DanBias::ClientObject& c)
|
||||||
{
|
{
|
||||||
switch (p[0].value.netShort)
|
if( ProtocolIsGameplay(p[protocol_INDEX_ID].value.netShort) )
|
||||||
{
|
{
|
||||||
case protocol_Gamplay_PlayerNavigation:
|
switch (p[protocol_INDEX_ID].value.netShort)
|
||||||
{
|
{
|
||||||
if(p[1].value.netBool) //bool bForward;
|
case protocol_Gameplay_PlayerNavigation:
|
||||||
c.Logic_Object()->Move(GameLogic::PLAYER_MOVEMENT_FORWARD);
|
{
|
||||||
if(p[2].value.netBool) //bool bBackward;
|
|
||||||
c.Logic_Object()->Move(GameLogic::PLAYER_MOVEMENT_BACKWARD);
|
|
||||||
if(p[5].value.netBool) //bool bStrafeRight;
|
|
||||||
c.Logic_Object()->Move(GameLogic::PLAYER_MOVEMENT_RIGHT);
|
|
||||||
if(p[6].value.netBool) //bool bStrafeLeft;
|
|
||||||
c.Logic_Object()->Move(GameLogic::PLAYER_MOVEMENT_LEFT);
|
|
||||||
|
|
||||||
Oyster::Math::Float4x4 p;
|
if(p[1].value.netBool) //bool bForward;
|
||||||
c.Logic_Object()->GetRigidBody()->GetOrientation(p);
|
c.GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_FORWARD);
|
||||||
|
if(p[2].value.netBool) //bool bBackward;
|
||||||
|
c.GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_BACKWARD);
|
||||||
|
if(p[5].value.netBool) //bool bStrafeRight;
|
||||||
|
c.GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_RIGHT);
|
||||||
|
if(p[6].value.netBool) //bool bStrafeLeft;
|
||||||
|
c.GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_LEFT);
|
||||||
|
|
||||||
Protocol_ObjectPosition op(p);
|
Oyster::Math::Float4x4 p;
|
||||||
op.object_ID = c.Logic_Object()->GetID();
|
Protocol_ObjectPosition op(c.GetPlayer()->GetRigidBody()->GetOrientation(p));
|
||||||
this->Send(*op.GetProtocol());
|
op.object_ID = c.GetPlayer()->GetID();
|
||||||
|
this->Send(*op.GetProtocol());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case protocol_Gameplay_PlayerMouseMovement:
|
||||||
|
|
||||||
|
break;
|
||||||
|
case protocol_Gameplay_PlayerPosition:
|
||||||
|
|
||||||
|
break;
|
||||||
|
case protocol_Gameplay_CreateObject:
|
||||||
|
|
||||||
|
break;
|
||||||
|
case protocol_Gameplay_ObjectPosition:
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
case protocol_Gamplay_PlayerMouseMovement:
|
else if(ProtocolIsGeneral(p[protocol_INDEX_ID].value.netShort) )
|
||||||
|
{
|
||||||
|
|
||||||
break;
|
|
||||||
case protocol_Gamplay_PlayerPosition:
|
|
||||||
|
|
||||||
break;
|
|
||||||
case protocol_Gamplay_CreateObject:
|
|
||||||
|
|
||||||
break;
|
|
||||||
case protocol_Gamplay_ObjectPosition:
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ERIK
|
|
||||||
//VARIABLES GOES HERE
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}//End namespace DanBias
|
}//End namespace DanBias
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
|
|
||||||
#include "MainLobby.h"
|
#include "MainLobby.h"
|
||||||
#include "..\..\Helpers\ProtocolParser.h"
|
|
||||||
#include "..\ClientObject.h"
|
#include "..\ClientObject.h"
|
||||||
#include <PlayerProtocols.h>
|
#include <PlayerProtocols.h>
|
||||||
#include <PostBox\PostBox.h>
|
#include <PostBox\PostBox.h>
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace DanBias
|
||||||
|
|
||||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||||
{
|
{
|
||||||
if(this->clients[0]->NetClient_Object()->Id() == client->Id())
|
if(this->clients[0]->GetClient()->Id() == client->Id())
|
||||||
{
|
{
|
||||||
val = this->clients[i];
|
val = this->clients[i];
|
||||||
this->clients[i] = 0;
|
this->clients[i] = 0;
|
||||||
|
@ -76,7 +76,7 @@ namespace DanBias
|
||||||
|
|
||||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||||
{
|
{
|
||||||
if(this->clients[0]->NetClient_Object()->Id() == client->NetClient_Object()->Id())
|
if(this->clients[0]->GetClient()->Id() == client->GetClient()->Id())
|
||||||
{
|
{
|
||||||
val = this->clients[i];
|
val = this->clients[i];
|
||||||
this->clients[i] = 0;
|
this->clients[i] = 0;
|
||||||
|
@ -95,7 +95,7 @@ namespace DanBias
|
||||||
|
|
||||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||||
{
|
{
|
||||||
if(this->clients[0]->NetClient_Object()->Id() == ID)
|
if(this->clients[0]->GetClient()->Id() == ID)
|
||||||
{
|
{
|
||||||
val = this->clients[i];
|
val = this->clients[i];
|
||||||
this->clients[i] = 0;
|
this->clients[i] = 0;
|
||||||
|
@ -111,16 +111,16 @@ namespace DanBias
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||||
{
|
{
|
||||||
this->clients[i]->NetClient_Object()->Send(&protocol);
|
this->clients[i]->GetClient()->Send(&protocol);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void NetworkSession::Send(Oyster::Network::CustomNetProtocol& protocol, int ID)
|
void NetworkSession::Send(Oyster::Network::CustomNetProtocol& protocol, int ID)
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||||
{
|
{
|
||||||
if(this->clients[i]->NetClient_Object()->Id() == ID)
|
if(this->clients[i]->GetClient()->Id() == ID)
|
||||||
{
|
{
|
||||||
this->clients[i]->NetClient_Object()->Send(&protocol);
|
this->clients[i]->GetClient()->Send(&protocol);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ namespace DanBias
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||||
{
|
{
|
||||||
this->clients[i]->NetClient_Object()->Disconnect();
|
this->clients[i]->GetClient()->Disconnect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -162,7 +162,7 @@ namespace DanBias
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||||
{
|
{
|
||||||
if(this->clients[i]->NetClient_Object()->Id() == ID)
|
if(this->clients[i]->GetClient()->Id() == ID)
|
||||||
return this->clients[i];
|
return this->clients[i];
|
||||||
}
|
}
|
||||||
return Utility::DynamicMemory::SmartPointer<ClientObject>();
|
return Utility::DynamicMemory::SmartPointer<ClientObject>();
|
||||||
|
@ -171,7 +171,7 @@ namespace DanBias
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||||
{
|
{
|
||||||
if(this->clients[i]->NetClient_Object()->Id() == obj.NetClient_Object()->Id())
|
if(this->clients[i]->GetClient()->Id() == obj.GetClient()->Id())
|
||||||
return this->clients[i];
|
return this->clients[i];
|
||||||
}
|
}
|
||||||
return Utility::DynamicMemory::SmartPointer<ClientObject>();
|
return Utility::DynamicMemory::SmartPointer<ClientObject>();
|
||||||
|
|
|
@ -16,7 +16,7 @@ using namespace GameLogic;
|
||||||
Player *player = ((Player*)(rigidBodyPlayer->gameObjectRef));
|
Player *player = ((Player*)(rigidBodyPlayer->gameObjectRef));
|
||||||
Object *realObj = (Object*)obj->gameObjectRef;
|
Object *realObj = (Object*)obj->gameObjectRef;
|
||||||
|
|
||||||
switch (realObj->GetType().value)
|
switch (realObj->GetType())
|
||||||
{
|
{
|
||||||
case OBJECT_TYPE::OBJECT_TYPE_BOX:
|
case OBJECT_TYPE::OBJECT_TYPE_BOX:
|
||||||
PlayerVBox(*player,(*(DynamicObject*) realObj));
|
PlayerVBox(*player,(*(DynamicObject*) realObj));
|
||||||
|
@ -43,7 +43,7 @@ using namespace GameLogic;
|
||||||
DynamicObject *box = (DynamicObject*)rigidBodyBox->gameObjectRef;
|
DynamicObject *box = (DynamicObject*)rigidBodyBox->gameObjectRef;
|
||||||
Object *realObj = (Object*)obj->gameObjectRef;
|
Object *realObj = (Object*)obj->gameObjectRef;
|
||||||
|
|
||||||
switch (realObj->GetType().value)
|
switch (realObj->GetType())
|
||||||
{
|
{
|
||||||
case OBJECT_TYPE::OBJECT_TYPE_BOX:
|
case OBJECT_TYPE::OBJECT_TYPE_BOX:
|
||||||
|
|
||||||
|
|
|
@ -13,61 +13,18 @@ namespace GameLogic
|
||||||
PLAYER_MOVEMENT_RIGHT = 4,
|
PLAYER_MOVEMENT_RIGHT = 4,
|
||||||
PLAYER_MOVEMENT_JUMP = 8,
|
PLAYER_MOVEMENT_JUMP = 8,
|
||||||
};
|
};
|
||||||
class DANBIAS_GAMELOGIC_DLL PLAYER_STATE
|
enum PLAYER_STATE
|
||||||
{
|
{
|
||||||
public:
|
PLAYER_STATE_JUMPING = 0,
|
||||||
PLAYER_STATE()
|
PLAYER_STATE_WALKING = 1,
|
||||||
{
|
PLAYER_STATE_IDLE = 2,
|
||||||
|
|
||||||
}
|
|
||||||
PLAYER_STATE(int value)
|
|
||||||
{
|
|
||||||
this->value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const int PLAYER_STATE_JUMPING = 0;
|
|
||||||
static const int PLAYER_STATE_WALKING = 1;
|
|
||||||
static const int PLAYER_STATE_IDLE = 2;
|
|
||||||
int value;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
/*
|
|
||||||
class DANBIAS_GAMELOGIC_DLL PLAYER_MOVEMENT
|
enum OBJECT_TYPE
|
||||||
{
|
{
|
||||||
public:
|
OBJECT_TYPE_PLAYER = 0,
|
||||||
PLAYER_MOVEMENT()
|
OBJECT_TYPE_BOX = 1,
|
||||||
{
|
OBJECT_TYPE_UNKNOWN = 2,
|
||||||
|
|
||||||
}
|
|
||||||
PLAYER_MOVEMENT(int value)
|
|
||||||
{
|
|
||||||
this->value = value;
|
|
||||||
}
|
|
||||||
static const int PLAYER_MOVEMENT_FORWARD = 0;
|
|
||||||
static const int PLAYER_MOVEMENT_BACKWARD = 1;
|
|
||||||
static const int PLAYER_MOVEMENT_LEFT = 2;
|
|
||||||
static const int PLAYER_MOVEMENT_RIGHT = 4;
|
|
||||||
static const int PLAYER_MOVEMENT_JUMP = 8;
|
|
||||||
int value;
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
||||||
class DANBIAS_GAMELOGIC_DLL OBJECT_TYPE
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
OBJECT_TYPE()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
OBJECT_TYPE(int value)
|
|
||||||
{
|
|
||||||
this->value = value;
|
|
||||||
}
|
|
||||||
static const int OBJECT_TYPE_PLAYER = 0;
|
|
||||||
static const int OBJECT_TYPE_BOX = 1;
|
|
||||||
static const int OBJECT_TYPE_UNKNOWN = 2;
|
|
||||||
|
|
||||||
public: int value;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum WEAPON_FIRE
|
enum WEAPON_FIRE
|
||||||
|
|
|
@ -20,8 +20,8 @@ Object::Object()
|
||||||
rigidBody->gameObjectRef = this;
|
rigidBody->gameObjectRef = this;
|
||||||
|
|
||||||
this->objectID = GID();
|
this->objectID = GID();
|
||||||
this->type = OBJECT_TYPE::OBJECT_TYPE_UNKNOWN;
|
|
||||||
|
|
||||||
|
this->type = OBJECT_TYPE::OBJECT_TYPE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object::Object(void* collisionFunc, OBJECT_TYPE type)
|
Object::Object(void* collisionFunc, OBJECT_TYPE type)
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct Player::PrivateData
|
||||||
|
|
||||||
life = 100;
|
life = 100;
|
||||||
teamID = -1;
|
teamID = -1;
|
||||||
playerState.value = PLAYER_STATE::PLAYER_STATE_IDLE;
|
playerState = PLAYER_STATE::PLAYER_STATE_IDLE;
|
||||||
|
|
||||||
lookDir = Oyster::Math::Float3(1,0,0);
|
lookDir = Oyster::Math::Float3(1,0,0);
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,27 @@ void Player::Move(const PLAYER_MOVEMENT &movement)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::MoveForward()
|
||||||
|
{
|
||||||
|
API::Instance().ApplyForceAt(rigidBody,rigidBody->GetCenter(),myData->lookDir * 100);
|
||||||
|
}
|
||||||
|
void Player::MoveBackwards()
|
||||||
|
{
|
||||||
|
API::Instance().ApplyForceAt(rigidBody,rigidBody->GetCenter(),-myData->lookDir * 100);
|
||||||
|
}
|
||||||
|
void Player::MoveRight()
|
||||||
|
{
|
||||||
|
//Do cross product with forward vector and negative gravity vector
|
||||||
|
Oyster::Math::Float3 r = (-rigidBody->GetGravityNormal()).Cross(myData->lookDir);
|
||||||
|
API::Instance().ApplyForceAt(rigidBody, rigidBody->GetCenter(), r * 100);
|
||||||
|
}
|
||||||
|
void Player::MoveLeft()
|
||||||
|
{
|
||||||
|
//Do cross product with forward vector and negative gravity vector
|
||||||
|
Oyster::Math::Float3 r = -(-rigidBody->GetGravityNormal()).Cross(myData->lookDir);
|
||||||
|
API::Instance().ApplyForceAt(rigidBody, rigidBody->GetCenter(), r * 100);
|
||||||
|
}
|
||||||
|
|
||||||
void Player::UseWeapon(const WEAPON_FIRE &fireInput)
|
void Player::UseWeapon(const WEAPON_FIRE &fireInput)
|
||||||
{
|
{
|
||||||
myData->weapon->Use(fireInput);
|
myData->weapon->Use(fireInput);
|
||||||
|
@ -93,15 +114,15 @@ void Player::Jump()
|
||||||
|
|
||||||
bool Player::IsWalking()
|
bool Player::IsWalking()
|
||||||
{
|
{
|
||||||
return (myData->playerState.value == PLAYER_STATE::PLAYER_STATE_WALKING);
|
return (myData->playerState == PLAYER_STATE::PLAYER_STATE_WALKING);
|
||||||
}
|
}
|
||||||
bool Player::IsJumping()
|
bool Player::IsJumping()
|
||||||
{
|
{
|
||||||
return (myData->playerState.value == PLAYER_STATE::PLAYER_STATE_JUMPING);
|
return (myData->playerState == PLAYER_STATE::PLAYER_STATE_JUMPING);
|
||||||
}
|
}
|
||||||
bool Player::IsIdle()
|
bool Player::IsIdle()
|
||||||
{
|
{
|
||||||
return (myData->playerState.value == PLAYER_STATE::PLAYER_STATE_IDLE);
|
return (myData->playerState == PLAYER_STATE::PLAYER_STATE_IDLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
Oyster::Math::Float3 Player::GetPos()
|
Oyster::Math::Float3 Player::GetPos()
|
||||||
|
|
|
@ -23,6 +23,11 @@ namespace GameLogic
|
||||||
********************************************************/
|
********************************************************/
|
||||||
void Move(const PLAYER_MOVEMENT &movement);
|
void Move(const PLAYER_MOVEMENT &movement);
|
||||||
|
|
||||||
|
void MoveForward();
|
||||||
|
void MoveBackwards();
|
||||||
|
void MoveRight();
|
||||||
|
void MoveLeft();
|
||||||
|
|
||||||
/********************************************************
|
/********************************************************
|
||||||
* Uses the weapon based on input
|
* Uses the weapon based on input
|
||||||
* @param fireInput: enum value on what kind of action is to be taken
|
* @param fireInput: enum value on what kind of action is to be taken
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
namespace GameLogic
|
namespace GameLogic
|
||||||
{
|
{
|
||||||
struct Protocol_Status :public Oyster::Network::CustomProtocolObject
|
struct Protocol_General_Status :public Oyster::Network::CustomProtocolObject
|
||||||
{
|
{
|
||||||
enum States
|
enum States
|
||||||
{
|
{
|
||||||
|
@ -17,9 +17,9 @@ namespace GameLogic
|
||||||
};
|
};
|
||||||
States status;
|
States status;
|
||||||
|
|
||||||
Protocol_Status()
|
Protocol_General_Status()
|
||||||
{
|
{
|
||||||
this->protocol[0].value = protocol_Status;
|
this->protocol[0].value = protocol_General_Status;
|
||||||
this->protocol[0].type = Oyster::Network::NetAttributeType_Short;
|
this->protocol[0].type = Oyster::Network::NetAttributeType_Short;
|
||||||
|
|
||||||
this->protocol[1].type = Oyster::Network::NetAttributeType_Short;
|
this->protocol[1].type = Oyster::Network::NetAttributeType_Short;
|
||||||
|
@ -34,5 +34,75 @@ namespace GameLogic
|
||||||
private:
|
private:
|
||||||
Oyster::Network::CustomNetProtocol protocol;
|
Oyster::Network::CustomNetProtocol protocol;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Protocol_General_Ping :public Oyster::Network::CustomProtocolObject
|
||||||
|
{
|
||||||
|
|
||||||
|
Protocol_General_Ping()
|
||||||
|
{
|
||||||
|
this->protocol[0].value = protocol_General_Ping;
|
||||||
|
this->protocol[0].type = Oyster::Network::NetAttributeType_Short;
|
||||||
|
}
|
||||||
|
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
||||||
|
{
|
||||||
|
return &protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Oyster::Network::CustomNetProtocol protocol;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Protocol_General_Disconnect :public Oyster::Network::CustomProtocolObject
|
||||||
|
{
|
||||||
|
Protocol_General_Disconnect()
|
||||||
|
{
|
||||||
|
this->protocol[0].value = protocol_General_Disconnect;
|
||||||
|
this->protocol[0].type = Oyster::Network::NetAttributeType_Short;
|
||||||
|
}
|
||||||
|
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
||||||
|
{
|
||||||
|
return &protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Oyster::Network::CustomNetProtocol protocol;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Protocol_General_DisconnectKick :public Oyster::Network::CustomProtocolObject
|
||||||
|
{
|
||||||
|
Protocol_General_DisconnectKick()
|
||||||
|
{
|
||||||
|
this->protocol[0].value = protocol_General_DisconnectKick;
|
||||||
|
this->protocol[0].type = Oyster::Network::NetAttributeType_Short;
|
||||||
|
}
|
||||||
|
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
||||||
|
{
|
||||||
|
return &protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Oyster::Network::CustomNetProtocol protocol;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Protocol_General_Text :public Oyster::Network::CustomProtocolObject
|
||||||
|
{
|
||||||
|
char* text;
|
||||||
|
|
||||||
|
Protocol_General_Text()
|
||||||
|
{
|
||||||
|
this->protocol[0].value = protocol_General_Text;
|
||||||
|
this->protocol[0].type = Oyster::Network::NetAttributeType_Short;
|
||||||
|
this->protocol[1].type = Oyster::Network::NetAttributeType_CharArray;
|
||||||
|
}
|
||||||
|
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
||||||
|
{
|
||||||
|
this->protocol[1].value.netCharPtr = text;
|
||||||
|
return &protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Oyster::Network::CustomNetProtocol protocol;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif //!GAMELOGIC_CONTROL_PROTOCOLS_H
|
#endif //!GAMELOGIC_CONTROL_PROTOCOLS_H
|
|
@ -35,6 +35,17 @@ namespace GameLogic
|
||||||
this->protocol[5].type = Oyster::Network::NetAttributeType_Bool;
|
this->protocol[5].type = Oyster::Network::NetAttributeType_Bool;
|
||||||
this->protocol[6].type = Oyster::Network::NetAttributeType_Bool;
|
this->protocol[6].type = Oyster::Network::NetAttributeType_Bool;
|
||||||
}
|
}
|
||||||
|
const Protocol_PlayerMovement& operator=(Oyster::Network::CustomNetProtocol& val)
|
||||||
|
{
|
||||||
|
bForward = val[1].value.netBool;
|
||||||
|
bBackward = val[2].value.netBool;
|
||||||
|
bTurnLeft = val[3].value.netBool;
|
||||||
|
bTurnRight = val[4].value.netBool;
|
||||||
|
bStrafeRight = val[5].value.netBool;
|
||||||
|
bStrafeRight = val[6].value.netBool;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
||||||
{
|
{
|
||||||
this->protocol[1].value = bForward;
|
this->protocol[1].value = bForward;
|
||||||
|
@ -67,6 +78,13 @@ namespace GameLogic
|
||||||
this->protocol[2].type = Oyster::Network::NetAttributeType_Float;
|
this->protocol[2].type = Oyster::Network::NetAttributeType_Float;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
const Protocol_PlayerMouse& operator=(Oyster::Network::CustomNetProtocol& val)
|
||||||
|
{
|
||||||
|
dxMouse = val[1].value.netFloat;
|
||||||
|
dyMouse = val[2].value.netFloat;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
||||||
{
|
{
|
||||||
this->protocol[1].value = dxMouse;
|
this->protocol[1].value = dxMouse;
|
||||||
|
@ -95,6 +113,14 @@ namespace GameLogic
|
||||||
this->protocol[3].type = Oyster::Network::NetAttributeType_Float;
|
this->protocol[3].type = Oyster::Network::NetAttributeType_Float;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
const Protocol_PlayerPosition& operator=(Oyster::Network::CustomNetProtocol& val)
|
||||||
|
{
|
||||||
|
position[0] = val[1].value.netFloat;
|
||||||
|
position[1] = val[2].value.netFloat;
|
||||||
|
position[2] = val[3].value.netFloat;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
Oyster::Network::CustomNetProtocol* GetProtocol() override
|
||||||
{
|
{
|
||||||
this->protocol[1].value = position[0];
|
this->protocol[1].value = position[0];
|
||||||
|
|
|
@ -8,53 +8,60 @@
|
||||||
/* THERE CAN ABSOLUTLEY NOT BE TWO DEFINITIONS WITH THE SAME ID!! */
|
/* THERE CAN ABSOLUTLEY NOT BE TWO DEFINITIONS WITH THE SAME ID!! */
|
||||||
|
|
||||||
|
|
||||||
#define protocol_ID_INDEX 0
|
/** Index where the identifier is located(aka protocol identification index) **/
|
||||||
|
#define protocol_INDEX_ID 0
|
||||||
|
|
||||||
#define protocol_Gameplay_PlayerNavigation 300
|
|
||||||
#define protocol_Gameplay_PlayerMouseMovement 301
|
|
||||||
#define protocol_Gameplay_PlayerPosition 302
|
|
||||||
#define protocol_Gameplay_CreateObject 303
|
|
||||||
#define protocol_Gameplay_RemoveObject 304
|
|
||||||
#define protocol_Gameplay_ObjectPosition 305
|
|
||||||
|
|
||||||
|
|
||||||
#define protocol_Status 50
|
|
||||||
|
|
||||||
/***********************************/
|
/***********************************/
|
||||||
/********* RESERVERD PROTOCOLS *****/
|
/********* RESERVERD PROTOCOLS *****/
|
||||||
/********** [ 0 - 96 ] *********/
|
/********** [ 0 - 100 ] *********/
|
||||||
#define protocol_TypeId_Lobby 97
|
|
||||||
#define protocol_TypeId_General 98
|
|
||||||
#define protocol_TypeId_Gameplay 99
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************/
|
/***********************************/
|
||||||
/********* GENERAL PROTOCOLS *******/
|
/********* GENERAL PROTOCOLS *******/
|
||||||
/***********[ 200 - 300 ]***********/
|
/***********[ 100 - 200 ]***********/
|
||||||
|
#define protocol_GeneralMIN 100 /* This defines lower bounds of general protocols (okay to have same value as the first since this should not realy be sent). */
|
||||||
#define protocol_General_Disconnect 100
|
#define protocol_General_Disconnect 100
|
||||||
#define protocol_General_Ping 101
|
#define protocol_General_Ping 102
|
||||||
#define protocol_General_Text 102
|
#define protocol_General_Text 103
|
||||||
|
#define protocol_General_Status 104
|
||||||
|
#define protocol_General_DisconnectKick 105
|
||||||
|
#define protocol_GeneralMAX 199
|
||||||
|
|
||||||
|
|
||||||
/***********************************/
|
/***********************************/
|
||||||
/********* LOBBY PROTOCOLS *********/
|
/********* LOBBY PROTOCOLS *********/
|
||||||
/***********[ 100 - 200 ]***********/
|
/***********[ 200 - 300 ]***********/
|
||||||
|
#define protocol_LobbyMIN 200
|
||||||
#define protocol_Lobby_CreateGame 200
|
#define protocol_Lobby_CreateGame 200
|
||||||
#define protocol_Lobby_JoinGame 201
|
#define protocol_Lobby_JoinGame 201
|
||||||
#define protocol_Lobby_StartGame 202
|
#define protocol_Lobby_StartGame 202
|
||||||
#define protocol_Lobby_JoinLobby 203
|
#define protocol_Lobby_JoinLobby 203
|
||||||
#define protocol_Lobby_LeaveLobby 204
|
#define protocol_Lobby_LeaveLobby 204
|
||||||
#define protocol_Lobby_CreateGameLobby 205
|
#define protocol_Lobby_CreateGameLobby 205
|
||||||
|
#define protocol_LobbyMAX 299
|
||||||
|
|
||||||
|
|
||||||
/***********************************/
|
/***********************************/
|
||||||
/********* GAMEPLAY PROTOCOLS ******/
|
/********* GAMEPLAY PROTOCOLS ******/
|
||||||
/***********[ 300 - 400 ]***********/
|
/***********[ 300 - 400 ]***********/
|
||||||
#define protocol_Gamplay_PlayerNavigation 300
|
#define protocol_GameplayMIN 300
|
||||||
#define protocol_Gamplay_PlayerMouseMovement 301
|
#define protocol_Gameplay_PlayerNavigation 300
|
||||||
#define protocol_Gamplay_PlayerPosition 302
|
#define protocol_Gameplay_PlayerMouseMovement 301
|
||||||
#define protocol_Gamplay_CreateObject 303
|
#define protocol_Gameplay_PlayerPosition 302
|
||||||
#define protocol_Gamplay_ObjectPosition 304
|
#define protocol_Gameplay_CreateObject 303
|
||||||
|
#define protocol_Gameplay_RemoveObject 304
|
||||||
|
#define protocol_Gameplay_ObjectPosition 305
|
||||||
|
#define protocol_GameplayMAX 399
|
||||||
|
|
||||||
|
|
||||||
|
/************************************/
|
||||||
|
/*********** PROTOCOL MACROS ********/
|
||||||
|
/************************************/
|
||||||
|
inline bool ProtocolIsLobby(short ID) { return (ID >= protocol_LobbyMIN && ID <= protocol_LobbyMAX); }
|
||||||
|
inline bool ProtocolIsGeneral(short ID) { return (ID >= protocol_GeneralMIN && ID <= protocol_GeneralMAX); }
|
||||||
|
inline bool ProtocolIsGameplay(short ID) { return (ID >= protocol_GameplayMIN && ID <= protocol_GameplayMAX); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************/
|
/***********************************/
|
||||||
|
@ -62,4 +69,7 @@
|
||||||
/***********[ 1000 - x ]************/
|
/***********[ 1000 - x ]************/
|
||||||
#define PROTOCOL_TEST 1000
|
#define PROTOCOL_TEST 1000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // !GAMEPROTOCOL_PROTOCOL_DEFINITION_ID_H
|
#endif // !GAMEPROTOCOL_PROTOCOL_DEFINITION_ID_H
|
||||||
|
|
|
@ -28,10 +28,10 @@ using namespace Utility::DynamicMemory;
|
||||||
{
|
{
|
||||||
OYSTER_THREAD_STATE state; //<! The current thread state.
|
OYSTER_THREAD_STATE state; //<! The current thread state.
|
||||||
OYSTER_THREAD_PRIORITY prio; //<! The thread priority
|
OYSTER_THREAD_PRIORITY prio; //<! The thread priority
|
||||||
IThreadObject *owner; //<! The worker.
|
IThreadObject *owner; //<! The worker object.
|
||||||
std::atomic<int> msec; //<! A timer in miliseconds.
|
std::atomic<int> msec; //<! A timer in miliseconds.
|
||||||
|
|
||||||
//std::timed_mutex threadFunctionLock;
|
std::timed_mutex threadFunctionLock;
|
||||||
//std::mutex threadWaitFunctionLock;
|
//std::mutex threadWaitFunctionLock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -131,9 +131,15 @@ using namespace Utility::DynamicMemory;
|
||||||
}
|
}
|
||||||
static bool DoWork(ThreadData* w)
|
static bool DoWork(ThreadData* w)
|
||||||
{
|
{
|
||||||
if(w->owner)
|
try
|
||||||
return w->owner->DoWork();
|
{
|
||||||
|
if(w->owner)
|
||||||
|
return w->owner->DoWork();
|
||||||
|
}
|
||||||
|
catch( ... )
|
||||||
|
{
|
||||||
|
printf("Something went wrong on thread with id: [%i]", std::this_thread::get_id());
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
static void CheckStatus(ThreadData* w)
|
static void CheckStatus(ThreadData* w)
|
||||||
|
@ -239,23 +245,7 @@ OYSTER_THREAD_ERROR OysterThread::Reset(IThreadObject* worker)
|
||||||
}
|
}
|
||||||
OYSTER_THREAD_ERROR OysterThread::Terminate(bool wait)
|
OYSTER_THREAD_ERROR OysterThread::Terminate(bool wait)
|
||||||
{
|
{
|
||||||
//this->privateData->data->threadData->state = OYSTER_THREAD_STATE_DEAD;
|
|
||||||
//
|
|
||||||
//if(std::this_thread::get_id() == this->privateData->data->workerThread->get_id())
|
|
||||||
// return OYSTER_THREAD_ERROR_SUCCESS;
|
|
||||||
//
|
|
||||||
//if(wait)
|
|
||||||
//{
|
|
||||||
// if(this->privateData->data->workerThread->joinable())
|
|
||||||
// this->privateData->data->workerThread->detach();
|
|
||||||
//
|
|
||||||
// this->privateData->data->threadData->threadFunctionLock.lock();
|
|
||||||
// this->privateData->data->threadData->threadFunctionLock.unlock();
|
|
||||||
//}
|
|
||||||
|
|
||||||
return this->privateData->Terminate(wait);
|
return this->privateData->Terminate(wait);
|
||||||
|
|
||||||
//return OYSTER_THREAD_ERROR_SUCCESS;
|
|
||||||
}
|
}
|
||||||
OYSTER_THREAD_ERROR OysterThread::Wait()
|
OYSTER_THREAD_ERROR OysterThread::Wait()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue