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

📄 gsanimation.h

📁 连连看这个游戏都玩过吧
💻 H
字号:
// GsAnimation.h: interface for the CGsAnimation class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GSANIMATION_H__22A4012B_9B74_4DFE_B1AE_776B9DE5C487__INCLUDED_)
#define AFX_GSANIMATION_H__22A4012B_9B74_4DFE_B1AE_776B9DE5C487__INCLUDED_

#include "GSLib.h"	// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define GS_ANI_UPDATE_FINISH		-1
#define GS_ANI_UPDATE_NORMAL		0
#define GS_ANI_UPDATE_END			1
#define GS_ANI_UPDATE_BEGIN			2
//#define GS_ANI_


#define GS_ANI_PLAY_NONE			0L
#define GS_ANI_PLAY_LOOP			1L
#define GS_ANI_PLAY_LOOP_BACK		2L
#define GS_ANI_PLAY_ROTATE			3L
#define GS_ANI_PLAY_ROTATE_BACK		4L

struct GSLIB_API sGSANI_FRAME 
{
	int		index;
	FLAG	flag;
};

typedef	sGSANI_FRAME GSANI_FRAME;

class GSLIB_API CGsAnimation  
{

public:
	int SetCurrentUse(BOOL use=TRUE);
	float GetAngleFaceToDegree();
	VOID SetFaceToDegree(float degree);
	BOOL TestByPercent(float per);
	float GetFinishPercent();
	void AttachAni(GSANI* pAni);
	int SetDirectionFrame(int frame_in_direction, int direction = GSANI_DIRECTION_NOCHANGE);
	LPCSTR GetImage();
	VOID SetCurrentFrame(int index);
	BOOL Export(LPCSTR strFile=NULL);
	BOOL Save(CConfig& cfg);

	//编辑器使用,用于编辑播放序列
	//当pframe==NULL时,
	//		当index>0时,把播放幀数改为index+1(插入幀);
	//		当index==0时,从后面插入幀;
	//		当index<0时,从后面删除幀;
	BOOL SetAniFrame(int index =0, GSANI_FRAME* pframe=NULL);
	GSANI_FRAME GetAniFrame(int index);


	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;}

	VOID SetDirection(int nDirection = -1);
	VOID SetFaceTo(float fAngle);//角度单位为弧度
	VOID SetCache(int cache = 0);
	HRESULT ReleaseObjects();
	virtual HRESULT Draw(LONG x, LONG y, 					  
						 FLOAT fZValue	= 0.0f,
						 FLOAT fScaleW = 1.0f,			
						 FLOAT fScaleH = 1.0f,					
						 FLOAT fAlpha	= 1.0f,					
						 FLOAT fAngle	= 0.0f,					
						 D3DCOLOR cMix = D3DRGBA(0.5f, 0.5f, 0.5f, 1.0f));	

	virtual HRESULT DrawFast(LONG x, LONG y,					  
							 FLOAT fZValue	= 0.0f,
							 FLOAT fScaleW = 1.0f,			
							 FLOAT fScaleH = 1.0f,					
							 FLOAT fAlpha	= 1.0f,					
							 D3DCOLOR cMix = D3DRGBA(0.5f, 0.5f, 0.5f, 1.0f));

	VOID SetFrameDelay(DWORD dwDelayTick) {_m_frame_delay = dwDelayTick;}
	DWORD GetFrameDelay()	{return _m_frame_delay;}
	VOID SetPos(int pos=-1);
	VOID SetGsEngine(CGsEngine* pEngine);
	virtual VOID	Cleanup();
	virtual void	Play(FLAG style=GS_ANI_PLAY_LOOP, BOOL bReset=FALSE, float  loop=0, float time=0, float delay=0);
	virtual VOID	PlayToStart(BOOL bReset=FALSE, float delay=0);
	virtual VOID	PlayToEnd(BOOL bReset=FALSE, float delay=0);

	virtual FLAG	Update();
	virtual BOOL	Create(const char* strDesc);
	const char*		GetKey() {return m_key.c_str();}

	CGsTextureGroup*	GetTextureGroup()		{return m_texture_group;}

	int				GetFrameCount();
	CGsTexture*		GetCurrentFrame(int frame_move=0);
	CGsTexture*		GetCurrentShadow(int frame_move=0);
	CGsTexture*		GetFrame(int frame_index=0);
	CGsTexture*		GetShadow(int frame_index=0);
	BOOL			IsPlaying()			{return _m_play_flag!=GS_ANI_PLAY_NONE;}
	BOOL			IsReady()			{return NULL!=m_texture_group;}

	float			GetAngleFaceTo()	{return m_angle_face_to;}

	CGsAnimation(CGsEngine* pEngine = NULL);
	virtual ~CGsAnimation();


protected:
	CGsEngine*			m_pEngine;
	CGsTextureGroup*	m_texture_group;


	GSANI_FRAME*		m_apFrameData;

	FLAG				m_flag;

	int					m_current_frame;
	int					m_start_frame;
	int					m_end_frame;

	int					m_num_frame;
	int					m_num_direction;
	int					m_frame_per_direction;

	int					m_base_frame;

	float				m_angle_base;

	float				m_angle_face_to;

	float				m_percent_by;

	DWORD				_m_frame_delay;
	DWORD				_m_base_tick;
	DWORD				_m_pass_tick;
	DWORD				_m_play_tick;
//	DWORD				_m_base_loop;
//	DWORD				_m_play_loop;
	BOOL				_m_is_frame_up;

	FLAG				_m_play_flag;

	KEY					m_key;
	KEY					m_key_config;

};

#endif // !defined(AFX_GSANIMATION_H__22A4012B_9B74_4DFE_B1AE_776B9DE5C487__INCLUDED_)

⌨️ 快捷键说明

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