📄 gm_object.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 + -