122 lines
2.9 KiB
C
122 lines
2.9 KiB
C
|
|
#pragma once
|
|||
|
|
#include "../script/interface/BuffType.h"
|
|||
|
|
/************************************************************************/
|
|||
|
|
/*
|
|||
|
|
/* 游戏属性数据结构定义文件
|
|||
|
|
/*
|
|||
|
|
/************************************************************************/
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
/* 定义游戏中的属性值数据结构
|
|||
|
|
/* 此数据被定义为一个4字节的联合类型,可分别通过不同的成员范围不同的字节值
|
|||
|
|
*********************************/
|
|||
|
|
typedef union tagGameAttributeValue
|
|||
|
|
{
|
|||
|
|
int nValue;
|
|||
|
|
unsigned int uValue;
|
|||
|
|
float fValue;
|
|||
|
|
bool bValue;
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
short wLo;
|
|||
|
|
short wHi;
|
|||
|
|
};
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
unsigned short uwLo;
|
|||
|
|
unsigned short uwHi;
|
|||
|
|
};
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
char cLoLo;
|
|||
|
|
char cLoHi;
|
|||
|
|
char cHiLo;
|
|||
|
|
char cHiHi;
|
|||
|
|
};
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
char btLoLo;
|
|||
|
|
char btLoHi;
|
|||
|
|
char btHiLo;
|
|||
|
|
char btHiHi;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
unsigned short wValueLo;
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
unsigned char btValueHiLo;
|
|||
|
|
unsigned char btValueHiHi;
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
}GAMEATTRVALUE, *PGAMEATTRVALUE;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
/* 定义游戏中的属性数据结构
|
|||
|
|
*********************************/
|
|||
|
|
typedef struct tagGameAttribute
|
|||
|
|
{
|
|||
|
|
unsigned char type; //属性类型,值为GAMEATTRTYPE的枚举成员,使用BYTE成员用于节省内存空间
|
|||
|
|
unsigned char reserve[3]; //保留3个字节,以便使数据结构按8字节对齐并且充分利用内存空间
|
|||
|
|
GAMEATTRVALUE value; //属性值
|
|||
|
|
}GAMEATTR, *PGAMEATTR;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
/* 定义游戏中的紧凑属性数据结构
|
|||
|
|
/* ★用于减少数据存储的内存开销★
|
|||
|
|
*********************************/
|
|||
|
|
#pragma pack(push,1)
|
|||
|
|
typedef struct tagPackedGameAttribute
|
|||
|
|
{
|
|||
|
|
//定义浮点值的基数,值为0.0001(千分数)
|
|||
|
|
static const double FloatValueBase;
|
|||
|
|
union
|
|||
|
|
{
|
|||
|
|
//type8位的类型值
|
|||
|
|
//sign8为表示符号,如果是0表示value是正数,1表示value是负数
|
|||
|
|
//value16位的数据值,如果数据类型是浮点数,则使用万分数表示,1表示0.0001
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
unsigned char type;
|
|||
|
|
unsigned char sign;
|
|||
|
|
unsigned short value;
|
|||
|
|
};
|
|||
|
|
int nValue; //整数的值
|
|||
|
|
};
|
|||
|
|
}PACKEDGAMEATTR, *PPACKEDGAMEATTR;
|
|||
|
|
#pragma pack(pop)
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
/* 定义与属性类型匹配的数据类型
|
|||
|
|
*********************************/
|
|||
|
|
enum eAttribueTypeDataType
|
|||
|
|
{
|
|||
|
|
adVoid = 0, //VOID类型值
|
|||
|
|
adSmall, //有符号1字节类型
|
|||
|
|
adUSmall, //无符号1字节类型
|
|||
|
|
adShort, //有符号2字节类型
|
|||
|
|
adUShort, //无符号2字节类型
|
|||
|
|
adInt, //有符号4字节类型
|
|||
|
|
adUInt, //无符号4字节类型
|
|||
|
|
adFloat, //单精度浮点类型值
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int nCount;
|
|||
|
|
PGAMEATTR pAttrs; //属性表
|
|||
|
|
}AttriGroup;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
/* 定义属性数据类型表
|
|||
|
|
*********************************/
|
|||
|
|
typedef eAttribueTypeDataType TAttrDataTypes[GameAttributeCount];
|
|||
|
|
typedef bool TAttrNeedCalc[GameAttributeCount];
|
|||
|
|
/**
|
|||
|
|
/* 导出数据类型表声明
|
|||
|
|
*********************************/
|
|||
|
|
extern TAttrDataTypes AttrDataTypes; //属性的数据类型表
|
|||
|
|
extern TAttrNeedCalc AttrNeedCalc; //属性是否需要通过属性计算器计算属性的标志表
|