#pragma once #include #include "ItemOptionHeader.h" #include #include #include #include #define _MAX_LIMITED_ITEM_OPTION_NUM (128) //< ¼ÒÄÏ ¿É¼Ç °³¼ö 128 #define MAX_LIMITED_OPTIONNAME_LENGTH (32) struct sLIMITED_OPTION { INT m_AttrIndex; // Ű char m_pszAttrName[MAX_LIMITED_OPTIONNAME_LENGTH]; eVALUE_TYPE m_NumericType; INT m_iValue[LIMITED_MAX]; }; struct sLIMITED_ITEM_OPTION { WORD m_LimitedOptionIndex; char m_pszName[MAX_LIMITED_OPTIONNAME_LENGTH]; BYTE m_ItemType; // 0: ¹«±â, 1: ¹æ¾î±¸, 2: ¾Ç¼¼¼­¸® WORD m_OptionKind; eVALUE_TYPE m_NumericType; WORD m_MinValue; WORD m_MaxValue; int m_Probability[5]; int m_ProbabilitySum; }; typedef stdext::hash_map LIMITEDOPT_HASH; typedef stdext::hash_map LIMITED_ITEM_OPT_HASH; class LimitedOptionParser : public util::Singleton, public IParser { public: LimitedOptionParser(void); virtual ~LimitedOptionParser(void); VOID Init( char * pszPackFileName ); VOID Release(); VOID Unload(); sLIMITED_OPTION * GetLimitedOptionByKind( WORD OptionIndex ); virtual BOOL LoadScript( eSCRIPT_CODE ScriptCode, BOOL bReload ); protected: WORD ValidCheck(sLIMITED_ITEM_OPTION *pInfo); private: BOOL _Load( BOOL bReload = FALSE ); LIMITEDOPT_HASH m_LimitedOptionKindHash; //¿É¼Ç Á¾·ùº° LIMITED_ITEM_OPT_HASH m_LimitedOptionListHash; //°×ºí ½ºÅ©¸³Æ®ÀÇ Á¤º¸ char m_pszFileName[MAX_PATH]; };