196 lines
5.0 KiB
C++
196 lines
5.0 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#include "../eterLib/TextFileLoader.h"
|
|
#include "../eterLib/CollisionData.h"
|
|
|
|
extern float g_fGameFPS;
|
|
|
|
extern std::string g_strResourcePath;
|
|
extern std::string g_strImagePath;
|
|
|
|
// Motion Key
|
|
#define MOTION_KEY DWORD
|
|
#define MAKE_MOTION_KEY(mode, index) (((DWORD)(((BYTE)(mode)) << 24) | ((DWORD)((WORD)(index))) << 8) | ((DWORD)((BYTE)(0))))
|
|
#define MAKE_RANDOM_MOTION_KEY(mode, index, type) (((DWORD)(((BYTE)(mode)) << 24) | ((DWORD)((WORD)(index))) << 8) | ((DWORD)((BYTE)(type))))
|
|
#define GET_MOTION_MODE(key) ((BYTE)(((DWORD)(key) >> 24) & 0xFF))
|
|
#define GET_MOTION_INDEX(key) ((WORD)(((DWORD)(key) >> 8) & 0xFFFF))
|
|
#define GET_MOTION_SUB_INDEX(key) ((BYTE)(((DWORD)(key)) & 0xFF))
|
|
/*
|
|
#define MAKE_MOTION_KEY(mode, index) MAKELONG(index, mode)
|
|
#define GET_MOTION_MODE(key) HIWORD(key)
|
|
#define GET_MOTION_INDEX(key) LOWORD(key)
|
|
*/
|
|
|
|
// Race Data
|
|
namespace NRaceData
|
|
{
|
|
enum EJobs
|
|
{
|
|
JOB_WARRIOR,
|
|
JOB_ASSASSIN,
|
|
JOB_SURA,
|
|
JOB_SHAMAN,
|
|
JOB_MAX_NUM
|
|
};
|
|
|
|
// Character Attacking Data
|
|
enum EAttackType
|
|
{
|
|
ATTACK_TYPE_SPLASH,
|
|
ATTACK_TYPE_SNIPE,
|
|
};
|
|
enum EHitType
|
|
{
|
|
HIT_TYPE_NONE,
|
|
HIT_TYPE_GREAT,
|
|
HIT_TYPE_GOOD,
|
|
};
|
|
enum EMotionType
|
|
{
|
|
MOTION_TYPE_NONE,
|
|
MOTION_TYPE_NORMAL,
|
|
MOTION_TYPE_COMBO,
|
|
MOTION_TYPE_SKILL,
|
|
};
|
|
|
|
typedef CDynamicSphereInstance THitTimePosition;
|
|
typedef std::map<float, THitTimePosition> THitTimePositionMap;
|
|
|
|
typedef struct SAttackData
|
|
{
|
|
int iAttackType;
|
|
int iHittingType;
|
|
float fInvisibleTime;
|
|
float fExternalForce;
|
|
float fStiffenTime;
|
|
int iHitLimitCount;
|
|
} TAttackData;
|
|
|
|
typedef struct SHitData
|
|
{
|
|
float fAttackStartTime;
|
|
float fAttackEndTime;
|
|
|
|
float fWeaponLength;
|
|
std::string strBoneName;
|
|
|
|
THitTimePositionMap mapHitPosition;
|
|
|
|
bool Load(CTextFileLoader & rTextFileLoader);
|
|
} THitData;
|
|
|
|
typedef std::vector<THitData> THitDataContainer;
|
|
|
|
typedef struct SMotionAttackData : public SAttackData
|
|
{
|
|
int iMotionType;
|
|
|
|
THitDataContainer HitDataContainer;
|
|
} TMotionAttackData;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
// Character Attaching Collision Data
|
|
enum ECollisionType
|
|
{
|
|
COLLISION_TYPE_NONE,
|
|
|
|
COLLISION_TYPE_BODY,
|
|
COLLISION_TYPE_ATTACKING,
|
|
COLLISION_TYPE_DEFENDING,
|
|
COLLISION_TYPE_SPLASH,
|
|
};
|
|
enum ECollisionShape
|
|
{
|
|
COLLISION_SHAPE_SPHERE,
|
|
COLLISION_SHAPE_CYLINDER,
|
|
};
|
|
|
|
typedef struct SCollisionData
|
|
{
|
|
int iCollisionType;
|
|
CSphereCollisionInstanceVector SphereDataVector;
|
|
|
|
SCollisionData() {}
|
|
virtual ~SCollisionData() {}
|
|
} TCollisionData;
|
|
|
|
typedef struct SAttachingEffectData
|
|
{
|
|
std::string strFileName;
|
|
D3DXVECTOR3 v3Position;
|
|
D3DXVECTOR3 v3Rotation;
|
|
|
|
SAttachingEffectData() {}
|
|
virtual ~SAttachingEffectData() {}
|
|
} TAttachingEffectData;
|
|
|
|
typedef struct SAttachingObjectData
|
|
{
|
|
std::string strFileName;
|
|
|
|
SAttachingObjectData() {}
|
|
virtual ~SAttachingObjectData() {}
|
|
} TAttachingObjectData;
|
|
|
|
typedef std::vector<TCollisionData> TCollisionDataVector;
|
|
|
|
void DestroySystem();
|
|
|
|
void SaveAttackData(FILE * File, int iTabCount, const TAttackData & c_rData);
|
|
void SaveMotionAttackData(FILE * File, int iTabCount, const TMotionAttackData & c_rData);
|
|
void SaveCollisionData(FILE * File, int iTabCount, const TCollisionData & c_rCollisionData);
|
|
void SaveEffectData(FILE * File, int iTabCount, const TAttachingEffectData & c_rEffectData);
|
|
void SaveObjectData(FILE * File, int iTabCount, const TAttachingObjectData & c_rObjectData);
|
|
|
|
BOOL LoadAttackData(CTextFileLoader & rTextFileLoader, TAttackData * pData);
|
|
BOOL LoadMotionAttackData(CTextFileLoader & rTextFileLoader, TMotionAttackData * pData);
|
|
BOOL LoadCollisionData(CTextFileLoader & rTextFileLoader, TCollisionData * pCollisionData);
|
|
BOOL LoadEffectData(CTextFileLoader & rTextFileLoader, TAttachingEffectData * pEffectData);
|
|
BOOL LoadObjectData(CTextFileLoader & rTextFileLoader, TAttachingObjectData * pObjectData);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
// Attaching Data
|
|
enum EAttachingDataType
|
|
{
|
|
ATTACHING_DATA_TYPE_NONE,
|
|
|
|
ATTACHING_DATA_TYPE_COLLISION_DATA,
|
|
ATTACHING_DATA_TYPE_EFFECT,
|
|
ATTACHING_DATA_TYPE_OBJECT,
|
|
|
|
ATTACHING_DATA_TYPE_MAX_NUM,
|
|
};
|
|
|
|
typedef struct SAttachingData
|
|
{
|
|
SAttachingData()
|
|
: dwType(0)
|
|
, isAttaching(false)
|
|
, dwAttachingModelIndex(0)
|
|
, pCollisionData(NULL)
|
|
, pEffectData(NULL)
|
|
, pObjectData(NULL)
|
|
{}
|
|
DWORD dwType;
|
|
|
|
BOOL isAttaching;
|
|
DWORD dwAttachingModelIndex;
|
|
std::string strAttachingBoneName;
|
|
|
|
TCollisionData * pCollisionData;
|
|
TAttachingEffectData * pEffectData;
|
|
TAttachingObjectData * pObjectData;
|
|
} TAttachingData;
|
|
|
|
typedef std::vector<TAttachingData> TAttachingDataVector;
|
|
|
|
void SaveAttachingData(FILE * File, int iTabCount, const TAttachingDataVector & c_rAttachingDataVector);
|
|
BOOL LoadAttachingData(CTextFileLoader & rTextFileLoader, TAttachingDataVector * pAttachingDataVector);
|
|
|
|
extern CDynamicPool<TCollisionData> g_CollisionDataPool;
|
|
extern CDynamicPool<TAttachingEffectData> g_EffectDataPool;
|
|
extern CDynamicPool<TAttachingObjectData> g_ObjectDataPool;
|
|
};
|