Files
2022-10-26 12:25:11 +08:00

65 lines
1.8 KiB
C++

#pragma once
#ifndef _GAMESERVER_HONORSYSTEM_HONORSYSTEM_H
#define _GAMESERVER_HONORSYSTEM_HONORSYSTEM_H
#ifdef _NA_003027_20111013_HONOR_SYSTEM
#include "QuestInfoManagerEx.h"
#include <CGuid.h>
#include <atltime.h>
class TodayQuestSystem
{
struct QUEST_TODAY_QUEST_INFO_EX : QUEST_TODAY_QUEST_INFO
{
CTime next_update_time;
};
typedef STLX_MAP<WORD, QUEST_TODAY_QUEST_INFO_EX> TodayQuestData;
TodayQuestData today_quest_data;
public:
TodayQuestSystem();
~TodayQuestSystem();
const QUEST_TODAY_QUEST_INFO_EX* GetTodayQuest(WORD group) const;
bool IsTodayQuest(WORD group, WORD code) const;
CTime GetNextUpdateTime(WORD qcode) const;
bool UpdateTodayQuest(bool force = false);
void Serialize(QUEST_TODAY_QUEST_INFO* _quest_info, WORD& _count);
__DISABLE_COPY(TodayQuestSystem);
};
//--------------------------------------------------------------------------------------------------
class HonorSystem : public util::Singleton<HonorSystem>
{
static const ulong kUpdateInterval = 60 * 1000;
util::ITimerBase update_timer_;
TodayQuestSystem today_quests_;
public:
HonorSystem();
~HonorSystem();
WORD GetFameReputeGrade(BYTE type, WORD code, DWORD point);
void ParseCGPacket(PVOID packet);
void ParseCGPacketTitle(PVOID packet);
void OnPACKET_CG_HONORSYSTEM_TITLE_CHANGE_CMD(PVOID packet);
void ParseDGPacket(PVOID packet);
void ParseDGPacketTitle(PVOID packet);
void ParseDGPacketFameRepute(PVOID packet);
void ParseDGPacketDailyQuest(PVOID packet);
void Update();
void ChoiceTodayQuest(bool force = false);
bool IsTodayQuest(WORD group, WORD code);
//
__DISABLE_COPY(HonorSystem);
};
#endif // _NA_003027_20111013_HONOR_SYSTEM
#endif //_GAMESERVER_HONORSYSTEM_HONORSYSTEM_H