/* ========================================================================== * ÆÄ ÀÏ : TriggerManager.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ±è°¡¶÷ * ÀÛ ¼º ÀÏ : 2008-01-24 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once enum eCheckTriggerResult { eCHECK_TRIGGER_SUCCESS = 0, ///üũ ¼º°ø eCHECK_TRIGGER_ERROR, ///üũ ¿¡·¯.(ÇöÀç °í·¹º§ Äù½ºÆ®¸¦ Á¦¿ÜÇÑ ³ª¸ÓÁö ¿¡·¯ °ªÀ» ±¸ºÐÇÏÁö ¾Ê´Â´Ù.) eCHECK_TRIGGER_NEXT_LEVEL_QUEST, /// °í·¹º§ Äù½ºÆ®ÀÓ }; const int NEXT_LEVEL_QUEST_GAP = 2; /// Æ®¸®°Å Á¤º¸ class cTrigger { friend class cQuestManager; friend class cTriggerManager; public: cTrigger(); private: /// ¹ß»ý Äù½ºÆ® À妽º unsigned long mQuestIndex; /// ÃÖÀú ·¹º§ short mLowLevel; /// ÃÖ°í ·¹º§ short mHighLevel; /// Á¾Á· short mRace[2]; /// ¼ºº° short mGender; /// °¡´ÉÇÑ Á÷¾÷ typedef tHashSet cJobSet; cJobSet mJobSet; /// º¸À¯ÇؾßÇÏ´Â ¾ÆÀÌÅÛ sQuestItem mHaveItem[QUEST_ITEM_MAX]; /// Äù½ºÆ®¸Å´ÏÀú - ¿Ï·á ¸ñ·Ï ÂüÁ¶ /// ÇÏÀ§ ¿¬°è Äù½ºÆ® À妽º typedef tArray cLinkQuestArr; cLinkQuestArr mLinkQuestArr; /// ¿äÀÏ Å¸ÀÔ short mDayCount; short mDayType[eDAY_MAX]; /// ½Ã°£ ¹üÀ§ short mStartHour; short mEndHour; /// º¯½Å ¸ó½ºÅÍ À妽º unsigned long mTransmonIndex; /// ŸÀÌÆ² À妽º unsigned long mTitleIndex; // º¸Á¶Á÷¾÷ À妽º (eMAKESKILL) unsigned char mMakeSkillIndex; // ¼÷·Ãµµ unsigned long mMakeSkillExp; // ÃÖ¼Ò unsigned long mMaxMakeSkillExp; // ÃÖ´ë }; /// Æ®¸®°Å ¸Å´ÏÀú class cTriggerManager { static cTriggerManager* mpSingleton; public: cTriggerManager(); ~cTriggerManager(); bool Init(); void Clear(); /// Äù½ºÆ® Ãß°¡ Á¶°Ç °¡´É¿©ºÎ ÆÇ´Ü eCheckTriggerResult CheckTrigger( unsigned long playerIdx, unsigned long questIdx ); /// Äù½ºÆ® ÁøÇà½Ã Á¶°Ç ÆÇ´Ü bool CheckDuty( unsigned long heroIdx, unsigned long otherIdx, unsigned long questIdx ); bool AddTrigger( unsigned long questIdx, cTrigger* trigger ); void DeleteTrigger( unsigned long questIdx ); /// ¸¸±âÀϰè»ê TIMESTAMP_STRUCT GetValidTime( unsigned long questIdx ); protected: cTrigger* GetTrigger( unsigned long questIdx ); public: static cTriggerManager* GetSingleton(); private: /// Æ®¸®°Å ¸Ê typedef tPointerHashMap cTriggerMap; cTriggerMap mTriggerMap; }; inline cTriggerManager* cTriggerManager::GetSingleton() { return mpSingleton; } #define TRIGGERMAN cTriggerManager::GetSingleton()