#pragma once //======================================================================================================================= /// QuestManager_Concrete class /** @author Kim Min Wook < taiyo@webzen.com > @modify Yu Jae Young < y2jinc@webzen.com > @since 2006. 4. 4 @remarks - ·ÎÁ÷¿¡¼­ Äù½ºÆ®¸¦ ´Ù·ê ¶§ »ç¿ëÇÏ´Â Åë·Î Ŭ·¡½º @description - QuestManager¸¦ »ó¼Ó - QuestManagerÀÇ virtual void OnEvent( Quest * pQuest )¸¦ ±¸Çö »ó¼Ó @scenario 1. DB·ÎºÎÅÍ (ÁøÇàÁßand¿Ï·áµÈ)Äù½ºÆ®ÀÇ Á¤º¸¸¦ ¹Þ¾Æ¼­ Player¸¶´Ù Quest°´Ã¼¸¦ QuestManager¸¦ ÅëÇØ¼­ »ý¼ºÇÑ´Ù(CreateQuest()) 2. ÃʱâÈ­µÈ QuestManager_Concrete´Â À̺¥Æ®°¡ ¹ß»ý½Ã¿¡ ·ÎÁ÷ÀÇ À̺¥Æ®(Event())¸¦ È£ÃâÇØÁÖ°í ¸ó½ºÅÍ Å³ÀÏ °æ¿ì Ŭ¶óÀÌ¾ðÆ®·Î ¾Ë·ÁÁØ´Ù 3. Ŭ¶óÀ̾ðÆ®ÀÇ ÆÐŶÀÇ ¿äû¿¡ µû¶ó Á¶°Çüũ¿Í ¾×¼ÇÀÌ ÀϾ°í, ÀÀ´äÀ» ÇØÁØ´Ù @history - */ //======================================================================================================================= #include #include #include "QuestCondition_Concrete.h" #include "QuestAction_Concrete.h" #include "QuestDefine.h" class Quest; class QuestManager_Concrete : public QuestManager { public: QuestManager_Concrete(QuestInfoManager * pmgr):QuestManager(pmgr){} virtual ~QuestManager_Concrete(){} // DB·Î ºÎÅÍ ¿ÔÀ» ¶§ // Äù½ºÆ® °´Ã¼¸¦ ¹Ì¸® ¸¸µé¾î¼­ ³õ´Â´Ù.Manager¿¡ Quest¸¦ µî·ÏÇØµÐ´Ù. // ±×¸®°í MonsterKillConditionÀÌ addµÉ¶§ EstablishÇÑ´Ù? // // VOID SerializeStream( QUEST_PROGR_TOTAL_INFO & IN rTotalInfo, eQUEST_SERIALIZE eType ); // Ŭ¶óÀÌ¾ðÆ®¿¡¼­¸¸ È£ÃâÇØÁØ´Ù. ±»ÀÌ ¼­¹ö¿¡¼­´Â ½Ã°£ üũ´Â ºÎÇϸ¦ ÁÙ ÇÊ¿ä¾ø´Ù. // void Update(); // ·ÎÁ÷¿¡¼­ È£ÃâÇØÁØ´Ù. // void Event( eQUEST_EVENT evt, QUEST_MSG * pMsg ); // void Event( QCODE QCode, eQUEST_EVENT evt, QUEST_MSG * pMsg ); // 󸮿Ϸá ------------------------------------------------------------------------------------ // Ŭ¶óÀÌ¾ðÆ®·Î ºÎÅÍ Á¶°Çüũ ÆÐŶÀÌ ¿Â ¼ø°£ ó¸®ÇØ ÁØ´Ù // BOOL CanAccept( QCODE qCode, void * pvParam ); // BOOL CanComplete( QCODE qCode, void * pvParam ); void Init(WORD wPoolSize); void RecvQuestStream(MSG_CG_QUEST_STREAM_CMD* pcmd); #ifdef _NA_003027_20111013_HONOR_SYSTEM void RecvGroupQuestInfo(MSG_CG_QUEST_TODAYQUEST_INFO_CMD* group_quest_info); QCODE GetTodayQuestCode(WORD group_code); #endif //_NA_003027_20111013_HONOR_SYSTEM inline void SetPlayer(Hero* pPlayer) { m_pPlayer = pPlayer; } void OnEventForClient(eQUEST_EVENT evt, QUEST_MSG* pMsg, Quest* pQuest); void OnEventQuestTime(Quest* pQuest); protected: // Äݺ¤ÀÌ µÇ´Â ºÎºÐ virtual void OnEvent( eQUEST_EVENT evt, QUEST_MSG * pMsg, Quest * pQuest ); // ÇÏÀ§ Ŭ·¡½º¿¡¼­ ±¸ÇöÀ» ÇØ¾ß ÇÏ´Â ºÎºÐ virtual QuestCondition * CreateQuestCondition( QuestConditionInfo * pInfo ); virtual QuestAction * CreateQuestAction( QuestActionInfo * pInfo ); virtual void DestroyQuestCondition( QuestCondition * pCondition ); virtual void DestroyQuestAction( QuestAction * pAction ); private: Hero * m_pPlayer; // condition util::CMemoryPoolFactory m_QUEST_CONDITION_REPEAT; util::CMemoryPoolFactory m_QUEST_CONDITION_CHARLV; util::CMemoryPoolFactory m_QUEST_CONDITION_CHARCLASS; util::CMemoryPoolFactory m_QUEST_CONDITION_CHAO; util::CMemoryPoolFactory m_QUEST_CONDITION_QUEST; util::CMemoryPoolFactory m_QUEST_CONDITION_ITEM; util::CMemoryPoolFactory m_QUEST_CONDITION_CLASSITEM; util::CMemoryPoolFactory m_QUEST_CONDITION_MONEY; util::CMemoryPoolFactory m_QUEST_CONDITION_KILLMONSTER; util::CMemoryPoolFactory m_QUEST_CONDITION_MISSION; util::CMemoryPoolFactory m_QUEST_CONDITION_AREA; util::CMemoryPoolFactory m_QUEST_CONDITION_HONOR_RATING; #ifdef _NA_006607_20130402_ADD_QUESTTYPE util::CMemoryPoolFactory m_QUEST_CONDITION_MISSION_CLEAR; #endif // _NA_006607_20130402_ADD_QUESTTYPE // action util::CMemoryPoolFactory m_QUEST_ACTION_ITEM; #ifdef _NA_003027_20111013_HONOR_SYSTEM typedef STLX_MAP GROUP_QUEST_MAP; GROUP_QUEST_MAP group_quest_map_; #endif //_NA_003027_20111013_HONOR_SYSTEM }; extern FILE * g_pQuestStreamFile; extern QuestManager_Concrete * g_pQMGR_Temp; extern QuestManager_Concrete * g_pQMGR_Real; extern QUEST_PROGR_TOTAL_INFO g_ClientQuestProgressTotalInfo; extern QUEST_COMPL_TOTAL_INFO g_ClientQuestCompleteTotalInfo;