#ifndef _SUIWorldMapMonsterRegion_h_ #define _SUIWorldMapMonsterRegion_h_ /// 2011.08.30 - prodongi #include "MonsterRespawnRegionExtractor.h" #include "PropRespawnRegionExtractor.h" class SUIWorldMapWnd; class KUIWnd; class KUIControl; struct sMonsterRegionInfo { public: sMonsterRegionInfo(); ~sMonsterRegionInfo(); void initialize(SUIWorldMapWnd* parentWnd); bool setQuestCode(int code, SUIWorldMapWnd *parentWnd); void apply(SUIWorldMapWnd* parentWnd, bool maxList); void refresh(SUIWorldMapWnd* parentWnd, bool maxList); void clearChild(SUIWorldMapWnd *parentWnd); void process(DWORD t); bool checkValidQuestCode(SUIWorldMapWnd* parentWnd); /// m_questCode가 유효한지 체크 private: void apply(int monsterId, SUIWorldMapWnd* parentWnd, bool maxList); bool checkIncludeRegion(KRect const& uiRect, int id); void setToolTip(); /// 퀘스트의 표시 속성이 npc일 때, npc 마크를 표시해 준다 void setQuestMarkTarget(int code); /// 완료 npc 리스트 설정 void setNpcList(int code, SUIWorldMapWnd *parentWnd); template void apply(int id, SUIWorldMapWnd *parentWnd, bool isMax, MAX_T* maxList, MIN_T* minList, int type); private: enum REGION_TYPE { MOB, ITEM }; enum { MIN_RECT_LEN = 20 }; struct sChildWnd { sChildWnd() {} sChildWnd(KUIWnd* wnd, int id, int type) { m_wnd = wnd; m_type = type; addToolTipList(id); } ~sChildWnd() { m_toolTipList.clear(); } void addToolTipList(int id) { std::vector::iterator it = std::find(m_toolTipList.begin(), m_toolTipList.end(), id); if (it == m_toolTipList.end()) m_toolTipList.push_back(id); } std::vector m_toolTipList; KUIWnd* m_wnd; int m_type; }; /* */ struct sNpcList { ~sNpcList() { clear(); } void clear(); void clearNpcId(); void hide(); /// m_wnd의 유효한 개수 체크 void checkValidWnd(SUIWorldMapWnd* parentWnd); void apply(SUIWorldMapWnd* parentWnd); std::vector m_npcId; std::vector m_wnd; }; typedef std::vector v_childWnd; typedef cMonsterRespawnRegionExtractor::sMonsterRegion ex_sMonsterRegion; typedef cPropRespawnRegionExtractor::sItemRegion ex_sItemRegion; std::map m_monsterMaxRegionList; std::map m_monsterMinRegionList; std::map m_itemMaxRegionList; std::map m_itemMinRegionList; v_childWnd m_childList; int m_questCode; std::vector m_mobList; std::vector m_itemList; sNpcList m_npcList; }; #endif