1
0
cuberite-2a/source/cPlayer.h
mtilden@gmail.com 59af89235b - Added basic ping handling.
Not sure what's up with the MC client, though. It doesn't seem to end up giving good results like the KA packet return is hanging and waiting for other things to process instead of being handled on its own to give a true result.

Feel free to update if there's any way to deliver truer results.

git-svn-id: http://mc-server.googlecode.com/svn/trunk@133 0a769ca7-a7f5-676a-18bf-c427514a06d6
2011-12-27 18:39:06 +00:00

122 lines
4.2 KiB
C++

#pragma once
#include "cPawn.h"
#include <list>
#include <string> // TODO - use const char*
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 Initialize( cWorld* a_World ); //tolua_export
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
int GetGameMode() { return m_GameMode; } //tolua_export
std::string GetIP() { return m_IP; } //tolua_export
float GetLastBlockActionTime() { return m_LastBlockActionTime; } //tolua_export
int GetLastBlockActionCnt() { return m_LastBlockActionCnt; } //tolua_export
void SetLastBlockActionCnt( int ); //tolua_export
void SetLastBlockActionTime(); //tolua_export
void SetGameMode( int a_GameMode ); //tolua_export
void LoginSetGameMode( int a_GameMode );
void SetIP( std::string a_IP );
// 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(char a_WindowType);
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 MoveToWorld( const char* a_WorldName ); //tolua_export
bool SaveToDisk();
bool LoadFromDisk();
const char* GetLoadedWorldName();
//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;
float m_LastBlockActionTime;
int m_LastBlockActionCnt;
int m_GameMode;
std::string m_IP;
long long m_LastPlayerListTime;
static const unsigned short PLAYER_LIST_TIME_MS = 1000; // 1000 = once per second
cClientHandle* m_ClientHandle;
}; //tolua_export