#pragma once #ifndef SERVER_GAMESERVER_SUNRANKINGGRADEMANAGER_H #define SERVER_GAMESERVER_SUNRANKINGGRADEMANAGER_H #ifdef _NA_008012_20150204_SUN_RANKING_SYSTEM enum eLOAD_KIND { eLOAD_KIND_START = 0, eLOAD_KIND_RANKING_SELECT = eLOAD_KIND_START, eLOAD_KIND_GRADE_SELECT, eLOAD_KIND_END, }; static eLOAD_KIND& operator++(eLOAD_KIND& object) { if (object != eLOAD_KIND_END) { object = static_cast(object + 1); } return object; } typedef std::map SunRankingGradeInfos; typedef std::map SunRankingGrades; class SunRankingGradeManager : public util::Singleton { public: SunRankingGradeManager(); ~SunRankingGradeManager(); void Initialize(); void Update(); void Display(); eSUN_RANKING_STATE GetState(){ return m_sun_ranking_state; }; void SetState(eSUN_RANKING_STATE state); void Settle(); void Settle_StartForGM(); void Settle_SendMemo(); void Settle_Complete(); void SetGradeInfo(SunRankingGradeInfo& grade_info); bool GetGradeInfo(CHARGUID char_guid, SunRankingGradeInfos& infos); void GetTopGrade(CHARGUID char_guid, eSUN_RANKING_GRADE_TYPE& top_grade, eSUN_RANKING_TYPE& top_ranking_type); eSUN_RANKING_GRADE_TYPE GetGrade(const CHARGUID& char_guid, const eSUN_RANKING_TYPE& ranking_type); void SetLoadComplete(eLOAD_KIND load_kind); bool IsLoadComplete(eLOAD_KIND load_kind); bool IsSettleChannel(); void ReUse(); VOID SetAllGradeInfos(SunRankingGradeInfo* infos, INT data_count); private: bool _IsSettleTime(); SunRankingGrades m_sun_ranking_grades; eSUN_RANKING_STATE m_sun_ranking_state; util::Timer m_update_timer_; util::Timer m_reload_timer; int m_last_settle_day; bool m_load_complete[eLOAD_KIND_END]; enum { UPDATE_TIME = 1000 * 10, // ¶óÀÌºê ¾÷µ¥ÀÌÆ® ÁÖ±â DEV_UPDATE_TIME = 1000, // °³¹ß ¾÷µ¥ÀÌÆ® ÁÖ±â RELOAD_TIME = 1000 * 60 * 2 // ¶óÀÌºê ¸®·Îµå ½Ã°£ }; BOOL grade_initialization; }; #endif // _NA_008012_20150204_SUN_RANKING_SYSTEM #endif // SERVER_GAMESERVER_SUNRANKINGGRADEMANAGER_H