#include "stdafx.h" #include < Network/Session/Session.h> #include < Network/Dispatch/Dispatch.h > #include < Character/ModifyCharacter.h > // CModifyCharacterMgr ---------------------------------------------------------- // ÇØ´ç UID¸¦ ÆíÁýÁßÀÎ °ü¸®Àڵ鿡°Ô ÇØ´ç ÆÐŶÀ» º¸³½´Ù void CModifyCharacterMgr::isUIDSendAll(unsigned long dwUID, CBuffer* lpBuffer) { iterator pos = begin(); for(;pos != end(); ++pos) { CModifyCharacter* Character = pos->second; if(dwUID == Character->GetUID()) { CPacketDispatch* lpPacketDispatch = Character->GetDispatch(); if(NULL != lpPacketDispatch) { CSession& lpSession = lpPacketDispatch->GetSession(); lpSession.Send( /*lpBuffer*/ ); } } } } // ÆíÁý ÇϰíÀÚÇϴ ij¸¯Å͸¦ µî·ÏÇÑ´Ù. CModifyCharacter* CModifyCharacterMgr::InsertChar(unsigned long dwCID) { CModifyCharacter* lpModifyCharacter = CreateCharacter(); m_mapModifyChar.insert(std::make_pair(dwCID, lpModifyCharacter)); return lpModifyCharacter; } // ÆíÁýÀÌ ³¡³µ°Å³ª ÇØ´ç SessionÀÌ ´ÝÈ÷¸é ij¸¯Å͸¦ Áö¿öÁÖÀÚ. bool CModifyCharacterMgr::EraseChar(unsigned long dwCID) { isMapCharList::iterator itr = m_mapModifyChar.find(dwCID); if(itr != m_mapModifyChar.end()) { delete itr->second; m_mapModifyChar.erase(itr); return true; } return false; } // ¸®½ºÆ®¿¡ µî·ÏµÇ¾îÀִ ij¸¯Å͵¥ÀÌÅ͸¦ ã´Â´Ù CModifyCharacter* CModifyCharacterMgr::GetCharacter(unsigned long dwCID) { isMapCharList::iterator itr = m_mapModifyChar.find(dwCID); if(itr != m_mapModifyChar.end()) return itr->second; return NULL; } // ÇöÀç Dispatch¸¦ »ç¿ëÇϴ ij¸¯Å͸¦ ã¾Æ ÀüºÎ ¸®½ºÆ®¿¡¼­ »èÁ¦ void CModifyCharacterMgr::AllRemoveChar(CPacketDispatch* lpPacketDispatch) { isMapCharList::iterator itr = m_mapModifyChar.begin(); for(; itr != m_mapModifyChar.end();) { CPacketDispatch* lpDispatch = itr->second->GetDispatch(); if(lpDispatch == lpPacketDispatch) { delete itr->second; m_mapModifyChar.erase(itr++); } else { ++itr; } } }