#pragma once #include #include #include enum RATIO_TYPE { RATIO_TYPE_EXP_FIELD = 1, // °æÇèÄ¡ ¹èÀ²(Çʵå) RATIO_TYPE_EXP_HUNTING = 11, // °æÇèÄ¡ ¹èÀ²(ÇåÆÃ) RATIO_TYPE_EXP_MISSION = 21, // °æÇèÄ¡ ¹èÀ²(¹Ì¼Ç) RATIO_TYPE_DROP_FIELD = 101, // µå¶ø ¹èÀ²(Çʵå) RATIO_TYPE_DROP_HUNTING = 111, // µå¶ø ¹èÀ²(ÇåÆÃ) RATIO_TYPE_DROP_MISSION = 121, // µå¶ø ¹èÀ²(¹Ì¼Ç) RATIO_TYPE_CHUNTING_EXP = 1001, // °æÀïÇåÆÃ °æÇèÄ¡ ¹èÀ² RATIO_TYPE_CHUNTING_MONEY = 2001, // °æÀïÇåÆÃ ÇÏÀÓ ¹èÀ² RATIO_TYPE_CHUNTING_PARTYNUM = 10000, // °æÀïÇåÆÃ ÆÄƼ¿øÁõ°¡¿¡µû¸¥ %°ª RATIO_TYPE_TIMEATTACK = 10001, // °æÀïÇåÆÃ ¸ðµå ¹èÀ²(ŸÀÓ¾îÅÃ) RATIO_TYPE_DEATHMATCH = 10002, // °æÀïÇåÆÃ ¸ðµå ¹èÀ²(µ¥¾²¸ÅÄ¡) RATIO_TYPE_SURVIVAL = 10003, // °æÀïÇåÆÃ ¸ðµå ¹èÀ²(¼­¹ÙÀ̹ú) RATIO_TYPE_REGEN_TIME = 20001, // ¸®Á¨ ¼Óµµ Á¶Àý }; struct BASE_FORMULA_RATIOINFO { WORD m_wNCode; // ±¸ºÐ ÄÚµå(RATIO_TYPE) LEVELTYPE m_Level; // ·¹º§ float m_fRatio; // ¹èÀ² }; #define MAKE_FOMULAKEY( CODE, LEVEL ) (DWORD)( ((CODE&0xFFFF)<<16)|(LEVEL&0xFFFF) ) class FormulaRatioParser : public util::Singleton, public IParser { public: FormulaRatioParser(); ~FormulaRatioParser(); VOID Init( DWORD dwPoolSize ); VOID Release(); VOID Reload(); BASE_FORMULA_RATIOINFO* GetFormulaRatio( WORD wCode, LEVELTYPE Level=0 ); public: BOOL LoadScript( eSCRIPT_CODE ScriptCode, BOOL bReload ); private: BOOL _Load( BOOL bReload ); private: VOID Unload(); private: // FILEDs util::SolarHashTable* m_pRatioHashTable; char m_pszFileName[MAX_PATH]; };