Danbias/Code/Game/DanBiasServer/Helpers/GameSessionManager.cpp

58 lines
1.1 KiB
C++
Raw Normal View History

#include "GameSessionManager.h"
2013-12-19 12:32:23 +01:00
#include "..\ServerObjects\GameSession.h"
#include "DynamicArray.h"
struct GameSessionData
{
Utility::DynamicMemory::DynamicArray<DanBias::GameSession*> sessions;
int freeSpot;
int Existst(DanBias::GameSession* s)
{
for (unsigned int i = 0; i < sessions.Size(); i++)
{
if(!sessions[i] && freeSpot == -1) freeSpot = i;
if(sessions[i] == s) return i;
}
return -1;
}
int GetFree()
{
for (unsigned int i = 0; i < sessions.Size(); i++)
if(!sessions[i])
return i;
return -1;
}
2013-12-19 12:32:23 +01:00
} gameSessionData;
void GameSessionManager::AddSession(DanBias::GameSession* session)
{
2013-12-19 12:32:23 +01:00
if(gameSessionData.Existst(session) == -1)
{
2013-12-19 12:32:23 +01:00
int k = gameSessionData.freeSpot;
2013-12-19 12:32:23 +01:00
if( k == -1) k = gameSessionData.GetFree();
2013-12-19 12:32:23 +01:00
if(k == -1) gameSessionData.sessions.Push(session);
else gameSessionData.sessions[k] = session;
}
}
void GameSessionManager::CloseSession(DanBias::GameSession* session)
{
2013-12-19 12:32:23 +01:00
int i = gameSessionData.Existst(session);
//Moron check...
if(i == -1) return;
2013-12-19 12:32:23 +01:00
//gameSessionData.sessions[i]->Close();
}