stoneage8.5/石器时代8.5客户端最新源代码/石器源码/systeminc/action.h
2020-06-23 15:53:23 +08:00

236 lines
7.2 KiB
C

/************************/
/* action.h */
/************************/
#ifndef _ACTION_H_
#define _ACTION_H_
#include "version.h"
#include "../newproto/autil.h"
//处理优先顺序
enum{
PRIO_TOP, //最优先
PRIO_CHR, //同Char
PRIO_BG, /* ?? */
PRIO_JIKI, /* ? */
PRIO_ENEMY, /*  */
PRIO_ENEMY_TAMA, /*  */
PRIO_JIKI_TAMA, /* ? */
PRIO_ITEM, /* ???? */
PRIO_BOSS, /* ?? */
PRIO_GAME_OVER, /* GAME OVER */
PRIO_BTM = 255 /* ?? */
};
//Action状态
enum{
ACT_STATE_ACT = 0, //通常状态
ACT_STATE_DEAD //死亡状态
};
//属性
#define ACT_ATR_HIDE ( 1 << 1 ) // 不显示/*  */
#define ACT_ATR_HIT ( 1 << 2 ) // 可以被点选/* ????? */
#define ACT_ATR_HIT_BOX ( 1 << 3 ) // 可以被点选的外框/* ??? + ???? */
#define ACT_ATR_INFO ( 1 << 4 ) // 显示出相关讯息/* ?????? */
#define ACT_ATR_HIDE2 ( 1 << 5 ) // 不显示 + 可以被点选/* +????? */
#define ACT_ATR_BTL_CMD_END ( 1 << 6 ) // 战斗指令输入完成旗标,未完成输入的玩家会动,完成则不会动/* ????????? */
#define ACT_ATR_TYPE_PC ( 1 << 7 ) // 玩家/* ?? */
#define ACT_ATR_TYPE_OTHER_PC ( 1 << 8 ) // 别的玩家/* ??? */
#define ACT_ATR_TYPE_PET ( 1 << 9 ) /* ??? */
#define ACT_ATR_TYPE_ITEM ( 1 << 10 ) /* ???? */
#define ACT_ATR_TYPE_GOLD ( 1 << 11 ) /* ?? */
#define ACT_ATR_TYPE_OTHER ( 1 << 12 ) /* ??????伡???? */
#define ACT_ATR_HIT_BOX_ALL1 ( 1 << 13 ) // 可以被点选 + 外框显示1
#define ACT_ATR_HIT_BOX_ALL2 ( 1 << 14 ) // 可以被点选 + 外框显示2
#define ACT_ATR_HIT_BOX_ALL3 ( 1 << 15 ) // 可以被点选 + 外框显示3
#define ACT_ATR_HIT_BOX_ALL4 ( 1 << 16 ) // 可以被点选 + 外框显示3
#define ACT_ATR_TRAVEL ( 1 << 17 ) /* ??? */
#define ACT_ATR_HIT_BOX_COL1 ( 1 << 18 ) // 左上第一列
#define ACT_ATR_HIT_BOX_COL2 ( 1 << 19 ) // 左上第二列
#define ACT_ATR_HIT_BOX_COL3 ( 1 << 20 ) // 右下第一列
#define ACT_ATR_HIT_BOX_COL4 ( 1 << 21 ) // 右下第二列
#define ACT_ATR_HIT_BOX_COL5 ( 1 << 22 ) // 左上第一列
#define ACT_ATR_HIT_BOX_COL6 ( 1 << 23 ) // 左上第二列
#define ACT_ATR_HIT_BOX_COL7 ( 1 << 24 ) // 右下第一列
#define ACT_ATR_HIT_BOX_COL8 ( 1 << 25 ) // 右下第二列
/* ?????? **********************************************************/
struct action{
struct action *pPrev, *pNext; //上一个及下一个action指标
void ( *func )( struct action * ); //action所执行的function的指标
void *pYobi; //备用的struct指标
void *pOther; //其它用途struct指标
UCHAR prio; //action处理时的优先顺序
UCHAR dispPrio; //秀图时的优先顺序
int x, y; //图的座标
int hitDispNo; //是否命中目标编号
BOOL deathFlag; //此action是否死亡旗标
int dx, dy; //秀图座标位移量
int dir; //方向
int delta; //合成向量
char name[ 29 ]; //名字
char freeName[ 33 ]; //free name
int hp;
#ifdef _PET_ITEM
int iOldHp;
#endif
int maxHp;
int mp;
int maxMp;
int level;
int status;
int itemNameColor; /* ?????? */
int charNameColor; // ?????????????
int bmpNo; //图号
int bmpNo_bak; //备份图号
int atr; //属性
int state; //状态
int actNo; //行动编号
int damage;
int gx, gy; //在目前的地图上的座标
int nextGx, nextGy; //下一个座标
int bufGx[10], bufGy[10]; //从目前座标到下一个座标之间座标的buffer
short bufCount; //设定目前要走到那一个座标
short walkFlag; // ??????????????????????
float mx, my; //地图座标
float vx, vy; // ??
//属性
short earth; // 佋 
short water; // ? 
short fire; // ? 
short wind; // ? 
//rader使用
int dirCnt; // ???????
//gemini使用
int spd; //移动的速度(0~63)( ?????? )
int crs; //方向(0~31)(正上方为0,顺时钟方向) ?( ???? )( ?????? )
int h_mini; // ??
int v_mini; // ?
//pattern使用
int anim_chr_no; //人物的编号(anim_tbl.h的编号)
int anim_chr_no_bak; //上一次的人物编号
int anim_no; //人物的动作编号
int anim_no_bak; //上一次的人物编号
int anim_ang; //动作的方向(0~7)(下0)
int anim_ang_bak; //上一次的方向
int anim_cnt; //第几张frame
int anim_frame_cnt; //这张frame停留时间
int anim_x; //X座标(Sprbin+Adrnbin)
int anim_y; //Y座标(Sprbin+Adrnbin)
int anim_hit; // ???
// shan add +1
char fmname[33]; // 家族名称
// Robin 0728 ride Pet
int onRide;
char petName[16+1];
int petLevel;
int petHp;
int petMaxHp;
int petDamage;
int petFall;
#ifdef _MIND_ICON
unsigned int sMindIcon;
#endif
#ifdef _SHOWFAMILYBADGE_
unsigned int sFamilyIcon;
#endif
#ifdef FAMILY_MANOR_
unsigned int mFamilyIcon;
#endif
#ifdef _CHAR_MANOR_
unsigned int mManorIcon;
#endif
#ifdef _CHARTITLE_STR_
TITLE_STR TitleText;
#endif
#ifdef _CHARTITLE_
unsigned int TitleIcon;
#endif
#ifdef _NPC_EVENT_NOTICE
int noticeNo;
#endif
#ifdef _SKILL_ROAR
int petRoar; //大吼(克年兽)
#endif
#ifdef _SKILL_SELFEXPLODE //自爆
int petSelfExplode;
#endif
#ifdef _MAGIC_DEEPPOISION //剧毒
int petDeepPoision;
#endif
#ifdef _CHAR_PROFESSION // WON ADD 人物职业
int profession_class;
#endif
//#ifdef _BATTLESKILL // (不可开) Syu ADD 战斗技能介面
int warrioreffect;
//#endif
#ifdef _GM_IDENTIFY // Rog ADD GM识别
char gm_name[33];
#endif
#ifdef _STREET_VENDOR
char szStreetVendorTitle[64];
#endif
#ifdef _NPC_PICTURE
int picture;
int picturetemp;
#endif
#ifdef _PETSKILL_RIDE
int saveride;
#endif
#ifdef _MOUSE_DBL_CLICK
int index; // 禁断!! Server中的charaindex
#endif
#ifdef _SFUMATO
int sfumato; // 二次渲染图层色彩
#endif
};
typedef struct action ACTION;
/* ?????????????????? */
extern ACTION *pActTop;
extern ACTION *pActBtm;
/* ?????? */
extern ACTION *pJiki;
#ifdef _STONDEBUG_
/* ?????????? */
extern int ActCnt;
#endif
/* ?????????? *****************************************************/
ACTION *GetAction( UCHAR prio, UINT yobiSize );
/* ??????????? *****************************************************/
void InitAction( void );
/* ????????? *********************************************************/
void RunAction( void );
/* ????????????************************************************/
void DeathAction( ACTION *pAct );
/* ??????? *******************************************************/
void DeathAllAction( void );
/* ???????????? ***********************************************/
void ClearAction( ACTION *pAct );
/* ???????? *********************************************************/
void EndAction( void );
#endif