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

📄 magicdata.h

📁 魔域源代码需要的可以学习一下真么这么麻烦啊
💻 H
字号:
// MagicData.h: interface for the CTempMagicData class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MAGICDATA_H__59045F42_8A10_44CB_A75B_D6C519454845__INCLUDED_)
#define AFX_MAGICDATA_H__59045F42_8A10_44CB_A75B_D6C519454845__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "define.h"
#include "MagicType.h"
#include "MyHeap.h"
#include "TimeOut.h"

//////////////////////////////////////////////////////////////////////
enum MAGICDATA{
	MAGICDATA_ID_=0,				//? 仅用于武器上带魔法的非数据库对象和再次学习时的UPDATE

	MAGICDATA_OWNERID=1,
	MAGICDATA_TYPE,
	MAGICDATA_LEVEL,
	MAGICDATA_EXP,
	MAGICDATA_UNLEARN,
	MAGICDATA_OLD_LEVEL,

	MAGICTYPEDATA_OFFSET=100,		// 控制量,请勿使用
	MAGICDATA_TYPE_X=101,		// 不使用
	MAGICDATA_SORT,
	MAGICDATA_NAME,
	MAGICDATA_CRIME,
	MAGICDATA_GROUND,
	MAGICDATA_MULTI,
	MAGICDATA_TARGET,
	MAGICDATA_LEVEL_X,			// 不使用
	MAGICDATA_USE_MP,
	MAGICDATA_USE_POTENTIAL,	// 消耗潜能
	MAGICDATA_POWER,
	MAGICDATA_INTONE,			// 魔法吟唱时间(ms)
	MAGICDATA_PERCENT,
	MAGICDATA_STEP,
	MAGICDATA_RANGE,
	MAGICDATA_DISTANCE,
	MAGICDATA_STATUS_CHANCE,		// ATKSTATUS类型魔法附加状态的概率百分比
	MAGICDATA_STATUS,
	MAGICDATA_NEED_PROFMASK,
	MAGICDATA_NEED_EXP,
	MAGICDATA_NEED_LEVEL,
	MAGICDATA_NEED_GEMTYPE,		//---jinggy---需要的宝石类型
	MAGICDATA_USE_XP,				// == TYPE_XPSKILL: use xp
	MAGICDATA_WEAPON_SUBTYPE,
	MAGICDATA_TIMES,				// =0 : once status
	MAGICDATA_AUTO_ACTIVE,			// 0x01: active when kill target
	MAGICDATA_FLOOR_ATTR,			// 0: need not match.
	MAGICDATA_AUTO_LEARN,			// bool
	MAGICDATA_LEARN_LEVEL,			// auto learn need level, nn: equ level, nnmm: between mm - nn level.
	MAGICDATA_DROPWEAPON,			// 1: throw weapon_r to target
	MAGICDATA_USE_EP,				// use energy
	MAGICDATA_WEAPON_HIT,			// 1: hit by weapon
	MAGICDATA_USE_ITEM,				// use equip item
	MAGICDATA_NEXT_MAGIC,			// launch this magic when filished current magic, use same target and pos
	MAGICDATA_DELAY,				// milli-secs
	MAGICDATA_ITEM_NUM,				// use equip item number
	MAGICDATA_WIDTH,				// width of magic. 0-180 for degree of fan (sort 4), 0 for default.
	MAGICDATA_DURABILITY,

	MAGICDATA_APPLY_MS,				// 魔法每次作用施放时间
	MAGICDATA_TRACK_ID,
	MAGICDATA_TRACK_ID2,

	MAGICDATA_AUTO_LEARN_PROB,		// 自动学习的成功率(10000=100%)
};


struct ST_MAGIC_DATA {
	OBJID	idMagic;
	OBJID	idOwner;
	USHORT	usType;
	USHORT	usLevel;
	DWORD	dwExp;
	UCHAR	ucUnlearn;
	USHORT	usOldLevel;
};

