Danbias/Code/Game/GameServer/Implementation/GameLobby_ProtocolParser.cpp

143 lines
3.8 KiB
C++
Raw Normal View History

/////////////////////////////////////////////////////////////////////
// Created by [Dennis Andersen] [2013]
/////////////////////////////////////////////////////////////////////
2014-01-29 10:18:01 +01:00
#include "..\GameLobby.h"
using namespace DanBias;
using namespace GameLogic;
using namespace Oyster::Network;
void GameLobby::ParseProtocol(Oyster::Network::CustomNetProtocol& p, NetworkClient* c)
{
switch (p[0].value.netShort)
{
2014-02-15 22:33:40 +01:00
case protocol_General_Status: this->GeneralStatus (Protocol_General_Status (p), c);
2014-01-29 10:18:01 +01:00
break;
2014-02-15 22:33:40 +01:00
case protocol_General_Text: this->GeneralText (Protocol_General_Text (p), c);
2014-01-29 10:18:01 +01:00
break;
2014-02-15 22:33:40 +01:00
//case protocol_Lobby_Create: this->LobbyCreateGame (Protocol_LobbyCreateGame (p), c);
2014-01-30 00:19:00 +01:00
//break;
2014-02-17 16:17:07 +01:00
case protocol_Lobby_StartGame: this->LobbyStartGame (Protocol_LobbyStartGame (p), c);
2014-01-29 10:18:01 +01:00
break;
2014-02-15 22:33:40 +01:00
//case protocol_Lobby_Join: this->LobbyJoin (Protocol_LobbyJoin (p), c);
//break;
2014-02-17 16:17:07 +01:00
case protocol_Lobby_Login: this->LobbyLogin (Protocol_LobbyJoinGame (p), c);
2014-01-29 10:18:01 +01:00
break;
2014-02-15 22:33:40 +01:00
case protocol_Lobby_Refresh: this->LobbyRefresh (Protocol_LobbyRefresh (p), c);
2014-01-29 10:18:01 +01:00
break;
2014-02-15 22:33:40 +01:00
case protocol_Lobby_GameData: this->LobbyGameData (Protocol_LobbyGameData (p), c);
break;
2014-02-15 22:33:40 +01:00
case protocol_Lobby_ClientData: this->LobbyMainData (Protocol_LobbyClientData (p), c);
break;
case protocol_Lobby_ClientReadyState: this->LobbyReady (Protocol_LobbyClientReadyState (p), c);
2014-01-29 10:18:01 +01:00
break;
2014-02-17 16:17:07 +01:00
case protocol_Lobby_QuerryGameType: this->LobbyReady (Protocol_LobbyClientReadyState (p), c);
break;
2014-01-29 10:18:01 +01:00
}
}
void GameLobby::GeneralStatus(GameLogic::Protocol_General_Status& p, Oyster::Network::NetworkClient* c)
{
switch (p.status)
{
case Protocol_General_Status::States_ready:
{
}
case Protocol_General_Status::States_idle:
{
}
case Protocol_General_Status::States_leave:
case Protocol_General_Status::States_disconected:
{
Detach(c)->Disconnect();
}
}
}
void GameLobby::GeneralText(GameLogic::Protocol_General_Text& p, Oyster::Network::NetworkClient* c)
{
printf(p.text.c_str());
}
2014-01-30 00:19:00 +01:00
//void GameLobby::LobbyCreateGame(GameLogic::Protocol_LobbyCreateGame& p, Oyster::Network::NetworkClient* c)
//{
//
//}
2014-01-29 10:18:01 +01:00
void GameLobby::LobbyStartGame(GameLogic::Protocol_LobbyStartGame& p, Oyster::Network::NetworkClient* c)
{
if(this->sessionOwner->GetClient()->GetID() == c->GetID())
{
}
else
{
//Someone else tried to start the server..
}
2014-01-29 10:18:01 +01:00
}
//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;
// // }
// //}
//}
2014-02-14 17:12:38 +01:00
void GameLobby::LobbyLogin(GameLogic::Protocol_LobbyJoinGame& p, Oyster::Network::NetworkClient* c)
2014-01-29 10:18:01 +01:00
{
}
void GameLobby::LobbyRefresh(GameLogic::Protocol_LobbyRefresh& p, Oyster::Network::NetworkClient* c)
{
//Dont need to handle this on the server...
}
void GameLobby::LobbyGameData(GameLogic::Protocol_LobbyGameData& p, Oyster::Network::NetworkClient* c)
{
2014-01-29 10:18:01 +01:00
}
void GameLobby::LobbyMainData(GameLogic::Protocol_LobbyClientData& p, Oyster::Network::NetworkClient* c)
2014-01-29 10:18:01 +01:00
{
}
2014-02-15 22:33:40 +01:00
void GameLobby::LobbyReady(GameLogic::Protocol_LobbyClientReadyState& p, Oyster::Network::NetworkClient* c)
{
if(p.isReady)
{
this->readyList.PushBack(c);
}
else
{
this->readyList.Remove(c);
}
}
2014-02-17 16:17:07 +01:00
void GameLobby::LobbyQuerryGameData(GameLogic::Protocol_QuerryGameType& p, Oyster::Network::NetworkClient* c)
{
NetClient temp;
bool found = false;
//find client in waiting list
for (unsigned int i = 0; !found && i < this->clients.Size(); i++)
{
if(this->clients[i]->GetID() == c->GetID())
{
temp = this->clients[i];
found = true;
}
}
2014-01-29 10:18:01 +01:00
2014-02-17 16:17:07 +01:00
//Something is wrong
if(!found)
{
c->Disconnect();
}
else
{
//Send game data
this->gameSession.Attach(temp);
}
}