DragonNest/Server/DNGameServer/DnDLGameTask.h
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

77 lines
No EOL
2.8 KiB
C++

#pragma once
#include "DnGameTask.h"
class CDLItemRespawnLogic;
class CDnDLGameTask : public CDnGameTask
{
public:
CDnDLGameTask( CMultiRoom *pRoom );
virtual ~CDnDLGameTask();
enum ChallengeResponseEnum
{
Response_None = 0,
Response_Challenge,
Response_Deny,
};
protected:
int m_nTotalRound;
int m_nCurrentRound;
#if defined( PRE_ADD_CHALLENGE_DARKLAIR )
bool m_bChallengeDarkLair;
#endif // #if defined( PRE_ADD_CHALLENGE_DARKLAIR )
TDLRankHistoryPartyInfo m_CurrentRankInfo;
bool m_bCheckDungeonClear;
ChallengeResponseEnum m_ChallengeResponseEnum;
#ifdef PRE_MOD_DARKLAIR_RECONNECT
bool m_bBossRound;
#endif // PRE_MOD_DARKLAIR_RECONNECT
protected:
void ResetRound( bool bMakeQueryData = false );
void MakeHistoryInfo( TDLRankHistoryPartyInfo *pInfo, SDarkLairHistory *pHistory );
void MakeHistoryInfo( TDLRankHistoryPartyInfo *pInfo, SDarkLairBestHistory *pHistory );
public:
int GetRound() { return m_nCurrentRound; }
int GetTotalRound() { return m_nTotalRound; }
void SetStartRound( int iRound );
#ifdef PRE_MOD_DARKLAIR_RECONNECT
void UpdateRound( int iNextTotalRound, bool bBoss );
#else // PRE_MOD_DARKLAIR_RECONNECT
void UpdateRound( int iNextTotalRound );
#endif // PRE_MOD_DARKLAIR_RECONNECT
#if defined(PRE_ADD_CHALLENGE_DARKLAIR)
bool IsChallengeDarkLair() { return m_bChallengeDarkLair; }
#endif
virtual bool InitializeStage( int nCurrentMapIndex, int nGateIndex, TDUNGEONDIFFICULTY StageDifficulty, int nRandomSeed, bool bContinueStage, bool bDirectConnect, int nGateSelect );
virtual bool InitializeNextStage( const char *szGridName, int nMapTableID, TDUNGEONDIFFICULTY StageDifficulty, int nStartPositionIndex );
virtual void Process( LOCAL_TIME LocalTime, float fDelta );
virtual bool PostInitializeStage( int nRandomSeed );
virtual void OnGhost( DnActorHandle hActor );
virtual void RequestDungeonClear( bool bClear = true, DnActorHandle hIgnoreActor = CDnActor::Identity(), bool bIgnoreRewardItem = false );
virtual void ChangeDungeonClearState( DungeonClearStateEnum State );
virtual bool ProcessDungeonClearState( LOCAL_TIME LocalTime, float fDelta );
virtual int OnRecvRoomSelectRewardItem( CDNUserSession * pSession, CSSelectRewardItem *pPacket );
void CheckAndRequestDungeonClear( DnActorHandle hActor = CDnActor::Identity() );
void ClearChallengeResponse(){ m_ChallengeResponseEnum = Response_None; }
ChallengeResponseEnum GetChallengeResponse() const { return m_ChallengeResponseEnum; }
virtual int OnRecvRoomDLChallengeResponse( CDNUserSession* pSession, CSDLChallengeResponse* pPacket );
int GetStartFloor();
#if defined(PRE_MOD_DARKLAIR_RECONNECT)
virtual bool OnInitializeBreakIntoActor( CDNUserSession* pSession, const int iVectorIndex );
#endif // PRE_MOD_DARKLAIR_RECONNECT
private:
CDLItemRespawnLogic* m_pItemRespawnLogic;
};