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

📄 mercenarytaskdata.h

📁 网络游戏魔域的服务端与客户端完整源代码 包括详细的说明文档与开发日志
💻 H
字号:
// MercenaryTaskData.h: interface for the CMercenaryTaskData class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MERCENARYTASKDATA_H__10522F05_A91D_4979_9240_BE2EDE9DFEBB__INCLUDED_)
#define AFX_MERCENARYTASKDATA_H__10522F05_A91D_4979_9240_BE2EDE9DFEBB__INCLUDED_

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

#pragma warning(disable:4786)
#include "define.h"
#include "GameData.h"
#include "GameObj.h"
#include "MyHeap.h"
#include "MsgPlayerTask.h"
#include <vector>

// 佣兵任务数据

enum MTASKDATA {
	MTASKDATA_ID_	= 0,				// 任务ID
	MTASKDATA_TYPE,						// 任务类型
	MTASKDATA_USER_ID,					// 发布任务人ID
	MTASKDATA_USER_NAME,				// 发布任务人名字
	MTASKDATA_TITLE,					// 任务标题
	MTASKDATA_DETAIL,					// 任务详细说明
	MTASKDATA_TARGET_NAME,				// 目标名字:目标物品名字、幻兽名字(其实也是物品)、目标人物名字
	MTASKDATA_DURA,						// 需要耐久度
	MTASKDATA_ADDITION,					// 需要追加 / 幻兽成长
	MTASKDATA_DEGREE,					// 需要等级 / 幻兽等级
	MTASKDATA_PRIZE_MONEY,				// 奖金
	MTASKDATA_PRIZE_ITEMID0,			// 奖品0 ~ 4
	MTASKDATA_PRIZE_ITEMID1,
	MTASKDATA_PRIZE_ITEMID2,
	MTASKDATA_PRIZE_ITEMID3,
	MTASKDATA_PRIZE_ITEMID4,
	MTASKDATA_RANK_REQ,					// 任务需要的佣兵等级
	MTASKDATA_ACCEPT_USERID,			// 接任务人ID
	MTASKDATA_ACCEPT_TIME,				// 接任务时间
	MTASKDATA_RESULT_ITEMID,			// 任务完成物品
	MTASKDATA_STATE,					// 任务状态
};

enum MTASKSTATE {
	MTASKSTATE_NONE	= 0,				//
	MTASKSTATE_ACCEPTED,				// 任务已经被接
	MTASKSTATE_FINISHED,				// 任务已完成,但还没领取奖品——主要是用于杀人的任务
	MTASKSTATE_COMPLETED,				// 任务已经完全结束
	MTASKSTATE_CANCELED,				// 任务已经被取消
	MTASKSTATE_CLOSED,					// 任务已经关闭——当任务被完成并且发布任务人也取走所要的物品后
};

struct ST_MTASK_DATA {
	OBJID		idTask;					// 任务ID
	OBJID		idUser;					// 发布任务人ID
	NAMESTR		szUserName;				// 发布任务人名字
	char		szTitle[32];			// 任务标题
	char		szDetail[128];			// 任务详细内容
	NAMESTR		szTargetName;			// 任务目标名字(可能是人物、物品、幻兽名字)

	UCHAR		ucType;					// 任务类型

	UCHAR		ucAddition;				// 需要追加 / 幻兽成长
	UCHAR		ucDegree;				// 需要等级 / 幻兽等级
	UCHAR		ucRankReq;				// 需要佣兵等级
	DWORD		dwDura;					// 需要耐久度

	OBJID		idAcceptUser;			// 接任务人ID
	DWORD		dwAcceptTime;			// 接任务时间
	OBJID		idResultItem;			// 任务完成物品ID
	UCHAR		ucTaskState;			// 任务状态
	
	DWORD		dwPrizeMoney;				// 奖金
	OBJID		idPrizeItems[_MAX_PRIZE];	// 奖品
};
//////////////////////////////////////////////////////////////////////
char	szMercenaryTaskTable[];
typedef CGameData<MTASKDATA, szMercenaryTaskTable, szID>		CGameMTaskData;

//////////////////////////////////////////////////////////////////////
class IDatabase;
class CItem;
class CMercenaryTaskData  : public CGameObj
{
public:
	CMercenaryTaskData();
	virtual ~CMercenaryTaskData();

	static CMercenaryTaskData* CreateNew()		{ return new CMercenaryTaskData; }
	ULONG	Release()				{ delete this; return 0; }
	ULONG	ReleaseByOwner()		{ delete this; return 0; }

public:
	bool	Create		(OBJID idTask, IDatabase* pDb);
	bool	Create		(IRecordset* pRes, IDatabase* pDb);

	bool	CreateRecord(const ST_MTASK_DATA* pInfo, IDatabase* pDb);
	bool	DeleteRecord();
	
public:
//	bool	IsFinished	()				{ return (GetInt(MTASKDATA_RESULT_ITEMID) != ID_NONE); }
//	bool	IsAccepted	()				{ return (GetInt(MTASKDATA_ACCEPT_USERID) != ID_NONE); }

public:	// get&set
	OBJID	GetID()			{ return m_pData->GetKey(); }

	int		GetInt(MTASKDATA idx)		{ return m_pData->GetInt(idx); }
	LPCTSTR	GetStr(MTASKDATA idx)		{ return m_pData->GetStr(idx); }
	void	SetInt(MTASKDATA idx, int nData, bool bUpdate = false)					{ m_pData->SetInt(idx, nData); if (bUpdate) m_pData->Update(); }
	void	SetStr(MTASKDATA idx, LPCTSTR szData, int nSize, bool bUpdate = false)	{ m_pData->SetStr(idx, szData, nSize); if (bUpdate) m_pData->Update(); }
	
	CItem*	GetItem(OBJID idItem);
	CItem*	PopItem(OBJID idItem);
	CItem*	GetItemByIndex(int nIndex);

	bool	AddResultItem(CItem* pItem, bool bUpdate = true);
	CItem*	GetResultItem()		{ return m_pResultItem; }
	CItem*	PopResultItem()		{ CItem* pItem = m_pResultItem; m_pResultItem = NULL; return pItem; }

protected:
	bool	LoadItems(IDatabase* pDb);

protected:
	CGameMTaskData*	m_pData;

	CItem*		m_pResultItem;
	typedef std::vector<CItem*>		ITEM_SET;
	ITEM_SET	m_setPrizeItem;

	MYHEAP_DECLARATION(s_heap)
};

#endif // !defined(AFX_MERCENARYTASKDATA_H__10522F05_A91D_4979_9240_BE2EDE9DFEBB__INCLUDED_)

⌨️ 快捷键说明

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