Files
Sun1602/ProgramCommon/EtherBulletInfoParser.h
T
2022-10-26 12:25:11 +08:00

75 lines
1.9 KiB
C++

#pragma once
#include <SolarHashTable.h>
#include <Singleton.h>
#include <SolarFileReader.h>
#include <ScriptCode.IParser.h>
#include <hash_map>
#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<DWORD, tagEtherBulletInfo *> ETHER_BULLET_INFO_HASH;
class EtherBulletInfoParser : public util::Singleton<EtherBulletInfoParser>, 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];
};