#pragma once #ifndef RANKING_LIB_MISSION_RANKING_H #define RANKING_LIB_MISSION_RANKING_H //================================================================================================== /// MissionRanking class /** @author Kim Min Wook < taiyo@webzen.com > @since 2006. 8. 22 @remark - ¹Ì¼Ç Çϳª´ç ·©Å· Á¤º¸ÀÇ ´ÜÀ§ Ŭ·¡½º @note - ÃʱâÈ­½Ã ¼øÀ§·Î Á¤·ÄµÈ »óÅ·ΠÁ¸ÀçÇÑ´Ù. @history - ~2011.05.12, - 2011.05.12, waverix, code rearrangements */ //================================================================================================== #include "./MissionRankingRecord.h" class ArchiveOfStream; class RankingManager; //================================================================================================== // class MissionRanking { __DECL_CUSTOMPOOL_PTR(MissionRanking); public: typedef STLX_VECTOR RANKING_INFO_LIST; // MissionRanking(); ~MissionRanking(); void Release(); int GetRecordCount() const; MissionRankingRecord* FindRanking(RANKINGKEY key) const; // properties RANKINGNO GetMissionNo() const; eRANKING_SYSTEM_TYPE GetRankingType() const; // ranking information building interfaces using streaming void Serialize(BYTE page, ArchiveOfStream& ar, eRANKING_SERIALIZE se); void SerializeForClient(BYTE page, ArchiveOfStream& ar, eRANKING_SERIALIZE se); // ranking information building interfaces void AddRanking(RANKINGKEY key, MissionRankingRecord* record); MissionRankingRecord* AddRanking_Info(RANKINGKEY key, DWORD clear_time, int64_t register_time); void Sort(); void RemoveTailOrderRecord(int count = 1); RANKING GetRanking(RANKINGKEY key) const; MissionRankingRecord* GetRecordOrder1() const; RANKING_INFO_LIST& GetMemberHash(); #ifdef _SERVER void Display() const; #endif #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM //ÀÚ½ÅÀÌ ¼ÓÇÑ ·©Å··¹ÄÚµå(ÆÄƼ)¸¦ ã´Â´Ù. MissionRankingRecord* FindMyBestRankingRecord(const TCHAR* _charname, eRANKING_SYSTEM_TYPE _ranking_system_type); //º¸»ó¹ÞÀ»¼öÀÖ´Â ¹Ì¼Ç¸®½ºÆ®Áß ¾ÆÁ÷ º¸»ó ¾È¹ÞÀº ¸®½ºÆ®¸¦ °¡Á®¿Â´Ù. void GetRewardableMissionList(const TCHAR* _charname, RANKINGID id, STLX_VECTOR& mission_list_container); #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM private: typedef STLX_HASH_MAP RANKING_INFO_HASH; void SetMissionNo(RANKINGNO mission_number); void SetRankingType(eRANKING_SYSTEM_TYPE ranking_type); #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR bool SetRankingAllRecords(); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR // // data fields... RANKINGNO mission_number_; uint8_t ranking_type_; RANKING_INFO_HASH ranking_info_table_; RANKING_INFO_LIST ranking_info_list_; // friend class RankingManager; }; //================================================================================================== // inline implements inline int MissionRanking::GetRecordCount() const { return static_cast(ranking_info_list_.size()); } inline MissionRankingRecord* MissionRanking::FindRanking(RANKINGKEY key) const { RANKING_INFO_HASH::const_iterator it = ranking_info_table_.find(key); if (it == ranking_info_table_.end()) { return NULL; }; MissionRankingRecord* record = it->second; return record; } inline MissionRankingRecord* MissionRanking::GetRecordOrder1() const { return ranking_info_list_.front(); } inline MissionRanking::RANKING_INFO_LIST& MissionRanking::GetMemberHash() { return ranking_info_list_; } inline RANKINGNO MissionRanking::GetMissionNo() const { return mission_number_; }; inline eRANKING_SYSTEM_TYPE MissionRanking::GetRankingType() const { return static_cast(ranking_type_); } inline void MissionRanking::SetMissionNo(RANKINGNO mission_number) { mission_number_ = mission_number; } inline void MissionRanking::SetRankingType(eRANKING_SYSTEM_TYPE ranking_type) { ranking_type_ = static_cast(ranking_type); } // __inline void FREE_RANKING(MissionRanking* p) { p->Release(); MissionRanking::FREE(p); } #endif //RANKING_LIB_MISSION_RANKING_H