Broekn
This commit is contained in:
parent
830b448690
commit
5b4758d2ae
|
@ -81,7 +81,7 @@ void NetLoadState::DataRecieved( NetEvent<NetworkClient*, NetworkClient::ClientE
|
|||
|
||||
if( ID == protocol_Lobby_CreateGame && !this->privData->loading )
|
||||
{
|
||||
this->LoadGame( Protocol_LobbyCreateGame(e.args.data.protocol).modelName );
|
||||
this->LoadGame( Protocol_LobbyCreateGame(e.args.data.protocol).mapName );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,61 +41,41 @@ namespace GameLogic
|
|||
|
||||
struct Protocol_LobbyCreateGame :public Oyster::Network::CustomProtocolObject
|
||||
{
|
||||
short clientID; // The unuiqe id reprsenting a specific client
|
||||
std::string modelName;
|
||||
float worldMatrix[16];
|
||||
char majorVersion;
|
||||
char minorVersion;
|
||||
std::string mapName;
|
||||
|
||||
Protocol_LobbyCreateGame()
|
||||
{
|
||||
int c = 0;
|
||||
this->protocol[c].value = protocol_Lobby_CreateGame;
|
||||
this->protocol[c++].type = Oyster::Network::NetAttributeType_Short;
|
||||
|
||||
this->protocol[c++].type = Oyster::Network::NetAttributeType_Short;
|
||||
for (int i = 0; i <= 16; i++)
|
||||
{
|
||||
this->protocol[c++].type = Oyster::Network::NetAttributeType_Float;
|
||||
this->protocol[0].value = protocol_Lobby_CreateGame;
|
||||
this->protocol[0].type = Oyster::Network::NetAttributeType_Short;
|
||||
this->protocol[1].type = Oyster::Network::NetAttributeType_Char;
|
||||
this->protocol[2].type = Oyster::Network::NetAttributeType_Char;
|
||||
this->protocol[3].type = Oyster::Network::NetAttributeType_CharArray;
|
||||
}
|
||||
this->protocol[c++].type = Oyster::Network::NetAttributeType_CharArray;
|
||||
}
|
||||
Protocol_LobbyCreateGame(short _clientID, std::string name, float world[16])
|
||||
Protocol_LobbyCreateGame(char majorVersion, char minorVersion, std::string name)
|
||||
{
|
||||
int c = 0;
|
||||
this->protocol[c].value = protocol_Lobby_CreateGame;
|
||||
this->protocol[c++].type = Oyster::Network::NetAttributeType_Short;
|
||||
this->protocol[0].value = protocol_Lobby_CreateGame;
|
||||
this->protocol[0].type = Oyster::Network::NetAttributeType_Short;
|
||||
this->protocol[1].type = Oyster::Network::NetAttributeType_Char;
|
||||
this->protocol[2].type = Oyster::Network::NetAttributeType_Char;
|
||||
this->protocol[3].type = Oyster::Network::NetAttributeType_CharArray;
|
||||
|
||||
this->protocol[c++].type = Oyster::Network::NetAttributeType_Short;
|
||||
for (int i = 0; i <= 16; i++)
|
||||
{
|
||||
this->protocol[c++].type = Oyster::Network::NetAttributeType_Float;
|
||||
}
|
||||
|
||||
this->protocol[c++].type = Oyster::Network::NetAttributeType_CharArray;
|
||||
|
||||
clientID = _clientID;
|
||||
modelName = name;
|
||||
memcpy(&worldMatrix[0], &world[0], sizeof(float) * 16);
|
||||
this->majorVersion = majorVersion;
|
||||
this->minorVersion = minorVersion;
|
||||
this->mapName = name;
|
||||
}
|
||||
Protocol_LobbyCreateGame(Oyster::Network::CustomNetProtocol o)
|
||||
{
|
||||
int c = 1;
|
||||
clientID = o[c++].value.netInt;
|
||||
for (int i = 0; i <= 16; i++)
|
||||
{
|
||||
this->worldMatrix[i] = o[c++].value.netFloat;
|
||||
}
|
||||
modelName.assign(o[c++].value.netCharPtr);
|
||||
this->majorVersion = o[1].value.netChar;
|
||||
this->minorVersion = o[2].value.netChar;
|
||||
this->mapName.assign(o[3].value.netCharPtr);
|
||||
}
|
||||
Oyster::Network::CustomNetProtocol GetProtocol() override
|
||||
{
|
||||
int c = 1;
|
||||
protocol[c++].value = clientID;
|
||||
|
||||
for (int i = 0; i <= 16; i++)
|
||||
{
|
||||
this->protocol[c++].value = this->worldMatrix[i];
|
||||
}
|
||||
protocol.Set(c++, this->modelName);
|
||||
protocol[1].value = this->majorVersion;
|
||||
protocol[2].value = this->minorVersion;
|
||||
protocol.Set(3, this->mapName);
|
||||
return protocol;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,19 +25,31 @@ namespace DanBias
|
|||
Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> GetClient();
|
||||
Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> ReleaseClient();
|
||||
|
||||
float GetSinceLastResponse() const;
|
||||
bool IsReady() const;
|
||||
bool Equals(const Oyster::Network::NetworkClient* c);
|
||||
inline bool operator==(const GameLogic::IPlayerData* c) { return (this->player) ? (c->GetID() == this->player->GetID()) : false ; }
|
||||
inline bool operator==(const Oyster::Network::NetworkClient* c) { return (c->GetID() == this->GetID()); }
|
||||
|
||||
inline float GetSinceLastResponse() const { return this->secondsSinceLastResponse; }
|
||||
inline std::wstring GetAlias() const { return this->alias; }
|
||||
inline std::wstring GetCharacter() const { return this->character; }
|
||||
inline bool IsReady() const { return this->isReady; }
|
||||
inline GameLogic::IPlayerData* GetPlayer() const { return this->player; }
|
||||
|
||||
|
||||
void SetPlayer(GameLogic::IPlayerData* player);
|
||||
void SetReadyState(bool isReady);
|
||||
void SetAlias(std::wstring alias);
|
||||
void SetCharacter(std::wstring character);
|
||||
void SetSinceLastResponse(float seconds);
|
||||
|
||||
private:
|
||||
GameLogic::IPlayerData* player;
|
||||
Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> client;
|
||||
|
||||
bool isReady;
|
||||
float secondsSinceLastResponse;
|
||||
};
|
||||
|
||||
std::wstring alias;
|
||||
std::wstring character;
|
||||
};
|
||||
}//End namespace DanBias
|
||||
#endif // !DANBIASSERVER_CLIENT_OBJECT_H
|
||||
|
|
|
@ -38,10 +38,8 @@ namespace DanBias
|
|||
|
||||
void GeneralStatus(GameLogic::Protocol_General_Status& p, Oyster::Network::NetworkClient* c); //id = protocol_General_Status:
|
||||
void GeneralText(GameLogic::Protocol_General_Text& p, Oyster::Network::NetworkClient* c); //id = protocol_General_Text:
|
||||
//void LobbyCreateGame(GameLogic::Protocol_LobbyCreateGame& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_Create:
|
||||
void LobbyStartGame(GameLogic::Protocol_LobbyStartGame& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_Start:
|
||||
//void LobbyJoin(GameLogic::Protocol_LobbyJoin& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_Join:
|
||||
void LobbyLogin(GameLogic::Protocol_LobbyJoinGame& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_Login:
|
||||
void LobbyJoin(GameLogic::Protocol_LobbyJoinGame& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_Login:
|
||||
void LobbyRefresh(GameLogic::Protocol_LobbyRefresh& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_Refresh:
|
||||
void LobbyGameData(GameLogic::Protocol_LobbyGameData& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_GameData:
|
||||
void LobbyMainData(GameLogic::Protocol_LobbyClientData& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_MainData:
|
||||
|
@ -53,8 +51,9 @@ namespace DanBias
|
|||
void ClientConnectedEvent(Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> client) override;
|
||||
|
||||
private:
|
||||
Utility::WinTimer timer;
|
||||
float refreshFrequency;
|
||||
//Utility::WinTimer timer;
|
||||
//float refreshFrequency;
|
||||
|
||||
Utility::DynamicMemory::LinkedList<Oyster::Network::NetworkClient*> readyList;
|
||||
GameSession gameSession;
|
||||
LobbyLevelData description;
|
||||
|
|
|
@ -31,10 +31,10 @@ namespace DanBias
|
|||
*/
|
||||
struct GameDescription
|
||||
{
|
||||
int maxClients;
|
||||
int mapNumber;
|
||||
int gameMode;
|
||||
int gameTime;
|
||||
unsigned int maxClients;
|
||||
std::string mapName;
|
||||
std::string gameMode;
|
||||
int gameTimeMinutes;
|
||||
Oyster::Network::NetworkSession* owner;
|
||||
Utility::DynamicMemory::DynamicArray<Oyster::Network::NetClient> clients;
|
||||
};
|
||||
|
@ -61,10 +61,10 @@ namespace DanBias
|
|||
|
||||
//Private member functions
|
||||
private:
|
||||
// TODO: find out what this method does..
|
||||
// Client event callback function
|
||||
void ClientEventCallback(Oyster::Network::NetEvent<Oyster::Network::NetworkClient*, Oyster::Network::NetworkClient::ClientEventArgs> e) override;
|
||||
|
||||
//Sends a client to the owner, if obj is NULL then all clients is sent
|
||||
//Sends a client to the owner, if param is NULL then all clients is sent
|
||||
void SendToOwner(DanBias::GameClient* obj);
|
||||
|
||||
//Derived from IThreadObject
|
||||
|
|
|
@ -12,51 +12,26 @@ using namespace DanBias;
|
|||
using namespace GameLogic;
|
||||
|
||||
|
||||
GameClient::GameClient(SmartPointer<NetworkClient> client, GameLogic::IPlayerData* player)
|
||||
GameClient::GameClient()
|
||||
{
|
||||
this->client = client;
|
||||
this->player = player;
|
||||
this->player = 0;
|
||||
isReady = false;
|
||||
this->character = L"Unknown";
|
||||
this->alias = L"Unknown";
|
||||
this->secondsSinceLastResponse = 0.0f;
|
||||
}
|
||||
GameClient::~GameClient()
|
||||
{
|
||||
this->client->Disconnect();
|
||||
this->player = 0;
|
||||
isReady = false;
|
||||
this->isReady = false;
|
||||
this->character = L"Unknown";
|
||||
this->alias = L"Unknown";
|
||||
this->secondsSinceLastResponse = 0.0f;
|
||||
}
|
||||
|
||||
GameLogic::IPlayerData* GameClient::GetPlayer()
|
||||
void GameClient::SetPlayer(GameLogic::IPlayerData* player)
|
||||
{
|
||||
return this->player;
|
||||
}
|
||||
GameLogic::IPlayerData* GameClient::ReleasePlayer()
|
||||
{
|
||||
GameLogic::IPlayerData *temp = this->player;
|
||||
this->player = 0;
|
||||
return temp;
|
||||
}
|
||||
SmartPointer<Oyster::Network::NetworkClient> GameClient::GetClient()
|
||||
{
|
||||
return this->client;
|
||||
}
|
||||
SmartPointer<Oyster::Network::NetworkClient> GameClient::ReleaseClient()
|
||||
{
|
||||
SmartPointer<Oyster::Network::NetworkClient> temp = this->client;
|
||||
this->client = 0;
|
||||
return temp;
|
||||
}
|
||||
|
||||
float GameClient::GetSinceLastResponse() const
|
||||
{
|
||||
return this->secondsSinceLastResponse;
|
||||
}
|
||||
bool GameClient::IsReady() const
|
||||
{
|
||||
return this->isReady;
|
||||
}
|
||||
bool GameClient::Equals(const NetworkClient* c)
|
||||
{
|
||||
return (c->GetID() == this->client->GetID());
|
||||
this->player = player;
|
||||
}
|
||||
void GameClient::SetReadyState(bool r)
|
||||
{
|
||||
|
@ -66,5 +41,13 @@ void GameClient::SetSinceLastResponse(float s)
|
|||
{
|
||||
this->secondsSinceLastResponse = s;
|
||||
}
|
||||
void GameClient::SetAlias(std::wstring alias)
|
||||
{
|
||||
this->alias = alias;
|
||||
}
|
||||
void GameClient::SetCharacter(std::wstring character)
|
||||
{
|
||||
this->character = character;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -56,13 +56,13 @@ bool GameLobby::StartGameSession( )
|
|||
GameSession::GameDescription desc;
|
||||
desc.maxClients = this->description.maxClients;
|
||||
desc.gameMode = this->description.gameMode;
|
||||
desc.gameTime = this->description.gameTime;
|
||||
desc.mapNumber = this->description.mapNumber;
|
||||
desc.gameTimeMinutes = this->description.gameTime;
|
||||
//desc.mapName = this->description.mapNumber;
|
||||
desc.owner = this;
|
||||
desc.clients = this->clients;
|
||||
|
||||
if(desc.gameTime == 0.0f)
|
||||
desc.gameTime = (int)(60.0f * 10.0f); //note: should be fetched from somewhere.
|
||||
if(desc.gameTimeMinutes == 0)
|
||||
desc.gameTimeMinutes = 10; //note: should be fetched from somewhere.
|
||||
|
||||
if(desc.maxClients == 0)
|
||||
desc.maxClients = 10; //note: should be fetched somewhere else..
|
||||
|
|
|
@ -16,13 +16,9 @@ void GameLobby::ParseProtocol(Oyster::Network::CustomNetProtocol& p, NetworkClie
|
|||
break;
|
||||
case protocol_General_Text: this->GeneralText (Protocol_General_Text (p), c);
|
||||
break;
|
||||
//case protocol_Lobby_Create: this->LobbyCreateGame (Protocol_LobbyCreateGame (p), c);
|
||||
//break;
|
||||
case protocol_Lobby_StartGame: this->LobbyStartGame (Protocol_LobbyStartGame (p), c);
|
||||
break;
|
||||
//case protocol_Lobby_Join: this->LobbyJoin (Protocol_LobbyJoin (p), c);
|
||||
//break;
|
||||
case protocol_Lobby_Login: this->LobbyLogin (Protocol_LobbyJoinGame (p), c);
|
||||
case protocol_Lobby_JoinGame: this->LobbyJoin (Protocol_LobbyJoinGame (p), c);
|
||||
break;
|
||||
case protocol_Lobby_Refresh: this->LobbyRefresh (Protocol_LobbyRefresh (p), c);
|
||||
break;
|
||||
|
@ -32,7 +28,7 @@ void GameLobby::ParseProtocol(Oyster::Network::CustomNetProtocol& p, NetworkClie
|
|||
break;
|
||||
case protocol_Lobby_ClientReadyState: this->LobbyReady (Protocol_LobbyClientReadyState (p), c);
|
||||
break;
|
||||
case protocol_Lobby_QuerryGameType: this->LobbyReady (Protocol_LobbyClientReadyState (p), c);
|
||||
case protocol_Lobby_QuerryGameType: this->LobbyQuerryGameData (Protocol_QuerryGameType (), c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -59,37 +55,40 @@ void GameLobby::GeneralStatus(GameLogic::Protocol_General_Status& p, Oyster::Net
|
|||
}
|
||||
void GameLobby::GeneralText(GameLogic::Protocol_General_Text& p, Oyster::Network::NetworkClient* c)
|
||||
{
|
||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||
{
|
||||
if(this->clients[i])
|
||||
{
|
||||
this->clients[i]->Send(p);
|
||||
}
|
||||
}
|
||||
printf(p.text.c_str());
|
||||
}
|
||||
//void GameLobby::LobbyCreateGame(GameLogic::Protocol_LobbyCreateGame& p, Oyster::Network::NetworkClient* c)
|
||||
//{
|
||||
//
|
||||
//}
|
||||
void GameLobby::LobbyStartGame(GameLogic::Protocol_LobbyStartGame& p, Oyster::Network::NetworkClient* c)
|
||||
{
|
||||
if(this->sessionOwner->GetClient()->GetID() == c->GetID())
|
||||
{
|
||||
|
||||
//Send countdown timer before lobby shuts down
|
||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||
{
|
||||
this->clients[i]->Send(Protocol_LobbyStartGame(3.0f));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//Someone else tried to start the server..
|
||||
}
|
||||
}
|
||||
//void GameLobby::LobbyJoin(GameLogic::Protocol_LobbyJoin& p, Oyster::Network::NetworkClient* c)
|
||||
//{
|
||||
// //for (unsigned int i = 0; i < this->gameLobby.Size(); i++)
|
||||
// //{
|
||||
// // if (this->gameLobby[i]->GetID() == p.value)
|
||||
// // {
|
||||
// // this->gameLobby[i]->Attach(Detach(c));
|
||||
// // return;
|
||||
// // }
|
||||
// //}
|
||||
//}
|
||||
void GameLobby::LobbyLogin(GameLogic::Protocol_LobbyJoinGame& p, Oyster::Network::NetworkClient* c)
|
||||
void GameLobby::LobbyJoin(GameLogic::Protocol_LobbyJoinGame& p, Oyster::Network::NetworkClient* c)
|
||||
{
|
||||
|
||||
//for (unsigned int i = 0; i < this->gameLobby.Size(); i++)
|
||||
//{
|
||||
// if (this->gameLobby[i]->GetID() == p.value)
|
||||
// {
|
||||
// this->gameLobby[i]->Attach(Detach(c));
|
||||
// return;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
void GameLobby::LobbyRefresh(GameLogic::Protocol_LobbyRefresh& p, Oyster::Network::NetworkClient* c)
|
||||
{
|
||||
|
@ -112,6 +111,7 @@ void GameLobby::LobbyReady(GameLogic::Protocol_LobbyClientReadyState& p, Oyster:
|
|||
else
|
||||
{
|
||||
this->readyList.Remove(c);
|
||||
|
||||
}
|
||||
}
|
||||
void GameLobby::LobbyQuerryGameData(GameLogic::Protocol_QuerryGameType& p, Oyster::Network::NetworkClient* c)
|
||||
|
|
|
@ -19,11 +19,8 @@ using namespace Oyster;
|
|||
using namespace Oyster::Network;
|
||||
using namespace Oyster::Thread;
|
||||
using namespace GameLogic;
|
||||
using namespace DanBias;
|
||||
|
||||
namespace DanBias
|
||||
{
|
||||
Utility::WinTimer testTimer;
|
||||
int testID = -1;
|
||||
|
||||
bool GameSession::DoWork( )
|
||||
{
|
||||
|
@ -246,7 +243,6 @@ namespace DanBias
|
|||
printf("Message recieved from (%i):\t %s\n", c->GetClient()->GetID(), p.text.c_str());
|
||||
}
|
||||
|
||||
}//End namespace DanBias
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -24,9 +24,8 @@ using namespace Oyster;
|
|||
using namespace Oyster::Network;
|
||||
using namespace Oyster::Thread;
|
||||
using namespace GameLogic;
|
||||
using namespace DanBias;
|
||||
|
||||
namespace DanBias
|
||||
{
|
||||
GameSession* GameSession::gameSession = nullptr;
|
||||
|
||||
GameSession::GameSession()
|
||||
|
@ -136,15 +135,12 @@ namespace DanBias
|
|||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||
{
|
||||
if(this->clients[i])
|
||||
{
|
||||
if(this->clients[i]->IsReady())
|
||||
{
|
||||
readyList.Push(this->clients[i]);
|
||||
Protocol_LobbyCreateGame p(readyList[i]->GetPlayer()->GetID(), "char_white.dan", readyList[i]->GetPlayer()->GetOrientation());
|
||||
Protocol_LobbyCreateGame p((char)1, (char)0, this->description.mapName);
|
||||
readyList[readyList.Size() - 1]->GetClient()->Send(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int readyCounter = readyList.Size();
|
||||
|
||||
|
@ -161,11 +157,10 @@ namespace DanBias
|
|||
{
|
||||
if((this->clients[k] && readyList[i]) && readyList[i]->GetClient()->GetID() != this->clients[k]->GetClient()->GetID())
|
||||
{
|
||||
//Protocol_ObjectCreatePlayer
|
||||
Protocol_ObjectCreate p( this->clients[k]->GetPlayer()->GetPosition(),
|
||||
this->clients[k]->GetPlayer()->GetRotation(),
|
||||
this->clients[k]->GetPlayer()->GetScale(),
|
||||
this->clients[k]->GetPlayer()->GetID(), "char_white.dan"); //The model name will be custom later..
|
||||
IPlayerData* pl = this->clients[k]->GetPlayer();
|
||||
Protocol_ObjectCreatePlayer p( pl->GetPosition(), pl->GetRotation(), pl->GetScale(),
|
||||
pl->GetID(), true, this->clients[k]->GetPlayer()->GetTeamID(),
|
||||
/*nwClient->GetAlias()*/"", /*playerData->GetMesh()*/"char_white.dan");
|
||||
readyList[i]->GetClient()->Send(p);
|
||||
}
|
||||
}
|
||||
|
@ -177,6 +172,8 @@ namespace DanBias
|
|||
Sleep(5); //TODO: This might not be needed here.
|
||||
}
|
||||
|
||||
//Sync with clients before starting countdown
|
||||
|
||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||
{
|
||||
if(this->clients[i])
|
||||
|
@ -186,45 +183,75 @@ namespace DanBias
|
|||
}
|
||||
}
|
||||
|
||||
bool GameSession::Attach(Utility::DynamicMemory::SmartPointer<NetworkClient> client)
|
||||
bool GameSession::Attach(Utility::DynamicMemory::SmartPointer<NetworkClient> networkClient)
|
||||
{
|
||||
if(!this->isCreated) return false;
|
||||
if(this->GetClientCount() == this->clients.Capacity()) return false;
|
||||
|
||||
client->SetOwner(this);
|
||||
networkClient->SetOwner(this);
|
||||
|
||||
IPlayerData* player = this->gameInstance.CreatePlayer();
|
||||
if(!player) return false;
|
||||
IPlayerData* playerData = this->gameInstance.CreatePlayer();
|
||||
if(!playerData) return false;
|
||||
|
||||
SmartPointer<GameClient> obj = new GameClient(client, player);
|
||||
SmartPointer<GameClient> gameClient = new GameClient(networkClient, playerData);
|
||||
NetworkClient* nwClient = gameClient->GetClient();
|
||||
|
||||
// Send the chosen mesh name
|
||||
Protocol_LobbyCreateGame lcg(obj->GetPlayer()->GetID(), "char_white.dan", obj->GetPlayer()->GetOrientation());
|
||||
obj->GetClient()->Send(lcg);
|
||||
// Send the level information
|
||||
{
|
||||
Protocol_LobbyCreateGame lcg((char)1, (char)0, this->description.mapName);
|
||||
nwClient->Send(lcg);
|
||||
}
|
||||
|
||||
// Send the player data only
|
||||
for (unsigned int i = 0; i < this->clients.Capacity(); i++)
|
||||
{
|
||||
if(this->clients[i])
|
||||
{
|
||||
IPlayerData* p = this->clients[i]->GetPlayer();
|
||||
Protocol_ObjectCreate oc(p->GetPosition(), p->GetRotation(), p->GetScale(), p->GetID(), "char_white.dan");
|
||||
//Protocol_ObjectCreatePlayer oc(p->GetPosition(), p->GetRotation(), p->GetScale(), p->GetID(), "char_white.dan");
|
||||
this->clients[i]->GetClient()->Send(oc);
|
||||
}
|
||||
Protocol_ObjectCreatePlayer oc( playerData->GetPosition(), playerData->GetRotation(), playerData->GetScale(),
|
||||
playerData->GetID(), true, playerData->GetTeamID(),
|
||||
/*nwClient->GetAlias()*/"", /*playerData->GetMesh()*/"char_white.dan");
|
||||
nwClient->Send(oc);
|
||||
}
|
||||
|
||||
obj->GetClient()->Send(GameLogic::Protocol_LobbyStartGame(0));
|
||||
|
||||
// Send information about other clients
|
||||
{
|
||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||
{
|
||||
if(clients[i])
|
||||
{
|
||||
IPlayerData* temp = clients[i]->GetPlayer();
|
||||
Protocol_ObjectCreatePlayer oc( temp->GetPosition(), temp->GetRotation(), temp->GetScale(),
|
||||
temp->GetID(), false, temp->GetTeamID(),
|
||||
/*nwClient->GetAlias()*/"", /*playerData->GetMesh()*/"char_white.dan");
|
||||
nwClient->Send(oc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: Need to be able to get the current gameplay data from the logic, to sync it with the client
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Insert the new client to the update list
|
||||
{
|
||||
bool added = false;
|
||||
for (unsigned int i = 0; !added && i < this->clients.Size(); i++)
|
||||
{
|
||||
if(!clients[i])
|
||||
{
|
||||
NetworkSession::clients[i] = client;
|
||||
clients[i] = obj;
|
||||
return true;
|
||||
NetworkSession::clients[i] = networkClient;
|
||||
clients[i] = gameClient;
|
||||
added = true;
|
||||
}
|
||||
}
|
||||
if(!added)
|
||||
{
|
||||
NetworkSession::clients.Push( networkClient );
|
||||
clients.Push( gameClient );
|
||||
}
|
||||
}
|
||||
// Send the start signal
|
||||
{
|
||||
nwClient->Send(GameLogic::Protocol_LobbyStartGame(0));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -236,5 +263,4 @@ namespace DanBias
|
|||
this->clients.Clear();
|
||||
}
|
||||
|
||||
}//End namespace DanBias
|
||||
|
||||
|
|
|
@ -133,13 +133,7 @@ namespace Oyster
|
|||
*/
|
||||
virtual void DataRecieved(NetEvent<NetworkClient*, ClientEventArgs> e);
|
||||
|
||||
/** ! Deprecate !
|
||||
* Do not use this furthermore, instead use void DataRecieved(NetEvent<NetworkClient*, ClientEventArgs> e);
|
||||
* @see DataRecieved
|
||||
*/
|
||||
//virtual void NetworkCallback(Oyster::Network::CustomNetProtocol& p);
|
||||
|
||||
virtual std::string GetIpAddress();
|
||||
std::string GetIpAddress();
|
||||
|
||||
private:
|
||||
NetworkClient(const NetworkClient& obj);
|
||||
|
|
Loading…
Reference in New Issue