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

📄 gtaskstate.h

📁 五行MMORPG引擎系统V1.0
💻 H
字号:
//GTask.h
/*/////////////////////////////////////////////////////////////////

   李亦
	liease@163.com 4040719
	2006-7-14
/*/////////////////////////////////////////////////////////////////
#ifndef _RPG__GTASKSTATE_H_
#define _RPG__GTASKSTATE_H_



#ifndef _RPG__GIDOBJECT_H_
#include "GIDObject.h"
#endif


namespace RPG
{
class GNpc;
class GTask;
class GPlayer;

#define	GTFIELD_TONPC				"toNpc"
#define	GTFIELD_TONPCPOS			"toNpcPos"
#define	GTFIELD_FROMNPC			"fromNpc"
#define	GTFIELD_FROMNPCPOS		"fromNpcPos"
#define	GTFIELD_GOALOBJ			"GoalObj"
#define	GTFIELD_GOALOBJREQ		"GoalObjReq"
#define	GTFIELD_TASKGOAL			"TaskGoal"
#define	GTFIELD_TASKGOALREQ		"TaskGoalReq"
#define	GTFIELD_TASKREQ			"TaskRequire"
#define	GTFIELD_TASKPREMIUM		"TaskPremium"
#define	GTFIELD_TASKPREMIUMREQ	"TaskPremiumReq"

#define	GTFIELD_TPIECEGOAL		"TPieceGoal"
#define	GTFIELD_TPIECEGOALREQ	"TPieceGoalReq"
#define	GTFIELD_TPIECEREQ			"TPieceRequire"
#define	GTFIELD_TPIECEPREMIUM		"TPiecePremium"
#define	GTFIELD_TPIECEPREMIUMREQ	"TPiecePremiumReq"




//////////////////////////////////////////////////
//
class GTaskState : public GIDObject
{
	typedef GIDObject Parent;
	friend class RPGDatabase;
protected:
	GNpc*							m_pNpc;
	GTask*						m_pTask;
	EGTaskStates				m_nState;
	Vector<EGTaskStates>		m_arPieceStates;
	GTaskPiece*		m_pCurPiece;
	//EGTaskStates	m_nCurPieceState;
public:
	GTaskState();

	void InitPieceStates(U32 nSize);
	BOOL SetPieceState(U32 nIndex,EGTaskStates state);
	BOOL SetTaskState(GTask* pTask,EGTaskStates state,GNpc* pNpc);
	void SetTaskState(EGTaskStates state);

	BOOL GetFitPiece(GTaskPiece*& pPiece,EGTaskStates& state ,U32 nIndex);
	BOOL GetFitPiece(GTaskPiece*& pPiece,EGTaskStates& nState,GNpc* pToNpc);

	BOOL SetCurPiece(U32 n);
	BOOL SetCurPiece(GTaskPiece* pPiece,EGTaskStates nState);
	BOOL ExecuteAllPiecePossible(GNpc* pNpc,GPlayer* pPlayer,U32 nBase,BOOL bRunNow);

	BOOL UpdateToNpcState();
	BOOL IsFitToNpc(GNpc* pNpc);
	BOOL IsTaskFinished(U32 nPieceIndex);
	BOOL IsAllPieceFinished();
	//EGTaskStates GetFitGoalObjState(GTaskPiece* pPiece,GNpc* pToNpc);
	//EGTaskStates GetFitGoalObjState(GTaskBase* pBase,EGTaskStates state, GNpc* pToNpc);
	CSTR GetDataBy(STE sField);
public:
	inline const GTaskPiece*  GetCurPiece()const{return m_pCurPiece;}
	//inline const EGTaskStates GetCurPieceState()const{return m_nCurPieceState;}

	inline const BOOL		IsValid()const{return m_nState > GTS_IDLE && m_nState < GTS_FINISHED;}
	inline const BOOL		IsFinished()const{return m_nState == GTS_FINISHED;}
	inline GNpc*	GetNpc()	const{return m_pNpc;}
	inline GTask*	GetTask()const{return m_pTask;}
	inline EGTaskStates GetState()const{return m_nState;}
	inline void SetState(EGTaskStates s) {m_nState=s;}
	EGTaskStates GetPieceState(U32 n)const;

	inline operator const GNpc* (){return m_pNpc;}
	inline operator const GTask* (){return m_pTask;}
	inline operator const EGTaskStates (){return m_nState;}

	inline EGTaskStates operator [](U32 n)const{return GetPieceState(n);}
	inline EGTaskStates operator [](S32 n)const{return GetPieceState(n);}

public:
	static BOOL ToggleTaskState(GTask* pTask,GTaskPiece* pPiece,EGTaskStates nState,GPlayer* pChar,GNpc* pNpc);
	static BOOL RunTaskState(GNpc* pNpc,GPlayer* pPlayer);
};//GTaskState


/////////////////////////////////////////////////////
extern GTaskState*	g_pGTaskState;

/////////////////////////////////////////////////////
//inline const GTaskPiece*	GTaskState::GetCurPiece()const
//{
//	if(m_nPieceIndex >= m_arPieceStates.size())
//		return NULL;
//	return m_pTask->GetTaskPiece(m_nPieceIndex);
//}

inline void GTaskState::SetTaskState(EGTaskStates state)
{
	m_nState = state;
}


inline EGTaskStates GTaskState::GetPieceState(U32 n)const
{
	AssertWarn(n < m_arPieceStates.size(),"超出PieceStates范围");
	if(n >= m_arPieceStates.size())
		return GTS_NULL;

	return m_arPieceStates[n];
}



};//namespace RPG
#endif //_RPG__GTASKSTATE_H_

⌨️ 快捷键说明

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