115 lines
2.3 KiB
C++
115 lines
2.3 KiB
C++
/////////////////////////////////////////////////////////////////////
|
|
// Created by [Dennis Andersen] [2013]
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
#include "..\GameClient.h"
|
|
#include <NetworkSession.h>
|
|
#include <Protocols.h>
|
|
|
|
using namespace Utility::DynamicMemory;
|
|
using namespace Oyster::Network;
|
|
using namespace DanBias;
|
|
using namespace GameLogic;
|
|
|
|
|
|
GameClient::GameClient(Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> nwClient)
|
|
{
|
|
this->isInvalid = false;
|
|
this->failedPackagesCount = 0;
|
|
this->client = nwClient;
|
|
this->player = 0;
|
|
isReady = false;
|
|
this->character = L"char_orca.dan";
|
|
this->alias = L"Unknown";
|
|
this->secondsSinceLastResponse = 0.0f;
|
|
}
|
|
GameClient::~GameClient()
|
|
{
|
|
if(this->player)
|
|
{
|
|
this->player->Inactivate();
|
|
}
|
|
this->isReady = false;
|
|
this->character = L"char_orca.dan";
|
|
this->alias = L"Unknown";
|
|
this->secondsSinceLastResponse = 0.0f;
|
|
this->client = 0;
|
|
this->player = 0;
|
|
}
|
|
|
|
void GameClient::SetPlayer(GameLogic::IPlayerData* player)
|
|
{
|
|
this->player = player;
|
|
}
|
|
void GameClient::SetReadyState(bool r)
|
|
{
|
|
this->isReady = r;
|
|
}
|
|
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;
|
|
}
|
|
void GameClient::SetState(ClientState state)
|
|
{
|
|
this->state = state;
|
|
}
|
|
|
|
bool GameClient::IsInvalid()
|
|
{
|
|
return this->isInvalid;
|
|
}
|
|
void GameClient::Invalidate()
|
|
{
|
|
this->player->Release();
|
|
this->player = 0;
|
|
this->isInvalid = true;
|
|
this->isReady = false;
|
|
this->state = ClientState_Invalid;
|
|
this->client->Disconnect();
|
|
}
|
|
int GameClient::IncrementFailedProtocol()
|
|
{
|
|
this->failedPackagesCount++;
|
|
return this->failedPackagesCount;
|
|
}
|
|
void GameClient::ResetFailedProtocolCount()
|
|
{
|
|
this->failedPackagesCount = 0;
|
|
}
|
|
|
|
void GameClient::SetOwner(Oyster::Network::NetworkSession* owner)
|
|
{
|
|
this->client->SetOwner(owner);
|
|
}
|
|
void GameClient::UpdateClient()
|
|
{
|
|
switch (this->state)
|
|
{
|
|
case ClientState_Ready:
|
|
this->client->Update();
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
IPlayerData* GameClient::ReleasePlayer()
|
|
{
|
|
IPlayerData* temp = this->player;
|
|
this->player = 0;
|
|
return temp;
|
|
}
|
|
NetClient GameClient::ReleaseClient()
|
|
{
|
|
NetClient temp = this->client;
|
|
this->client = 0;
|
|
return temp;
|
|
}
|