2012-02-06 23:44:42 -08:00
|
|
|
|
2012-02-08 02:02:46 -08:00
|
|
|
// cServer.h
|
|
|
|
|
|
|
|
// Interfaces to the cServer object representing the network server
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-10-03 11:41:19 -07:00
|
|
|
#pragma once
|
2012-02-08 02:02:46 -08:00
|
|
|
#ifndef CSERVER_H_INCLUDED
|
|
|
|
#define CSERVER_H_INCLUDED
|
|
|
|
|
|
|
|
#include "cSocketThreads.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-10-03 11:41:19 -07:00
|
|
|
|
|
|
|
class cPlayer;
|
|
|
|
class cClientHandle;
|
|
|
|
class cPacket;
|
2012-02-08 02:02:46 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-10-03 11:41:19 -07:00
|
|
|
class cServer //tolua_export
|
|
|
|
{ //tolua_export
|
|
|
|
public: //tolua_export
|
|
|
|
static cServer * GetServer(); //tolua_export
|
|
|
|
|
|
|
|
bool InitServer( int a_Port = 25565 );
|
|
|
|
|
|
|
|
int GetPort() { return m_iServerPort; }
|
|
|
|
bool IsConnected(){return m_bIsConnected;} // returns connection status
|
|
|
|
void StartListenClient(); // Listen to client
|
|
|
|
|
2012-02-13 13:47:03 -08:00
|
|
|
void Broadcast(const cPacket & a_Packet, cClientHandle* a_Exclude = NULL) { Broadcast(&a_Packet, a_Exclude); }
|
|
|
|
void Broadcast(const cPacket * a_Packet, cClientHandle* a_Exclude = NULL);
|
2011-10-03 11:41:19 -07:00
|
|
|
|
|
|
|
bool Tick(float a_Dt);
|
|
|
|
|
|
|
|
void StartListenThread();
|
|
|
|
|
|
|
|
bool Command( cClientHandle & a_Client, const char* a_Cmd );
|
|
|
|
void ServerCommand( const char* a_Cmd ); //tolua_export
|
|
|
|
void Shutdown();
|
|
|
|
|
|
|
|
void SendMessage( const char* a_Message, cPlayer* a_Player = 0, bool a_bExclude = false ); //tolua_export
|
2012-02-01 14:38:03 -08:00
|
|
|
|
|
|
|
void KickUser(const AString & iUserName, const AString & iReason);
|
|
|
|
void AuthenticateUser(const AString & iUserName); // Called by cAuthenticator to auth the specified user
|
2011-10-03 11:41:19 -07:00
|
|
|
|
|
|
|
static void ServerListenThread( void* a_Args );
|
|
|
|
|
2012-02-01 14:38:03 -08:00
|
|
|
const AString & GetServerID(void) const;
|
2012-02-08 02:02:46 -08:00
|
|
|
|
|
|
|
void ClientDestroying(const cClientHandle * a_Client); // Called by cClientHandle::Destroy(); removes the client from m_SocketThreads
|
|
|
|
|
2011-10-03 11:41:19 -07:00
|
|
|
private:
|
2012-02-08 02:02:46 -08:00
|
|
|
|
2011-10-03 11:41:19 -07:00
|
|
|
friend class cRoot; // so cRoot can create and destroy cServer
|
2012-02-08 02:02:46 -08:00
|
|
|
|
2011-10-03 11:41:19 -07:00
|
|
|
cServer();
|
|
|
|
~cServer();
|
|
|
|
|
|
|
|
struct sServerState;
|
|
|
|
sServerState* m_pState;
|
2012-02-08 02:02:46 -08:00
|
|
|
|
|
|
|
cSocketThreads m_SocketThreads;
|
2011-10-03 11:41:19 -07:00
|
|
|
|
|
|
|
// Time since server was started
|
|
|
|
float m_Millisecondsf;
|
|
|
|
unsigned int m_Milliseconds;
|
|
|
|
|
|
|
|
bool m_bIsConnected; // true - connected false - not connected
|
|
|
|
int m_iServerPort;
|
|
|
|
|
|
|
|
bool m_bRestarting;
|
|
|
|
}; //tolua_export
|
2012-02-08 02:02:46 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // CSERVER_H_INCLUDED
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|