#ifndef _SPRITE_H_
#define _SPRITE_H_

//????????????????
#define mxSPRITE	40000

#define maxBUFFER	1024*1024*6



typedef unsigned char MOJI;
typedef unsigned char U1;
typedef          char S1;
typedef unsigned short U2;
typedef          short S2;
typedef unsigned long U4;
typedef          long S4;
typedef float  F4;
typedef double F8;

typedef enum {
	ANIM_ATTACK, //攻击
	ANIM_DAMAGE, //受伤
	ANIM_DEAD,  //死亡
	ANIM_STAND, //站立
	ANIM_WALK, //行走
	ANIM_SIT, //坐下
	ANIM_HAND, //挥手
	ANIM_HAPPY, //高兴
	ANIM_ANGRY, //生气
	ANIM_SAD, //伤心
	ANIM_GUARD, //防守
	ANIM_NOD, //点头
	ANIM_THROW, //投掷
	ANIM_LIST_
} ANIM_LIST;


// 1?????⿳
typedef struct
{
	U4 BmpNo;				//Adrn图片编号
	S2 PosX,PosY;			//图片显示时的x，y偏移
	U2 SoundNo;				// 小于10000代表音效编号,表示要放音效;大于等于10000小于10100代表要显示伤害效果,数字或其他效果
							// 大于等于10100代表连击?????
} FRAMELIST;//一帧动作的具体信息

typedef struct
{
	U2 dir;	// 动作方向(0-8)
	U2 no;	// 动作的分类见后面的ANIM_LIST的定义
	U4 dtAnim;	// 次动作循环的耗时
	U4 frameCnt; // FRAMELIST的数量
	FRAMELIST *ptFramelist;	
} ANIMLIST;


// SPR??⿳
typedef struct
{
	U4 sprNo;	// Spr序号
	U4 offset;	// 指明在spr.bin中的地址
	U2 animSize;	// 脚色有多少个完整的动作
} SPRADRN;


typedef struct
{
	U2 animSize;
	ANIMLIST	*ptAnimlist;
} SPRITEDATA;


typedef struct {
	U2			dtz;
	U2			noSpritedata;
	U2			mdAnim;
	U2			mdAnim2;
	U2			dir;
	U2			ctLoop;
	float		ctAnim;
	float		dtAnim;
} SPRITE;


typedef struct
{
	U2 dir;		// 动作方向(0-8)
	U2 no;		// 动作的分类见后面的ANIM_LIST的定义
	U4 dtAnim;	// 一次动作循环的耗时
	U4 frameCnt;	// 动作桢的数量
} ANIM_HEADER;


extern SPRITEDATA SpriteData[mxSPRITE];


BOOL InitSprBinFileOpen( char *, char * );


#endif
