#ifndef __ACHIEVEMENT_ACHIEVEMENTPARSER_H #define __ACHIEVEMENT_ACHIEVEMENTPARSER_H #pragma once #include "AchievementDefine.h" #include #include struct Achievement_ParserInfo_Reward { WORD reward_type_; //º¸»ç ŸÀÔ WORD reward_code_; //º¸»ó °ª }; struct Achievement_ParserInfo_Object { WORD object_code_; //°úÁ¦ ÄÚµå WORD object_number_; //°úÁ¦ ´Þ¼º ¼ö·® }; struct Achievement_ParserInfo { WORD index_; WORD location_code_; DWORD object_string_code_; DWORD tooltip_string_code_; DWORD icon_code_; BYTE object_type_; //_NA_001990_ACSYSTEM_ADD DWORD class_type_; WORD parent_ac_code_[MAX_ACHIEVEMENT_PARENT_CODE]; int rewards_count_; Achievement_ParserInfo_Reward rewards_[MAX_ACHIEVEMENT_REWARD]; Achievement_ParserInfo_Object obejcts_[MAX_ACHIEVEMENT_OBJECT]; #ifdef _NA_006541_RENEWER_ACDIALOG int upper_group_index_; DWORD upper_group_string_; int lower_group_index_; DWORD lower_group_string_; #endif }; typedef util::SolarHashTable::iterator ACHIEVEMENTINFO_ITERATOR; class AchievementParser : public util::Singleton, public IParser { public: AchievementParser(void); ~AchievementParser(void); VOID Init(DWORD dwPoolSize); VOID Init(DWORD dwPoolSize , char *pszPackFileName); VOID Release(); BOOL _Load( BOOL bReload ); BOOL LoadScript( eSCRIPT_CODE ScriptCode, BOOL reload ); Achievement_ParserInfo * GetAchievement_ParserInfo( WORD key ); inline ACHIEVEMENTINFO_ITERATOR Begin() { return script_data_table_->begin(); } inline ACHIEVEMENTINFO_ITERATOR End() { return script_data_table_->end(); } private: Achievement_ParserInfo * GetRowData(WORD index, BOOL reload); private: util::SolarHashTable* script_data_table_; }; #endif //__ACHIEVEMENT_ACHIEVEMENTPARSER_H