summaryrefslogtreecommitdiffstats
path: root/source/cClientHandle.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--source/cClientHandle.h70
1 files changed, 70 insertions, 0 deletions
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