//------------------------------------------------------------------------------ // DelayLoadManager.cpp // (C) 2010 Webzen Sunstudio //------------------------------------------------------------------------------ #include "SunClientPrecompiledHeader.h" #include "DelayLoadManager.h" #include "Player.h" #include "ObjectManager.h" //------------------------------------------------------------------------------ /** ÄÁÅ×ÀÌ³Ê Å©±â ¹× ·Îµå,ÄÝŸÀÔ ¼³Á¤ */ DelayLoadManager::DelayLoadManager() { delay_time_[kProcessDelay] = 200; delay_time_[kLoadDelay] = 30; } //------------------------------------------------------------------------------ /** */ DelayLoadManager::~DelayLoadManager() { clear(); } //------------------------------------------------------------------------------ /** ÀÌÅ¢Á¤º¸¸¦ ¹Þ¾ÒÀ»¶§¸¸ ó¸®ÇÑ´Ù ÇöÀç ¼½ÅÍÁ¤º¸¸¦ ¹ÞÀ»¶§ ÆÐŶÀÌ ³ª´µ¾î¼­ ¿À±â¶§¹®¿¡ EquipÁ¤º¸¸¦ ¹Þ¾Ò´ÂÁö Ã¼Å©ÇØ¾ßµÈ´Ù! 1¹ø ÆÐŶ---> ALLPLAYERS_CMD 2¹ø ÆÐŶ---> ALLPLAYERS_EQUIPINFO_CMD */ void DelayLoadManager::Process() { static DWORD process_check_time = 0; if ((clock_function::GetTickCount() - process_check_time) < delay_time_[kProcessDelay]) { return; } DWORD check_tick = clock_function::GetTickCount(); LOAD_PALYER_LIST_ITR list_itr = load_player_list_.begin(); LOAD_PALYER_LIST_ITR current_itr; while ( list_itr != load_player_list_.end()) { current_itr = list_itr; ++list_itr; // ·Îµù½Ã°£Ã¼Å© if ((clock_function::GetTickCount() - check_tick) > delay_time_[kLoadDelay]) { break; } Player* player_ptr =static_cast(g_ObjectManager.GetObject(*current_itr)); if (player_ptr) { // ÀÌÅ¢Àåºñ°¡ ¼ÂÆÃµÇÁö¾Ê¾ÒÀ»°æ¿ì(Àåºñ¹× Æê.¶óÀÌ´õ·Îµå¾ÈÇÔ) if (player_ptr->receive_equip_info() == false) { continue; } // STEP1:ÁÖÀΰøÀåºñ·Îµå if (player_ptr->IsUseDelayLoading() == true) { // Player ÆÄÃ÷·Îµå player_ptr->SetUseDelayLoading(false); player_ptr->RefreshAppearRender(); // ·Îµù½Ã°£Ã¼Å© if ((clock_function::GetTickCount() - check_tick) > delay_time_[kLoadDelay]) { break; } } // STEP2:¶óÀÌ´õ.Æê·Îµå player_ptr->RefreshAppearRider(); player_ptr->RefreshAppearPet(); } // STEP3:¸®½ºÆ®¿¡¼­ Áö¿î´Ù load_player_list_.erase(current_itr); } process_check_time = clock_function::GetTickCount(); } //------------------------------------------------------------------------------ /** Áö¿¬·Îµù ¸®½ºÆ®¿¡ Ç÷¹À̾î ۰ªÀ» »ðÀÔÇÑ´Ù(À̹̻ðÀԵȰÍÀº »ðÀÔ¾ÈÇÔ) */ void DelayLoadManager::InsertPlayer(DWORD player_key) { //ÀÌ¹Ì »ðÀԵǾîÀÖ´ÂÁö üũÇÑ´Ù Object* object_ptr = g_ObjectManager.GetObject(player_key); if (object_ptr == NULL) { return; } if (object_ptr->IsUseDelayLoading()) { return; } object_ptr->SetUseDelayLoading(true); load_player_list_.push_back(player_key); }