From 386d58b5862d8b76925c6523721594887606e82a Mon Sep 17 00:00:00 2001 From: faketruth Date: Mon, 3 Oct 2011 18:41:19 +0000 Subject: MCServer c++ source files git-svn-id: http://mc-server.googlecode.com/svn/trunk@3 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cClientHandle.h | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 source/cClientHandle.h (limited to 'source/cClientHandle.h') diff --git a/source/cClientHandle.h b/source/cClientHandle.h new file mode 100644 index 000000000..224ba46b3 --- /dev/null +++ b/source/cClientHandle.h @@ -0,0 +1,70 @@ +#pragma once + +class cSocket; +class cSemaphore; +class cEvent; +class Game; +class cPacket; +class cChunk; +class cPlayer; +class cClientHandle // tolua_export +{ // tolua_export +public: + enum ENUM_PRIORITY + { + E_PRIORITY_LOW, + E_PRIORITY_NORMAL + }; + + cClientHandle(const cSocket & a_Socket); + ~cClientHandle(); + + static const int VIEWDISTANCE = 13; + + const cSocket & GetSocket(); + cPlayer* GetPlayer() { return m_Player; } // tolua_export + + void Kick( const char* a_Reason ); //tolua_export + + void AddPacket( cPacket * a_Packet ); + void HandlePendingPackets(); + + void StreamChunks(); + void StreamChunksSmart( cChunk** a_Chunks, unsigned int a_NumChunks ); + + inline void SetLoggedIn( bool a_bLoggedIn ) { m_bLoggedIn = a_bLoggedIn; } + inline bool IsLoggedIn() { return m_bLoggedIn; } + + void Tick(float a_Dt); + + bool IsDestroyed() { return m_bDestroyed; } + void Destroy(); + + cChunk* m_LoadedChunks[VIEWDISTANCE*VIEWDISTANCE]; + + void Send( const cPacket & a_Packet, ENUM_PRIORITY a_Priority = E_PRIORITY_NORMAL ); + + static void SendThread( void *lpParam ); + static void ReceiveThread( void *lpParam ); + static void AuthenticateThread( void* a_Param ); + + const char* GetUsername(); +private: + void HandlePacket( cPacket* a_Packet ); + void RemovePacket( cPacket * a_Packet ); + + void SendLoginResponse(); + + struct sClientHandleState; + sClientHandleState* m_pState; + + bool m_bDestroyed; + cPlayer* m_Player; + bool m_bKicking; + + float m_TimeLastPacket; + + bool m_bLoggedIn; + + bool m_bKeepThreadGoing; +}; // tolua_export -- cgit v1.2.3