//////////////////////////////////////////////////////////////////////
class IMagicData
{
protected:
	IMagicData()			{ m_pType = NULL; }
	virtual ~IMagicData()	{}
public:
	// 由于CSingleObjSet2需要CreateNew接口,不得不增加
	static IMagicData*	CreateNew();
	virtual void	ReleaseByOwner()											PURE_VIRTUAL_FUNCTION
	virtual bool	Create(IRecordset* pRecordset)								PURE_VIRTUAL_FUNCTION_0
	virtual bool	Create(IRecordset* pDefaultRecord, OBJID idNewKey)			PURE_VIRTUAL_FUNCTION_0
	virtual bool	Create(ST_MAGIC_DATA* pMagicData)							PURE_VIRTUAL_FUNCTION_0
	virtual int		GetInt(MAGICDATA nDataName)									PURE_VIRTUAL_FUNCTION_0
	virtual void	SetInt(MAGICDATA idx, int nData)							PURE_VIRTUAL_FUNCTION
	virtual bool	FindType()													PURE_VIRTUAL_FUNCTION_0

	virtual OBJID	GetID()														PURE_VIRTUAL_FUNCTION_0
	virtual bool	Update()													PURE_VIRTUAL_FUNCTION_0
	virtual void	ClearUpdateFlags()											PURE_VIRTUAL_FUNCTION
	virtual OBJID	InsertRecord()												PURE_VIRTUAL_FUNCTION_0
	virtual bool	DeleteRecord()												PURE_VIRTUAL_FUNCTION_0

public:
	virtual const char*		GetName()		{ CHECKF(m_pType); return m_pType->GetStr(MAGICTYPEDATA_NAME); }

	// 移动轨迹
	virtual int				GetSTrackAmount()			{ CHECKF(m_pType); return m_pType->GetSTrackAmount(); }
	virtual const ST_TRACK&	GetSTrackByIndex(int idx)	{ ASSERT(m_pType); return m_pType->GetSTrackByIndex(idx); }

	virtual int				GetTTrackAmount()			{ CHECKF(m_pType); return m_pType->GetTTrackAmount(); }
	virtual const ST_TRACK&	GetTTrackByIndex(int idx)	{ ASSERT(m_pType); return m_pType->GetTTrackByIndex(idx); }

	virtual int				GetApplyMS();
	virtual int				GetLockSecs();

	virtual bool	IsReady()							{ return m_tDelay.IsTimeOut(); }
	virtual void	StartDelay()						{ m_tDelay.Update(); }
	virtual void	SetDelay();
		
protected:
	CMagicTypeData*	m_pType;
	CTimeOutMS		m_tDelay;			// 施展结束延时	
};


//////////////////////////////////////////////////////////////////////
class CMagicTempData  : public IMagicData
{
protected:
	CMagicTempData();
	virtual ~CMagicTempData()	{}

public:
	static IMagicData*	CreateNew()			{ return new CMagicTempData; }
	virtual void	ReleaseByOwner()		{ delete this; }

	virtual bool	Create(IRecordset* pRecordset);
	virtual bool	Create(IRecordset* pDefaultRecord, OBJID idNewKey);
	virtual bool	Create(ST_MAGIC_DATA* pMagicData);
	virtual int		GetInt(MAGICDATA nDataName);
	virtual void	SetInt(MAGICDATA idx, int nData);
	virtual bool	FindType();

	virtual OBJID	GetID()					{ return m_data.idMagic; }
	virtual bool	Update()				{ return false; }
	virtual void	ClearUpdateFlags()		{}
	virtual OBJID	InsertRecord()			{ return m_data.idMagic; }
	virtual bool	DeleteRecord()			{ return false; }

protected:
	ST_MAGIC_DATA	m_data;
	MYHEAP_DECLARATION(s_heap)
};

#endif // !defined(AFX_MAGICDATA_H__59045F42_8A10_44CB_A75B_D6C519454845__INCLUDED_)

⌨️ 快捷键说明

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