- refactored many things in the Monster system git-svn-id: http://mc-server.googlecode.com/svn/trunk@112 0a769ca7-a7f5-676a-18bf-c427514a06d6
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
#include "cPawn.h"
 | 
						|
#include "Defines.h"
 | 
						|
#include "cWorld.h"
 | 
						|
#include "BlockID.h"
 | 
						|
 | 
						|
class Vector3f;
 | 
						|
class cClientHandle;
 | 
						|
class cMonster :	public cPawn											//tolua_export
 | 
						|
{																			//tolua_export
 | 
						|
public:
 | 
						|
 | 
						|
	cMonster();
 | 
						|
	virtual ~cMonster();
 | 
						|
 | 
						|
	virtual bool IsA( const char* a_EntityType );
 | 
						|
 | 
						|
	virtual void SpawnOn( cClientHandle* a_Target );
 | 
						|
 | 
						|
	virtual void Tick(float a_Dt);
 | 
						|
	virtual void HandlePhysics(float a_Dt);
 | 
						|
	virtual void ReplicateMovement();
 | 
						|
 | 
						|
	virtual void TakeDamage( int a_Damage, cEntity* a_Instigator );
 | 
						|
	virtual void KilledBy( cEntity* a_Killer );
 | 
						|
 | 
						|
	virtual void MoveToPosition( const Vector3f & a_Position );
 | 
						|
	virtual bool ReachedDestination();
 | 
						|
 | 
						|
	const char *GetState();
 | 
						|
	void SetState(const char* str);
 | 
						|
	static void ListMonsters();
 | 
						|
	
 | 
						|
	virtual void CheckEventSeePlayer();
 | 
						|
	virtual void EventSeePlayer(cEntity *);
 | 
						|
	float m_SightDistance;
 | 
						|
	static void ListClosePlayers(cMonster *);
 | 
						|
	virtual void GetMonsterConfig(const char* pm_name);
 | 
						|
	virtual void EventLosePlayer();
 | 
						|
	virtual void CheckEventLostPlayer();
 | 
						|
	
 | 
						|
	virtual void InStateIdle(float a_Dt);
 | 
						|
	virtual void InStateChasing(float a_Dt);
 | 
						|
	virtual void InStateEscaping(float a_Dt);
 | 
						|
	virtual void InStateBurning(float a_Dt);
 | 
						|
	
 | 
						|
	virtual void Attack(float a_Dt);
 | 
						|
	int GetMobType() {return m_MobType;}
 | 
						|
	int GetAttackRate(){return (int)m_AttackRate;}
 | 
						|
	void SetAttackRate(int ar);
 | 
						|
	void SetAttackRange(float ar);
 | 
						|
	void SetAttackDamage(float ad);
 | 
						|
	void SetSightDistance(float sd);
 | 
						|
	virtual void CheckMetaDataBurn();
 | 
						|
	
 | 
						|
	enum MState{ATTACKING, IDLE, CHASING, ESCAPING} m_EMState;
 | 
						|
	enum MPersonality{PASSIVE,AGGRESSIVE,COWARDLY} m_EMPersonality;
 | 
						|
	enum MMetaState{NORMAL,BURNING,CROUCHED,RIDING} m_EMMetaState;
 | 
						|
	
 | 
						|
protected:
 | 
						|
	
 | 
						|
	cEntity* m_Target;
 | 
						|
	float m_AttackRate;
 | 
						|
	float idle_interval;
 | 
						|
 | 
						|
	Vector3f* m_Destination;
 | 
						|
	bool m_bMovingToDestination;
 | 
						|
	bool m_bPassiveAggressive;
 | 
						|
	bool m_bBurnable;
 | 
						|
 | 
						|
	Vector3f* m_Speed;
 | 
						|
	float m_DestinationTime;
 | 
						|
 | 
						|
	float m_Gravity;
 | 
						|
	bool m_bOnGround;
 | 
						|
 | 
						|
	float m_DestroyTimer;
 | 
						|
	float m_Jump;
 | 
						|
 | 
						|
	char m_MobType;
 | 
						|
 | 
						|
	float m_SeePlayerInterval;
 | 
						|
	float m_AttackDamage;
 | 
						|
	float m_AttackRange;
 | 
						|
	float m_AttackInterval;
 | 
						|
	float m_FireDamageInterval;
 | 
						|
	float m_BurnPeriod;
 | 
						|
 | 
						|
	void DropItem(ENUM_ITEM_ID a_Item, unsigned int a_Count);
 | 
						|
	void RandomDropItem(ENUM_ITEM_ID a_Item, unsigned int a_Min, unsigned int a_Max);
 | 
						|
 | 
						|
}; //tolua_export
 |