📄 gtaskstate.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 + -