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

112 lines
No EOL
3.9 KiB
C++
Raw Permalink Blame History

#pragma once
#include "DNEventSystem.h"
class CDNUserSession;
class CDNMissionSystem:public TBoostMemoryPool<CDNMissionSystem>
{
public:
CDNMissionSystem( CDNUserSession *pUser );
virtual ~CDNMissionSystem();
public:
enum DailyMissionTypeEnum {
Daily,
Weekly,
GuildWar,
PCBang,
GuildCommon,
WeekendEvent,
WeekendRepeat,
#if defined(PRE_ADD_MONTHLY_MISSION)
Monthly,
#endif // #if defined(PRE_ADD_MONTHLY_MISSION)
DailyMissionTypeEnum_Amount,
};
protected:
CDNUserSession *m_pUserSession;
std::vector<int> m_nVecMissionGainList[EventSystem::EventTypeEnum_Amount];
std::vector<int> m_nVecMissionAchieveList[EventSystem::EventTypeEnum_Amount];
std::vector<int> m_nVecDailyMissionList[DailyMissionTypeEnum_Amount][EventSystem::EventTypeEnum_Amount];
#if defined(PRE_ADD_ACTIVEMISSION)
TActiveMissionData * m_pActiveMission;
ActiveMission::ActiveMissionState m_ActiveMissionState;
#endif
CSyncLock m_Lock;
protected:
bool CheckMetaMissionAchieveEvent( TMissionData *pData );
void RequestDailyMissionReward( int nItemID );
void UpdateLastAchieveList( int nArrayIndex );
void RefreshOnOffMissionList();
void RefreshDailyMissionList();
void RefreshWeeklyMissionList();
void RefreshWeekendEventMissionList();
void RefreshGuildWarMissionList();
void RefreshPCBangMissionList();
void RefreshGuildCommonMissionList();
void RefreshWeekendRepeatMissionList();
#if defined( PRE_ADD_MONTHLY_MISSION )
void RefreshMonthlyMissionList();
#endif // #if defined( PRE_ADD_MONTHLY_MISSION )
void OnGainMission( int nArrayIndex );
void OnAchieveMission( int nArrayIndex );
void OnCounterDailyMission( DailyMissionTypeEnum Type, int nArrayIndex, int nCounter );
void OnAchieveDailyMission( DailyMissionTypeEnum Type, int nArrayIndex, bool bSecret = false );
void OnEventPopUp( int nArrayIndex );
void OnHelpAlarm( int nArrayIndex );
public:
bool LoadUserData();
TDailyMission * GetDailyMission(CDNMissionSystem::DailyMissionTypeEnum iMissionType,int nArrayIndex);
void CheckMissionGain( EventSystem::EventTypeEnum Event );
void CheckMissionAchieve( EventSystem::EventTypeEnum Event ,std::vector<int> &nVecAchieveList );
void CheckDailyMissionAchieve( EventSystem::EventTypeEnum Event );
#if defined(PRE_ADD_ACTIVEMISSION)
void ResetActiveMission();
void SetActiveMission( TActiveMissionData *pData );
int CheckActiveMissionAchieve( EventSystem::EventTypeEnum Event );
#endif
void ApplyPCBangMissionEffect( EventSystem::EventTypeEnum Event );
void AddGuildPoint(TDailyMission * pDailyMission);
bool AddGuildWarPoint( TDailyMission * pDailyMission, EventSystem::EventTypeEnum Event, TMissionGroup * pMission, int nArrayIndex );
bool OnEvent( EventSystem::EventTypeEnum Event );
void OnGuildWarEvent (EventSystem::EventTypeEnum Event);
void RequestDailyMissionList( DailyMissionTypeEnum Type, int nRandomSeed, bool bSend = true );
void RequestDailyMissionAlarm( DailyMissionTypeEnum Type );
// ġƮ<C4A1><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>.
void RequestForceGainMission( int nItemID );
void RequestForceAchieveMission( int nItemID );
void RequestForceGainDailyMission( int nCount, ... );
void RequestForceAchieveDailyMission( int nItemID );
void RequestForceGainWeeklyMission( int nCount, ... );
#if defined(PRE_ADD_MONTHLY_MISSION)
void RequestForceAchieveMonthlyMission( int nItemID );
void RequestForceGainMonthlyMission( int nCount, ...);
#endif // #if defined(PRE_ADD_MONTHLY_MISSION)
void RequestForceAchieveWeeklyMission( int nItemID );
void RequestForceAchieveGuildWarMission( int nItemID );
void RequestForceAchieveGuildCommonMission( int nItemID );
void RequestMissionReward( int nArrayIndex );
bool bIsDailyMission( const int nItemID );
bool bIsWeeklyMission( const int nItemID );
#if defined(PRE_MOD_MISSION_HELPER)
bool bIsCommonMission( const int nItemID );
bool bCheckDailyMission( const int nItemID, DNNotifier::Type::eType eType );
#endif
bool bIsGuildWarMission();
bool InitGuildWarMissionList( bool bCheckAchieve );
bool bIsAchieveMission( const int nItemID ) const;
};