#pragma once #include #include "DominationInfoParser.h" #include typedef DominationInfoParser::DOMINATION_SCRIPT_INFO_MAP ScriptInfoMap; typedef DominationInfoParser::DOMINATION_SCRIPT_INFO_ITR ScriptInfoIterator; class DominationManager : public util::Singleton { public: enum {MAX_DOMINATIONINFOSET_TIME = 10*1000}; enum DominationLoadingStatus { DOMINATION_INFO_EMPTY, //Á¡·ÉÀü µ¥ÀÌÅͰ¡ ºñ¾îÀÖ´Ù. DOMINATION_INFO_LOADING, //Á¡·ÉÀü µ¥ÀÌÅÍ ·ÎµùÁßÀÌ´Ù. DOMINATION_INFO_SUCCESS, //Á¡·ÉÀü µ¥ÀÌÅÍ ·ÎµùÀÌ ¼º°øÇß´Ù. }; DominationManager(); ~DominationManager(); //ƯÁ¤½Ã°£ ¸¶´Ù Á¡·ÉÀü Á¤º¸¸¦ ¾÷µ¥ÀÌÆ® ÇÑ´Ù. void LoadDominationInfo(); //·ÎµåµÇÁö ¸øÇÑ Áö¿ª Á¤º¸ ¿äû void RequestDominationAuctionInfo(); //Áö¿ª Á¡·É ±âº» Á¤º¸¸¦ ³Ö´Â´Ù. void InsertDominationInfo(const DOMINATION_INFO& domination_info); //Áö¿ª Á¡·ÉÀü Á¤º¸¸¦ °ÔÀÓ ¼­¹ö·Î º¸³½´Ù. void SendDominationInfo(GameServerSession* server_session, MAPCODE map_code); //Áö¿ª Á¡·ÉÀü Á¤º¸ÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù. DOMINATION_INFO* FindDominationInfo(MAPCODE map_code); //Áö¿ª Á¡·É °æ¸Å ±âº» Á¤º¸¸¦ Map¿¡ ¼¼ÆÃ bool InsertActionInfo(MAPCODE map_code, const DominationAuctionInfo& domination_info); //Áö¿ª Á¡·É °æ¸Å Á¤º¸ send to GameServer void SendActionList(GameServerSession* server_session, MAPCODE map_code); //Áö¿ª Á¡·ÉÀü °æ¸Å Á¤º¸¸¦ Áö¿î´Ù. void ClearDominationActionInfo(MAPCODE map_code); //°æ¸Å ÇÏÀÓÀ» µ¹·Á ¹Þ´Â ±æµå ¸¶½ºÅÍ ¸®½ºÆ® ¸¸µé±â. bool SetListForReturnHeim(MAPCODE map_code, DOMINATION_RETURNMONEY_INFO* OUT return_info, DWORD max_data, INT& index_count); //Áö¿ªº° °æ¸Å Á¤º¸ ·Îµå ¼º°ø½Ã üũ void SetCheckActionInfo(MAPCODE map_code); //°æ¸Å Á¤º¸ ¸®½ºÆ®¿¡¼­ ÇØ´ç CharGuidÁ¤º¸¸¦ »èÁ¦ bool DeleteActionList(MAPCODE map_code, GUILDGUID guild_guild); //Á¡·ÉÀü Á¤º¸ ·Îµå ¿Ï·á ¼³Á¤ ¸Þ¼Òµå void SetLoadDominationInfo(bool is_success); bool GetLoadDominationInfo()const; //°æ¸Å Á¤º¸ ·Îµå ¿Ï·á ¼³Á¤ ¸Þ¼Òµå void SetLoadDominationAuctionInfo(bool is_success); bool GetLoadDominationAuctionInfo()const; #ifdef _NA_20100604_BETTER_DOMINATION_MANAGER //±æµåÀÇ Á¡·É Áö¿ª ¼ö ¸®ÅÏ WORD NumberOfDominationAreaByGuild(const GUILDGUID guild_guid); #endif #ifdef _NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN void SetLoadDominationMemberInfo(bool is_success); bool GetLoadDominationMemberInfo()const; void SetCheckMemberInfo(MAPCODE map_code); void SetCheckDominationMemberMap(); void RequestDominationMemberInfo(); void InsertDominationMemberInfo(MAPCODE map_code, const DominationMemberInfo& member_info); void DeleteDominationMemberInfo(MAPCODE map_code, CHARGUID char_guid); void SendMemberList(GameServerSession* server_session, MAPCODE map_code)const; void CheckCompleteLoadMemberData(); #endif private: //ÃʱâÈ­! void Initialize(); //Á¡·ÉÀü Á¤º¸ ·Îµå »óÅ¿¡µû¶ó ÇØ¾ßÇÒ ÀÏÀ» °áÁ¤ÇÑ´Ù. void DominationInfoStatusProc(); //Áö¿ª Á¡·ÉÀü ±âº» Á¤º¸¸¦ ·Îµå ÇÑ´Ù. void RequestDominationAreaInfo(); //Á¡·ÉÀü Áö¿ªÁ¤º¸¸¦ ÀúÀåÇÒ Àå¼Ò¸¦ ¸¸µç´Ù. bool InsertDominationMapInfo(MAPCODE map_code); //°æ¸Å ·Îµå Á¤º¸¸¦ ÃʱâÈ­ÇÑ´Ù. void SetCheckDominationActionMap(); //Á¡·ÉÀü ±âº» Á¤º¸(Áö¿ª,¸Ê)¸¦ ·Îµå Çß´ÂÁö üũ, ·Îµå ÇÏÁö ¸øÇßÀ¸¸é ÇØ´ç ºÎºÐ ·Îµå. bool CheckLoadingStatus(); //Á¡·ÉÀü ½ºÅ©¸³Æ®±âÁØÀ¸·Î ºñ¾îÀÖ´Â Á¡·ÉÀü Á¤º¸¸¦ ÃʱâÈ­ void SetEmptyDominationInfo(); //DBP·Î ÆÐŶ Send bool SendToDBProxy(MSG_BASE* msg, WORD size)const; //Á¡·ÉÀü Á¤º¸ ·Îµå ŸÀÌ¸Ó ¼³Á¤ ¸Þ¼Òµå void LoadingTimerSet(); void LoadingTimerDisable(); //ÃʱâÈ­ Ç÷¹±× ¼³Á¤ ¸Þ¼Òµå bool GetIsinit(); void SetIsInit(bool flag); //Á¡·ÉÀü ·Îµù »óÅ× ¼³Á¤ ¸Þ¼Òµå void SetDominationLoadingStatus(DominationLoadingStatus status); DominationLoadingStatus GetDominationInfoStatus(); //ÇöÀç Á¡·ÉÀü¿¡ ÇÊ¿äÇÑ ¸ðµç µ¥ÀÌÅÍ ·Îµå¸¦ ¿Ï·á ÇÏ¿´³ª? bool IsCompleteLoad(); //°æ¸Å µ¥ÀÌÅÍ ·Îµå¸¦ ¿Ï·á ÇÏ¿´³ª? void CheckCompleteLoadAuctionData(); private: bool is_load_domination_area_info_; bool is_load_domination_auction_info_; AreaInfoMap domination_area_info_map_; AllAreaAuctionInfoMap all_area_auction_info_map_; AuctionInfoLoadingCheckMap auction_info_loading_check_map_; util::Timer loading_timer_; DominationLoadingStatus loading_status_; bool is_init_; #ifdef _NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN bool is_load_domination_member_info_; MemberMap member_info_map_; MemberLoadCheckMap member_info_loading_check_map_; #endif }; inline void DominationManager::SetLoadDominationInfo(bool is_success) { is_load_domination_area_info_ = is_success; } inline bool DominationManager::GetLoadDominationInfo()const { return is_load_domination_area_info_; } inline void DominationManager::SetLoadDominationAuctionInfo(bool is_success) { is_load_domination_auction_info_ = is_success; } inline bool DominationManager::GetLoadDominationAuctionInfo()const { return is_load_domination_auction_info_; } inline void DominationManager::LoadingTimerSet() { loading_timer_.SetTimer(MAX_DOMINATIONINFOSET_TIME); } inline void DominationManager::LoadingTimerDisable() { loading_timer_.DisableCheckTime(); } inline bool DominationManager::GetIsinit() { return is_init_; } inline void DominationManager::SetIsInit(bool flag) { is_init_ = flag; } inline void DominationManager::SetDominationLoadingStatus(DominationLoadingStatus status) { loading_status_ = status; } inline DominationManager::DominationLoadingStatus DominationManager::GetDominationInfoStatus() { return loading_status_; } #ifdef _NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN inline void DominationManager::SetLoadDominationMemberInfo(bool is_success) { is_load_domination_member_info_ = is_success; } inline bool DominationManager::GetLoadDominationMemberInfo()const { return is_load_domination_member_info_; } #endif//_NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN