#pragma once /************************************************************************/ /* DominationInfo.txt ÆÄ¼­ */ /************************************************************************/ /************************************************************************/ /* // »óŰª DOMINATION_EVENT_ACTION_START : °æ¸Å½Ã°£ [°æ¸Å°¡´É, ¼º¹®¼ÂÆÃ°¡´É, ÀÔÀå°¡´É(¼ö)] DOMINATION_EVENT_ACTION_END : °æ¸Å³¡ [°æ¸ÅºÒ°¡, ¼º¹®¼ÂÆÃ°¡´É, ÀÔÀå°¡´É(¼ö)] DOMINATION_EVENT_SELECT_ATTACKGUILD : °ø°Ý ±æµå ¼±Á¤ [°æ¸ÅºÒ°¡, ¼º¹®¼ÂÆÃ°¡´É, ÀÔÀå°¡´É(¼ö)] DOMINATION_EVENT_SELECT_ATTACKGUILD_END : °ø°Ý ±æµå ¼±Á¤ ³¡ [°æ¸ÅºÒ°¡, ¼º¹®¼ÂÆÃ°¡´É, ÀÔÀå°¡´É(¼ö)] DOMINATION_EVENT_SYSTEM_RESET : ½Ã½ºÅÛ¸®¼Â [°æ¸ÅºÒ°¡, ¼º¹®¼ÂÆÃºÒ°¡, ÀÔÀåºÒ°¡(°ø,¼ö)] DOMINATION_EVENT_WAIT : ÀüÀï ´ë±â [°æ¸ÅºÒ°¡, ¼º¹®¼ÂÆÃºÒ°¡, ÀÔÀå°¡´É(°ø,¼ö)] DOMINATION_EVENT_START : ÀüÀï ½ÃÀÛ [°æ¸ÅºÒ°¡, ¼º¹®¼ÂÆÃºÒ°¡, ÀÔÀå°¡´É(°ø,¼ö)] DOMINATION_EVENT_END : ÀüÀï ³¡ [°æ¸Å°¡´É, ¼º¹®¼ÂÆÃ°¡´É, ÀÔÀå°¡´É(¼ö)] DOMINATION_EVENT_ACTION_START2 : Á¸Àç ÇÏÁö ¾Ê´Â »óÅ DOMINATION_EVENT_MAX : ¿¹¿Ü »óÅ */ /************************************************************************/ #include #include struct sDOMINATION_INFO { enum { #ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION REWARD_OPTION_MAX = 15, #endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION LIMIT_MAX = 5, TRIGGERID_MAX = 2, GATEID_MAX = 3 }; MAPCODE m_DominationMapCode; //"MapCode" (HASH_KEY) MAPCODE m_LinkMapCode; //"FieldCode" MAPCODE m_SubMapCode; //"SubFieldCode" int m_Index; //"Index" CHAR m_MapName[MAX_MAPNAME_LENGTH]; //"Name" #ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION int m_DominationType; //"DominationType" (0: ±âº», 1:¸óÆ®»þÀÎ) #endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION BYTE m_MaxUser; //"MaxUser" MONEY m_BaseBattingMoney; //"BaseBattingMoney" BYTE m_BattingCharge; //"BattingCharge" ( ¹éºÐÀ² ) // added by _NA_0_20100705_DOMINATION_EVENT = { BYTE m_byUseFixEvent; //"UseFixEvent" WORD m_wEventDayOfWeek; //"EventDayOfWeek" DWORD m_dwEventTime; //"EventTime" DWORD m_dwEventTriggerID; //"EventTriggerID" // } DWORD m_StartTriggerID; //"StartTriggerID" DWORD m_EndTriggerID; //"EndTriggerID" DWORD m_GateID[GATEID_MAX]; //"GateID1" DWORD m_GateHPTunning; //"GateHPTunning" DWORD m_RespawnDelay; //"RespawnDelay" (second) SLOTCODE m_LimitSkillGroup[LIMIT_MAX]; //"LimitSkillCroup" SLOTCODE m_LimitItemGroup[LIMIT_MAX]; //"LimitItemGroup0" #ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION AttrOptionInfo m_RewardOption[REWARD_OPTION_MAX]; //"RewardBuffCode" #else AttrOptionInfo m_RewardOption[LIMIT_MAX]; //"RewardBuffCode" #endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION int m_RewardDropHeimRate; //"ReardDropHeimRate" (õºÐÀ²) #if defined (_NA_20100420_CHANGE_SYSTEM_MEMO_LOGIC) || \ defined (_NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION) WORD m_BattingItemCode; //"BattingItemCode" #endif #ifdef _NA_20120511_WORK_TO_DOMINATION_ADDITIONAL_REQUEST BYTE m_BattingGuildLevelLimit; //"BattingGuildLevelLimit" #endif sDOMINATION_INFO() { ::ZeroMemory(this, sizeof(*this)); } }; class DominationInfoParser : public util::Singleton, public IParser { public: typedef STLX_HASH_MAP DOMINATION_SCRIPT_INFO_MAP; typedef STLX_VECTOR TakenMaps; // Á¡·ÉÇÑ Áö¿ª ¸ñ·Ï // ¼±ÅÃµÈ º¸»ó ¿É¼Ç struct SelectedRewardOption { SelectedRewardOption( const sDOMINATION_INFO* const in_domination_info = NULL, const int in_option_index = 0, const AttrOptionInfo* const in_option_info = NULL ) : domination_info(in_domination_info), option_index(in_option_index), option_info(in_option_info) { } ~SelectedRewardOption() { } const sDOMINATION_INFO* domination_info; int option_index; const AttrOptionInfo* option_info; }; typedef int SelectedRewardOptionKind; // ¼±ÅÃµÈ º¸»ó ¿É¼Ç Á¾·ù typedef STLX_MAP SelectedRewardOptions; // ¼±ÅÃµÈ º¸»ó ¿É¼Ç ¸ñ·Ï public: DominationInfoParser(); ~DominationInfoParser(); public: virtual void Release() { } virtual BOOL LoadScript( eSCRIPT_CODE ScriptCode, BOOL bReload ); public: const sDOMINATION_INFO* GetDominationInfo(const MAPCODE field_code) const; #ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION //ÇöÀç ¸Ê°ú ½Ã°£¿¡ ¸Â´Â Á¡·ÉÀü À̺¥Æ® »óŸ¦ °¡Á®¿È(ÀÌ¹Ì µî·ÏµÈ À̺¥Æ®ÀÎÁö °Ë»çÇÏ´Â ¿ëµµ·Î »ç¿ë) eDOMINATION_EVENT_STATE GetCurEventState(const WORD day_of_week, const DWORD time, const DWORD map_code) const; //GMÀÌ µî·ÏÇÑ Á¡·ÉÀü À̺¥Æ®¸¦ °¡Á®¿È const sDOMINATION_EVENT_INFO* GetGMEventInfo(const WORD day_of_week, const DWORD time, const MAPCODE map_code) const; //Çʵå ÄÚµå·ÎºÎÅÍ Á¡·ÉÀü Á¾·ù¸¦ °¡Á®¿È const eDOMINATION_TYPE GetDominationTypeFromFieldCode(const MAPCODE field_code) const; const MAPCODE GetMondScheinMapCode(); #else eDOMINATION_EVENT_STATE GetCurEventState(const WORD day_of_week, const DWORD time) const; #endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION DWORD GetWarTime(const WORD day_of_week, const DWORD time) const; //_NA_0_20100705_DOMINATION_EVENT DWORD GetRandomAuctionTime(const WORD day_of_week) const; DWORD GetRemindEventTime( const WORD day_of_week, const DWORD time, const eDOMINATION_EVENT_STATE event_state) const; const DOMINATION_SCRIPT_INFO_MAP& GetDominationInfoMap() const { return script_infos_; } // ¸Ê Äڵ带 ÀÌ¿ëÇÏ¿© Áö¿ª Á¡·É¸Ê Äڵ带 °¡Á®¿Â´Ù. MAPCODE GetDominationFieldCode(const MAPCODE field_code) const; // Áö¿ª Á¡·É ¸ÊÄڵ带 ÀÌ¿ëÇÏ¿© ÇÊµå ¸Ê Äڵ带 °¡Á®¿Â´Ù. MAPCODE GetDominationLinkMapCode(const MAPCODE map_code) const; // ÇØ´ç Áö¿ª ±âº» ¹èÆÃ ÇÏÀÓ ¸®ÅÏ MONEY GetAreaLimitMoney(const MAPCODE map_code) const; //Á¡·ÉÀü ½ºÅ©¸³Æ® µ¥ÀÌÅÍ ·Îµå¸¦ ¿Ï·á ÇÏ¿´´Â°¡? bool IsLoadComplete() const { return is_loaded_; } // Á¡·ÉÇÑ Áö¿ªÀ¸·ÎºÎÅÍ Àû¿ëÇÒ º¸»ó ¿É¼ÇÀ» ¾ò´Â´Ù. SelectedRewardOptions GetRewardOption(const TakenMaps& taken_maps) const; #ifdef _SERVER bool GMInsertEventInfo(const sDOMINATION_EVENT_INFO& event_info); void GMClearEventInfo(); #endif #if defined (_NA_20100420_CHANGE_SYSTEM_MEMO_LOGIC) || \ defined (_NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION) // ÇØ´ç Áö¿ª¿¡¼­ ÀÔÂû¿¡ ÇÊ¿äÇÑ ¾ÆÀÌÅÛÄڵ带 °¡Á®¿Â´Ù WORD GetBattingItemCodeByMapCode(const MAPCODE field_code) const; #endif private: typedef STLX_MULTIMAP EventInfos; typedef STLX_HASH_MAP MapCodes; #ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION public: //Á¡·É Áö¿ªÀÇ ¸ÊÄÚµå·Î Á¡·É À̺¥Æ® Á¤º¸µéÀ» ¸ÊÀ¸·Î ¸¸µé¾î ¸®ÅÏ EventInfos GetEventInfosFromMapCode(MAPCODE map_code); sDOMINATION_EVENT_INFO GetMondScheinEventInfo(); #endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION private: bool LoadDominationInfo(const bool is_reload); bool LoadEventInfo(const bool is_reload); bool IsValidEventInfo(const sDOMINATION_EVENT_INFO& event_info) const; bool IsValidDominationInfo(const sDOMINATION_INFO& domination_info, const int row) const; const sDOMINATION_EVENT_INFO* GetEventInfo(const WORD day_of_week, const DWORD time) const; private: DOMINATION_SCRIPT_INFO_MAP script_infos_; MapCodes map_codes_; EventInfos event_infos_; bool is_loaded_; #ifdef _SERVER EventInfos gm_event_infos_; bool is_script_mode_; #endif };