#pragma once #include #include #include #include #include #include #include #define MAX_LIMITED_ITEM_NAME_LENGTH (64) #define MAX_DURA_RATIO_COUNT 3 #define MAX_LIMIT_VALUE_RATIO_OPTION_COUNT 3 #define MAX_DAMAGE_RATIO_COUNT 3 #define MAX_LIMITED_GAMBLE_COUNT 4 #define MAX_GAMBLE_OPTION_COUNT 5 struct sLIMITED_ITEM_INFO { DWORD m_dwIndex; char m_pszName[MAX_LIMITED_ITEM_NAME_LENGTH]; //ver1.1 : ¾ÆÀÌÅÛ ³×Àֿ̹¡ °íÀ¯»ö±òÀ» ºÎ¿© enum { MAX_COLOR_LENGTH = 7 }; BYTE m_bUse; //<¾ÆÀÌÅÛ ³×Àֻ̹ö±ò »ç¿ë¿©ºÎ char m_szColor[MAX_COLOR_LENGTH]; //<¾ÆÀÌÅÛ ³×Àֻ̹ö±ò RGB eITEM_WAA_TYPE m_eWAAType; WORD m_wEquipImage; DWORD m_dwInvenImage; DWORD m_dwDuraRatio[MAX_DURA_RATIO_COUNT]; INT m_iDura_Min[MAX_DURA_RATIO_COUNT]; INT m_iDura_Max[MAX_DURA_RATIO_COUNT]; DWORD m_dwDuraRatioSum; DWORD m_dwLimitValueRatio[MAX_LIMIT_VALUE_RATIO_OPTION_COUNT]; INT m_iLimitValue_Min[MAX_LIMIT_VALUE_RATIO_OPTION_COUNT]; INT m_iLimitValue_Max[MAX_LIMIT_VALUE_RATIO_OPTION_COUNT]; DWORD m_dwLimitValueRatioSum; DWORD m_dwDamageRatio[MAX_DAMAGE_RATIO_COUNT]; INT m_iDamage_Min[MAX_DAMAGE_RATIO_COUNT]; INT m_iDamage_Max[MAX_DAMAGE_RATIO_COUNT]; DWORD m_dwDamageRatioSum; BYTE m_byRepairLimite; DWORD m_dwGambleRatio[MAX_LIMITED_GAMBLE_COUNT]; DWORD m_dwGambleList[MAX_LIMITED_GAMBLE_COUNT][MAX_GAMBLE_OPTION_COUNT]; DWORD m_dwGambleRatioSum; }; typedef stdext::hash_map LIMITED_ITEM_INFO_HASH; typedef stdext::hash_map *> GAMBLE_RATIO_HASH; typedef stdext::hash_map *> DURA_RATIO_HASH; typedef stdext::hash_map *> LIMIT_VALUE_RATIO_HASH; typedef stdext::hash_map *> DAMAGE_RATIO_HASH; class LimitedItemInfoParser : public util::Singleton, public IParser { public: LimitedItemInfoParser(void); virtual ~LimitedItemInfoParser(void); public: VOID Init( char * pszPackFileName ); VOID Release(); VOID Unload(); public: sLIMITED_ITEM_INFO* GetLimitedItemInfo( DWORD Index ); INT GetRandomkeyFromDuraRatio( DWORD Index ); INT GetRandomkeyFromLimitValueRatio( DWORD Index ); INT GetRandomkeyFromDamageRatio( DWORD Index ); INT GetRandomkeyFromGambleRatio( DWORD Index ); VOID SetFirst() { m_LimitedItemInfoIterator = m_HashLimitedItemInfo.begin(); } sLIMITED_ITEM_INFO* GetNext(); protected: WORD ValidCheck( sLIMITED_ITEM_INFO* pInfo ); public: virtual BOOL LoadScript( eSCRIPT_CODE scriptCode, BOOL bReload ); private: BOOL _Load( BOOL bReload ); private: LIMITED_ITEM_INFO_HASH m_HashLimitedItemInfo; LIMITED_ITEM_INFO_HASH::iterator m_LimitedItemInfoIterator; DURA_RATIO_HASH m_HashDuraRatioRandomizer; LIMIT_VALUE_RATIO_HASH m_HashLimitValueRatioRandomizer; DAMAGE_RATIO_HASH m_HashDamageRatioRandomizer; GAMBLE_RATIO_HASH m_HashGambleRatioRandomizer; CHAR m_pszFileName[MAX_PATH]; };