#pragma once #include #include #include #include #include #define MAX_BULLET_OPTION_COUNT 3 struct tagEtherBulletOption { WORD m_wOptionKind[MAX_BULLET_OPTION_COUNT]; BYTE m_byValueType[MAX_BULLET_OPTION_COUNT]; INT m_iValue[MAX_BULLET_OPTION_COUNT]; }; struct tagEtherBulletInfo { enum { eETHER_DEVICE_COMBO_NORMAL = 0, eETHER_DEVICE_COMBO_1 = 1, eETHER_DEVICE_COMBO_2 = 2, eETHER_DEVICE_COMBO_3 = 3, eETHER_DEVICE_COMBO_4 = 4, eETHER_DEVICE_COMBO_5 = 5, eETHER_DEVICE_COMBO_MAX = 5, }; WORD m_wBulletID; SLOTCODE m_ItemCode; tagEtherBulletOption m_EtherBulletOption[eETHER_DEVICE_COMBO_MAX]; INT m_iAttackSpeed[eETHER_DEVICE_COMBO_MAX - 1]; BYTE m_byEffectCode; DWORD m_dwEffect; //_NA_008456_20150819_ETHER_BULLET_PVP_CHECK BOOL apply_pvp_damage_; //PvP¿¡ Àû¿ëµÇ´Â źȯÀΰ¡ }; typedef stdext::hash_map ETHER_BULLET_INFO_HASH; class EtherBulletInfoParser : public util::Singleton, public IParser { public: EtherBulletInfoParser(void); virtual ~EtherBulletInfoParser(void); VOID Init( char * pszPackFileName ); VOID Release(); VOID Unload(); VOID Reload(); virtual BOOL LoadScript( eSCRIPT_CODE ScriptCode, BOOL bReload ); tagEtherBulletInfo * GetEtherBulletInfoByIndex( DWORD Index ); tagEtherBulletInfo * GetEtherBulletInfoByItemCode( DWORD ItemCode ); VOID SetFirst() { m_HashEtherBulletInfoIterator = m_EtherBulletInfoIndex.begin(); } tagEtherBulletInfo* GetNext(); protected: WORD ValidCheck(tagEtherBulletInfo *pInfo); private: BOOL _Load( BOOL bReload ); ETHER_BULLET_INFO_HASH m_EtherBulletInfoIndex; ETHER_BULLET_INFO_HASH m_EtherBulletInfoItemCode; ETHER_BULLET_INFO_HASH::iterator m_HashEtherBulletInfoIterator; char m_pszFileName[MAX_PATH]; };