⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gm_object.h

📁 混乱竞技场的全套代码,客户端资源可以网上搜
💻 H
字号:
// GM_Object.h: interface for the GM_Object class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GM_Object_H__EA591D6E_6A29_4856_AE27_39A20C1C2D0F__INCLUDED_)
#define AFX_GM_Object_H__EA591D6E_6A29_4856_AE27_39A20C1C2D0F__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class GM_World;

#define	GSOBJ_NONE		0x00000000
#define	GSOBJ_UNIT		0x80000000
#define	GSOBJ_SPELL		0x40000000



#define GSRELATION_BASE		0x0000000f

#define GSRELATION_NONE		0x00000000
#define GSRELATION_OWN		0x00000001
#define GSRELATION_ALLY		0x00000002
#define GSRELATION_ENEMY	0x00000003
#define GSRELATION_NEUTRAL	0x00000004



enum	_COLOR_MODIFIER_MODE
{
	GSCM_NO_CHANGE = 0,
	GSCM_FULL_SATURATION,
	GSCM_JEWEL_TONES,
	GSCM_PASTELS,
	GSCM_BRIGHTER,
	GSCM_DARKER,
};
typedef _COLOR_MODIFIER_MODE GSCM;

#define GSSPR_NONE					0xF0000001
#define GSSPR_KEY_FRAME_MEET		0xF0000002
#define GSSPR_ARRIVE_MEET			0xF0000004
#define GSSPR_ALPHA_MEET			0xF0000008
#define GSSPR_SCALE_MEET			0xf0000010
#define GSSPR_AGE_MEET				0xf0000020

#define GSSPR_MOVE					0xf0002000
#define GSSPR_THROW					0xf0004000
#define GSSPR_COLOR_MODIFIER			0xf0008000



class GM_Object  
{
	friend	GM_World;
public:
	DWORD GetZValue();
	VOID SetEnemy(LONG force);
	VOID SetAlly(LONG force);
	VOID UpdateRoughPos();
	ID	GetID()			{return m_id;}
	BOOL IsDismiss()	{return m_isDismiss;}		
	BOOL IsUnit()	{return(m_object_kind & GSOBJ_UNIT);}
	BOOL IsSpell()	{return(m_object_kind & GSOBJ_SPELL);}

	VOID Dismiss()		{m_isDismiss	= true;}

	FLAG			GetFlag()				{return m_flag;}
	VOID			SetFlag(FLAG flag)		{m_flag = flag;}
	VOID			AddFlag(FLAG flag)		{m_flag |= flag;}
	VOID			ClearFlag(FLAG flag)	{m_flag &= !flag;}
	BOOL			TestFlag(FLAG flag)		{return m_flag&flag;}

	BOOL TestRange(float fRange, LONG nX, LONG nY);
	BOOL TestRangeGrid(float fRange, LONG nX, LONG nY);
	BOOL TestRange(float fRange, GM_Object* pObject);
	BOOL TestSeize(LONG nX, LONG nY);
	VOID SetSeize(FLOAT fSeize);
	GM_Object(GM_World* pWorld);
	virtual ~GM_Object();
	GM_World*		GetWorld()		{ return m_pWorld; }


	virtual BOOL Create(ID id, const char *szFile, float x, float y, float h)	{m_id	= id;m_FlatX=x;m_FlatY=y;m_fHeight=h;return TRUE;}
	virtual VOID Cleanup();
	virtual VOID ReleaseSource()		{return;}
	virtual HRESULT RestoreSource()		{return S_OK;}
	virtual HRESULT	Render()		= 0;
	virtual HRESULT	Render2()			{return S_OK;};
	virtual VOID OnChangeRenderFlag(BOOL bRender) {return;}
	/////////////////////
	//返回: <0 任务完成; 0 默认; >0 动作循环次数
	virtual LONG	Update();
	virtual VOID	RunAI()			= 0;
public:
	void			SetParticleEffect(const char* strEff);


	float			GetFaceToDegree();
	BOOL			IsMoveing()	{return (m_flag & GSSPR_MOVE) == GSSPR_MOVE;}
	VOID			SetSprite(GSANI*	pAnimation);
	VOID			SetSprite(float posX, float posY, float posH, GSANI*	pAnimation, DWORD dwFrameDelay=0);

	VOID RunSparkGSCM(GSCM gscm);
	VOID RunSparkAge(int age);
	CGsAnimation* GetAnimation();

	int SetDirectionFrame(int frame_in_direction, int direction = GSANI_DIRECTION_NOCHANGE);
	VOID RunSprite( int frame_in_direction = GSANI_FRAME_NOCHANGE, int act_count = GSANI_ACT_COUNT_NOCHANGE);
	VOID RunSpriteWait( int frame_in_direction = GSANI_FRAME_NOCHANGE, int act_count = GSANI_ACT_COUNT_NOCHANGE);
	VOID RunSpriteMoveTo( float f_dest_x, float f_dest_y, float speed_pps, BOOL bUpdateFaceTo = TRUE, int frame_in_direction = GSANI_FRAME_NOCHANGE, int act_count = GSANI_ACT_COUNT_NOCHANGE);
	VOID RunSpriteMove(  float degree, float speed_pps, float distance = 0, BOOL bUpdateFaceTo = TRUE, int frame_in_direction = GSANI_FRAME_NOCHANGE, int act_count = GSANI_ACT_COUNT_NOCHANGE);
	VOID RunSpriteThrowTo(float f_dest_x, float f_dest_y, float f_dest_h, float f_speed_pps, float f_acceleration, int frame_in_direction = GSANI_FRAME_NOCHANGE, int act_count = GSANI_ACT_COUNT_NOCHANGE);
	VOID RunSpriteThrow(float f_dest_x, float f_dest_y, float f_speed_pps, float f_speed_ppsH, float f_acceleration, int frame_in_direction = GSANI_FRAME_NOCHANGE, int act_count = GSANI_ACT_COUNT_NOCHANGE);

	VOID SetFaceToPoint( float f_look_at_x, float f_look_at_y, int frame_in_direction = GSANI_FRAME_NOCHANGE);
	VOID SetFaceToAngle( float degree, int frame_in_direction = GSANI_FRAME_NOCHANGE);
public:
	void SetArriveMeet();
	FLOAT				m_seize_x;
	FLOAT				m_seize_y;
	LONG				m_object_kind;
	LONG				m_force;
	LONG				m_relation[16];
	//绝对坐标
	FLOAT				m_fPosX;
	FLOAT				m_fPosY;
	LONG				m_gridX;
	LONG				m_gridY;
	float				m_FlatX;
	float				m_FlatY;
	FLOAT				m_fHeight;
	BOOL				m_is_indispensable;
	BOOL				m_bRender;
	BOOL				m_bSelect;

protected:
	GM_World*			m_pWorld;
	//占用范围半径
	INDEX				m_index;
	float				m_fZbuf;
	BOOL				m_isDismiss;
	ID					m_id;
protected:
	GSANI*	m_pAnimation;
//	CGsParticleEmitter	m_particle_effect;
	int				m_age;
	int				m_current_age;
	GSCM			m_gscm;
	float			m_current_alpha;
	float			m_current_scale;
	float			m_rotation;
	D3DCOLOR		m_color;
	float			m_speedX;
	float			m_speedY;
	float			m_speedH;
	float			m_acceleration;
	float			m_dest_posX;
	float			m_dest_posY;
	float			m_dest_posH;
	float			m_speed_rate;
	FLAG			m_flag;
};

#endif // !defined(AFX_GM_Object_H__EA591D6E_6A29_4856_AE27_39A20C1C2D0F__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -