#pragma once #include #include #include "Player.h" typedef union { struct { BYTE byClass; BYTE byPart; WORD wPartID; }; DWORD dwID; } HERO_VARIATION_PART; const int MAX_VARIATION_RESOURCE = 3; struct BASE_HeroVariationInfo { HERO_VARIATION_PART partID; DWORD name_code; //À̸§ DWORD desc_code; //¼³¸í DWORD resource_code; //ij½¬³Ä? ±âº»À̳Ä? DWORD m_dResourceID[MAX_VARIATION_RESOURCE]; }; class HeroVariationInfoParser : public Singleton ,public IParser { public: HeroVariationInfoParser(); ~HeroVariationInfoParser(); VOID Init(DWORD dwPoolSize); VOID Init(DWORD dwPoolSize , char *szPackfileName); VOID Release(); virtual BOOL LoadScript(eSCRIPT_CODE ScriptCode, BOOL bReload); BASE_HeroVariationInfo* GetHeroVariationInfo(DWORD dwKey); int GetVariationCount(BYTE byClass,int iVariation); std::vector& GetList(WORD type, WORD parts, bool is_cash); protected: void cash_variation_increase(WORD type, WORD parts); std::vector cash_data_[eCHAR_TYPE_MAX][PLAYER_VARIATION_MAX + 1]; std::vector base_data_[eCHAR_TYPE_MAX][PLAYER_VARIATION_MAX + 1]; int total_variation_count_[eCHAR_TYPE_MAX][PLAYER_VARIATION_MAX + 1]; int m_iVariationCount[eCHAR_TYPE_MAX][PLAYER_VARIATION_MAX + 1]; private: VOID Unload(); util::SolarHashTable* m_pDataTable; }; inline std::vector& HeroVariationInfoParser::GetList(WORD type, WORD parts, bool is_cash) { if (is_cash) { return cash_data_[type][parts]; } return base_data_[type][parts]; }