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/cPlayer.h | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 source/cPlayer.h (limited to 'source/cPlayer.h') diff --git a/source/cPlayer.h b/source/cPlayer.h new file mode 100644 index 000000000..6f05b824d --- /dev/null +++ b/source/cPlayer.h @@ -0,0 +1,96 @@ +#pragma once + +#include "cPawn.h" +#include + +class cGroup; +class cWindow; +class cInventory; +class cClientHandle; +class cPlayer : public cPawn //tolua_export +{ //tolua_export +public: + CLASS_PROTOTYPE(); + + cPlayer(cClientHandle* a_Client, const char* a_PlayerName); + virtual ~cPlayer(); + + virtual void SpawnOn( cClientHandle* a_Target ); + virtual void Tick(float a_Dt); + + void SetTouchGround( bool a_bTouchGround ); + inline void SetStance( const double & a_Stance ) { m_Stance = a_Stance; } + double GetEyeHeight(); //tolua_export + Vector3d GetEyePosition(); //tolua_export + inline bool GetFlying() { return m_bTouchGround; } //tolua_export + inline const double & GetStance() { return m_Stance; } //tolua_export + cInventory & GetInventory() { return *m_Inventory; } //tolua_export + virtual void TeleportTo( cEntity* a_Entity ); //tolua_export + virtual void TeleportTo( const double & a_PosX, const double & a_PosY, const double & a_PosZ ); //tolua_export + + // Tries to move to a new position, with collision checks and stuff + virtual void MoveTo( const Vector3d & a_NewPos ); //tolua_export + + cWindow* GetWindow() { return m_CurrentWindow; } + void OpenWindow( cWindow* a_Window ); + void CloseWindow(); + + cClientHandle* GetClientHandle() { return m_ClientHandle; } //tolua_export + void SetClientHandle( cClientHandle* a_Client ) { m_ClientHandle = a_Client; } + + void SendMessage( const char* a_Message ); //tolua_export + + const char* GetName(); //tolua_export + void SetName( const char* a_Name ); //tolua_export + + typedef std::list< cGroup* > GroupList; + void AddToGroup( const char* a_GroupName ); //tolua_export + bool CanUseCommand( const char* a_Command ); //tolua_export + bool HasPermission( const char* a_Permission ); //tolua_export + const GroupList & GetGroups(); // >> EXPORTED IN MANUALBINDINGS << + bool IsInGroup( const char* a_Group ); //tolua_export + + std::string GetColor(); //tolua_export + + void TossItem( bool a_bDraggingItem, int a_Amount = 1 ); //tolua_export + + void Heal( int a_Health ); //tolua_export + void TakeDamage( int a_Damage, cEntity* a_Instigator ); //tolua_export + void KilledBy( cEntity* a_Killer ); //tolua_export + void Respawn(); //tolua_export + + void SetVisible( bool a_bVisible ); //tolua_export + bool IsVisible() { return m_bVisible; } //tolua_export + + bool SaveToDisk(); + bool LoadFromDisk(); + + //Burning logic + bool m_bBurnable; + enum PMetaState{NORMAL,BURNING,CROUCHED,RIDING} e_EPMetaState; + virtual void CheckMetaDataBurn(); + virtual void InStateBurning(float a_Dt); + +protected: + struct sPlayerState; + sPlayerState* m_pState; + + bool m_bVisible; + + float m_LastGroundHeight; + bool m_bTouchGround; + double m_Stance; + cInventory* m_Inventory; + cWindow* m_CurrentWindow; + + float m_TimeLastPickupCheck; + + void ResolvePermissions(); + + void ResolveGroups(); + char m_Color; + float m_FireDamageInterval; + float m_BurnPeriod; + + cClientHandle* m_ClientHandle; +}; //tolua_export -- cgit v1.2.3