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

70 lines
1.7 KiB
C++

////////////////////////////////////////////////////////////////////////////////////////////////////
// SkillInventoryStoreParser.h
////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma once
#ifndef __SKILL_INVENTORY_STORE_H__
#define __SKILL_INVENTORY_STORE_H__
#include <Singleton.h>
#ifdef _NA_0_20100901_SKILLTREE_SYSTEM
enum { MAX_SKILL_INVENTORY_STORE_NUM = 10 };
#else
enum { MAX_SKILL_INVENTORY_STORE_NUM = 50 };
#endif
struct SkillInven_s
{
typedef int Index;
Index index;
BYTE bClassID;
BYTE bSkillTab1;
BYTE bSkillTab2;
WORD wSkillNum;
#ifdef _NA_0_20100901_SKILLTREE_SYSTEM
int iSkillID[MAX_SKILL_INVENTORY_STORE_NUM]; // ½ºÅ³ ÄÚµå
#else
CODETYPE dwSkillID[MAX_SKILL_INVENTORY_STORE_NUM]; // ½ºÅ³ ÄÚµå
#endif
SkillInven_s()
{
::ZeroMemory(this, sizeof(*this));
}
};
class SkillInventoryStoreParser : public util::Singleton<SkillInventoryStoreParser>, public IParser
{
public:
SkillInventoryStoreParser() {}
~SkillInventoryStoreParser() {}
public:
virtual void Release() {}
virtual BOOL LoadScript(eSCRIPT_CODE ScriptCode, BOOL bReload);
public:
const SkillInven_s* GetSkillInventoryStore(const SkillInven_s::Index index) const
{
SkillInvens::const_iterator it = skill_invens_.find(index);
if (it == skill_invens_.end())
{
return NULL;
}
return &(it->second);
}
size_t GetSkillInventoryStoreNum() const
{
return skill_invens_.size();
}
private:
BOOL _Load(const BOOL is_reload);
private:
typedef STLX_HASH_MAP<SkillInven_s::Index, SkillInven_s> SkillInvens;
SkillInvens skill_invens_;
};
#endif // __SKILL_INVENTORY_STORE_H__