#ifndef _SERVER_H_
#define _SERVER_H_
bool IsServerAllowed(const char *ip);
const int c_GameFactor = 5; class CFLServer : public IObject
{
public:
CFLServer(CFMConnection * pcnxn);
~CFLServer();
CFMConnection * GetConnection()
{
return m_pcnxn;
}
static CFLServer * FromConnection(CFMConnection & cnxn)
{
return (CFLServer *)cnxn.GetPrivateData();
}
CFLMission * CreateMission(CFLClient * pClientCreator)
{
CFLMission * pMission = new CFLMission(this, pClientCreator);
m_missions.PushFront(pMission);
return pMission;
}
void DeleteMission(const CFLMission * pMission);
MissionList * GetMissions()
{
return &m_missions;
}
int GetPlayerCount()
{
return m_cPlayers;
}
void AddPlayer()
{
++m_cPlayers;
}
void RemovePlayer()
{
--m_cPlayers;
assert (m_cPlayers >= 0);
}
PER_SERVER_COUNTERS * GetCounters()
{
return m_pCounters;
}
int GetPercentLoad()
{
return (m_missions.GetCount() * c_GameFactor + m_cPlayers) / m_maxLoad;
}
void SetHere()
{
m_bHere = true;
}
bool GetHere()
{
return m_bHere;
}
bool GetPaused()
{
return m_fPaused;
}
void SetServerPort(DWORD dwPort) {
m_sPort = dwPort;
}
DWORD GetServerPort()
{
return m_sPort;
}
void FreeStaticCoreInfo()
{
if (m_vStaticCoreInfo)
delete [] m_vStaticCoreInfo;
m_vStaticCoreInfo = NULL;
m_cStaticCoreInfo = 0;
}
void SetStaticCoreInfo(int cStaticCoreInfo, StaticCoreInfo *vStaticCoreInfo)
{
FreeStaticCoreInfo(); m_cStaticCoreInfo = cStaticCoreInfo;
if (cStaticCoreInfo)
{
m_vStaticCoreInfo = new StaticCoreInfo[cStaticCoreInfo];
memcpy(m_vStaticCoreInfo,vStaticCoreInfo,cStaticCoreInfo*sizeof(StaticCoreInfo));
}
}
int GetcStaticCoreInfo() { return m_cStaticCoreInfo; }
StaticCoreInfo* GetvStaticCoreInfo() {return m_vStaticCoreInfo;}
void SetStaticCoreMask(DWORD dwStaticCoreMask) { m_dwStaticCoreMask = dwStaticCoreMask; }
DWORD GetStaticCoreMask() { return m_dwStaticCoreMask; }
int GetCurrentGamesCount() { return m_missions.GetCount(); }
int GetMaxGamesAllowed() { return m_iMaxGames; }
void SetMaxGamesAllowed(int max) {m_iMaxGames = max;}
char *GetLocation() { return m_szLocation; }
void SetLocation(char *loc) {
strncpy(m_szLocation,loc,sizeof(m_szLocation));
m_szLocation[sizeof(m_szLocation)-1]='\0';
};
void Pause(bool fPause);
private:
static const CFLMission * c_AllMissions;
static const DWORD c_dwID;
DWORD m_dwID;
CFMConnection * m_pcnxn;
DWORD m_sPort; PER_SERVER_COUNTERS * m_pCounters;
MissionList m_missions;
int m_cPlayers;
int m_maxLoad; bool m_bHere; bool m_fPaused;
StaticCoreInfo *m_vStaticCoreInfo;
int m_cStaticCoreInfo;
DWORD m_dwStaticCoreMask;
int m_iMaxGames;
char m_szLocation[c_cbFileName]; };
#endif