/* ========================================================================== * ÆÄ ÀÏ : QuestDefine.h * ¸ñ Àû : Äù½ºÆ®½ºÅ©¸³Æ® * ÀÛ ¼º ÀÚ : ±è°¡¶÷ * ÀÛ ¼º ÀÏ : 2008-01-18 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Quest_Common.h" /// ¼öÇà Á¤º¸ ( ´ë»ó À妽º, (¼öÇàŸÀÔ, °¹¼ö) ) /// ( Á¶°ÇÀº ÇÏÀ§ºñÆ®ºÎÅÍ Ã¤¿öÁø´Ù ) struct sDuty { eDutyType dutyType; unsigned long targetIdx; unsigned int count; unsigned long skillIndex; bool enhance; bool putcard; sDuty::sDuty() { dutyType = eDUTY_NONE; targetIdx = 0; count = 0; skillIndex = 0; enhance = false; putcard = false; } }; // Äù½ºÆ® À̹ÌÁö Á¤º¸ struct sQuestInfoData { unsigned short mapIndex; // Ç¥½Ã ¸Ê À妽º unsigned short x; // È­¸é»ó x unsigned short y; // È­¸é»ó y float scale; // ºñÀ² ( ±âº» 1.0 ) unsigned char showName; // À̸§Ç¥½Ã( 1: Ç¥½Ã, 0: ¹ÌÇ¥½Ã ) sQuestInfoData() { mapIndex = 0; x = 0; y = 0; scale = 1.0f; showName = true; } }; // Äù½ºÆ® µµ¿ò Á¤º¸ class cQuestInfo { friend class cQuestManager; public: cQuestInfo() {} ~cQuestInfo() {} public: sQuestInfoData mData[MAX_DUTY]; }; /// Äù½ºÆ® ÀÓ¹« class cQuestDuty { friend class cQuestManager; public: cQuestDuty() {} ~cQuestDuty() {} public: /// ¼öÇàÁ¤º¸ sDuty mDuty[MAX_DUTY]; }; /// Äù½ºÆ® ¼öÇà Á¦¾à ¹× ¼öÇà½Ã Á¦°ø class cQuestLimit { friend class cQuestManager; public: cQuestLimit(); public: /// Á¦¾à ¹öÇÁ unsigned long mLimitBuff[QUEST_BUFF_MAX]; /// Á¦¾à µð¹öÇÁ unsigned long mLimitDeBuff[QUEST_BUFF_MAX]; /// Á¦¾à »ç¿ë ¾ÆÀÌÅÛ (ÀåÂø) unsigned long mLimitEquipItem[QUEST_ITEM_MAX]; /// Á¦Çѽð£Å¸ÀÔ ( 0 :¹«Á¦ÇÑ, 1:½Ç½Ã°£, 2:°ÔÀӽð£ ) unsigned char mTimeType; /// Á¦Çѽð£ unsigned long mTime; /// ¸ÊÀ̵¿ À妽º unsigned long mMapChangeIndex; /// ¼Òȯ ¸ó½ºÅÍ °íÀ¯¹øÈ£ unsigned long mMonsterClassIndex; unsigned int mMonsterCount; unsigned long mMonsterTime; /// Äù½ºÆ® ºÎ¿©½Ã ÁÖ´Â ¾ÆÀÌÅÛ Á¤º¸ sQuestItem mGiveItem[QUEST_ITEM_MAX]; /// ÁöºÒÇÒ ±Ý¾× unsigned long mTakeMoney; /// ÁöºÒÇÒ Æ÷ÀÎÆ® unsigned long mTakeFire; unsigned long mTakeWater; unsigned long mTakeWind; unsigned long mTakeEarth; /// º¯°æÇÒ Æ©Å丮¾ó ¸ðµå int mTutorialModeIndex; }; inline cQuestLimit::cQuestLimit() : mTime(0) , mTimeType(0) , mMapChangeIndex(0) , mMonsterClassIndex(0) , mMonsterCount(0) , mMonsterTime(0) , mTakeMoney(0) , mTakeFire(0) , mTakeWater(0) , mTakeWind(0) , mTakeEarth(0) , mTutorialModeIndex(-1) { memset( &mLimitBuff, 0, sizeof(mLimitBuff) ); memset( &mLimitDeBuff, 0, sizeof(mLimitDeBuff) ); memset( &mLimitEquipItem, 0, sizeof(mLimitEquipItem) ); memset( &mGiveItem, 0, sizeof(mGiveItem) ); } /// Äù½ºÆ®¼öÇà ¿Ï·á( ½ÇÆÐ, Æ÷±â, ¿Ï·á ) class cQuestEnd { friend class cQuestManager; public: cQuestEnd(); public: /// Á¾·áÇÒ ¹öÇÁ unsigned long mEndBuff[QUEST_BUFF_MAX]; /// Á¾·áÇÒ µð¹öÇÁ unsigned long mEndDeBuff[QUEST_BUFF_MAX]; /// Á¾·á½Ã °¡Á®°¡´Â ¾ÆÀÌÅÛ Á¤º¸ sQuestItem mTakeItem[QUEST_ITEM_MAX]; /// º¯°æÇÒ Æ©Å丮¾ó ¸ðµå int mTutorialModeIndex; }; inline cQuestEnd::cQuestEnd() : mTutorialModeIndex(-1) { memset( &mEndBuff, 0, sizeof(mEndBuff) ); memset( &mEndDeBuff, 0, sizeof(mEndDeBuff) ); memset( &mTakeItem, 0, sizeof(mTakeItem) ); } /// Äù½ºÆ® º¸»ó class cQuestReward { friend class cQuestManager; public: cQuestReward(); public: /// °æÇèÄ¡ (±âº»º¸»ó) unsigned int mExp; /// ½ºÅ³ °æÇèÄ¡ (±âº»º¸»ó) unsigned int mSxp; /// ±Ý¾× (±âº»º¸»ó) unsigned long mMoney; /// ½ºÅ³Æ÷ÀÎÆ® (±âº»º¸»ó) unsigned int mSkillPoint; /// ¸ÊÀ̵¿ À妽º (±âº»º¸»ó) unsigned long mMapChangeIndex; /// ÀüÁ÷À妽º unsigned short mChangeJobIndex; /// ¼¼·ÂÁ¾·ù (eFORCE_TYPE) unsigned char mForceType; /// ȣĪ unsigned long mGiveTitleIndex; /// ¹öÇÁ unsigned long mRewardBuff[QUEST_BUFF_MAX]; /// ¾ÆÀÌÅÛ À妽º, °¹¼ö sQuestItem mRewardItem[QUEST_ITEM_MAX]; }; inline cQuestReward::cQuestReward() : mExp(0) , mSxp(0) , mMoney(0) , mSkillPoint(0) , mChangeJobIndex(0) , mForceType(0) , mGiveTitleIndex(0) , mMapChangeIndex(0) { for( unsigned int i = 0; i < QUEST_BUFF_MAX; ++i ) mRewardBuff[i] = 0; for( unsigned int i = 0; i < QUEST_ITEM_MAX; ++i ) { mRewardItem[i].itemIndex = 0; mRewardItem[i].count = 0; } } /// Äù½ºÆ® ½ÇÆÐ½Ã class cQuestFail { friend class cQuestManager; public: cQuestFail(); public: /// ½ÇÆÐ½Ã ¹öÇÁ unsigned long mFailBuff[QUEST_BUFF_MAX]; /// ½ÇÆÐ½Ã µð¹öÇÁ unsigned long mFailDeBuff[QUEST_BUFF_MAX]; }; inline cQuestFail::cQuestFail() { for( unsigned int i = 0; i < QUEST_BUFF_MAX; ++i ) { mFailBuff[i] = 0; mFailDeBuff[i] = 0; } } enum eQuestType { eQUEST_TYPE_NORMAL = 0, eQUEST_TYPE_TUTORIAL, eQUEST_TYPE_THEME, eQUEST_TYPE_REPEAT, }; /// Äù½ºÆ® Á¤ÀÇ class cQuestDefine { friend class cQuestManager; public: cQuestDefine(); ~cQuestDefine(); public: // Äù½ºÆ® ŸÀÔ ( eQUESTTYPE ) unsigned char mType; /// Äù½ºÆ® À妽º unsigned long mIndex; /// Äù½ºÆ®¸í unsigned long mTitleIndex; /// ¼³¸í ÅØ½ºÆ® À妽º unsigned long mDestIndex; /// ¼³¸í ¹®ÀÚ¿­ ÁÙ¼ö unsigned int mDestLineNum; /// Äù½ºÆ® ŸÀÔ (eQUESTTYPE) unsigned char mEventType; /// ¹Ýº¹ ŸÀÔ unsigned char mRepeatType; /// ±×·ì¹øÈ£ unsigned short mGroup; /// ºÎ¿© npc À妽º unsigned long mGiveNpcIndex; /// º¸»ó npc À妽º unsigned long mTakeNpcIndex; /// º¸»ó ¸Ê À妽º unsigned short mTakeMapIndex; /// ¼±Åú¸»ó ¼±Åà °¡´É °³¼ö unsigned int mSelectCount; /// Äù½ºÆ® ÀûÁ¤ ·¹º§ Ç¥½Ã¿ë unsigned int mLevel; // Äù½ºÆ® µµ¿ò Á¤º¸ cQuestInfo* mQuestInfo; /// Äù½ºÆ® ÀÓ¹« Á¤º¸ cQuestDuty* mQuestDuty; /// Äù½ºÆ® ±âº» º¸»óÁ¤º¸ cQuestReward* mDefaultReward; /// Äù½ºÆ® ¼±Åà º¸»óÁ¤º¸ cQuestReward* mSelectReward; /// Äù½ºÆ® ¼öÇà Á¦¾àÁ¤º¸ cQuestLimit* mQuestLimit; /// Äù½ºÆ® Á¾·á½Ã Á¤º¸(¿Ï·á,Æ÷±â,½ÇÆÐ) cQuestEnd* mQuestEnd; /// Äù½ºÆ® ½ÇÆÐ½Ã cQuestFail* mQuestFail; /// ¿Ï·á Á¶°Ç °Ë»ç¿ë ºñÆ® __int64 mComplete; }; inline cQuestDefine::cQuestDefine() : mTitleIndex(0) , mDestIndex(0) , mDestLineNum(0) , mEventType( eQUEST_MAX ) , mRepeatType( eQUEST_CHALLENGE ) , mGroup(0) , mGiveNpcIndex(0) , mTakeNpcIndex(0) , mTakeMapIndex(USHRT_MAX) , mSelectCount(0) , mQuestInfo(0) , mQuestDuty(0) , mDefaultReward(0) , mSelectReward(0) , mQuestLimit(0) , mQuestEnd(0) , mQuestFail(0) , mComplete(0) , mLevel(1) , mType(eQUEST_TYPE_NORMAL) { } inline cQuestDefine::~cQuestDefine() { SAFE_DELETE( mQuestInfo ); SAFE_DELETE( mQuestDuty ); SAFE_DELETE( mDefaultReward ); SAFE_DELETE( mSelectReward ); SAFE_DELETE( mQuestLimit ); SAFE_DELETE( mQuestFail ); SAFE_DELETE( mQuestEnd ); }