#ifndef _TreeMenuParser_h_ #define _TreeMenuParser_h_ #if _MSC_VER > 1000 #pragma once #endif #include #include //------------------------------------------------------------------------------ struct BASE_TreeMenuInfo { enum Group_Type { //! ¼¥ Æ®¸®¸Þ´º´Â µ¿ÀûÀ¸·Î »ý¼º kGroupType_CShop_Default_Root = 1, //!< ij½Ã¼¥ ±âº»°ª:»óÀ§Ä«Å×°í¸® kGroupType_CShop_Default_Subject = 2, //!< ij½Ã¼¥ ±âº»°ª:ÇÏÀ§Ä«Å×°í¸® kGroupType_CShop_Cash = 5, //!< ij½Ã¼¥ ¾ÆÀÌÅÛ kGroupType_CShop_PPCard = 6, //!< ij½Ã¼¥ PPCard »óǰ kGroupType_CShop_Mileage = 7, //!< ij½Ã¼¥ ¸¶Àϸ®Áö »óǰ kGroupType_CShop_MyPage = 8, //!< ij½Ã¼¥ ³»Á¤º¸ kGroupType_Infomation = 21, //!<Á¤º¸¿­¶÷½Ç kGroupType_BattlezoneTree = 22, //!<¹èƲÁ¸ Æ®¸®(¸®´º¾ó) kGroupType_BattlezoneTreeReservation = 23, //!<¹èƲÁ¸ Æ®¸® ¿¹¾à(¸®´º¾ó) kGroupType_Chaoszone_BattleTree = 24, //!<Ä«¿À½ºÁ¸ ¹èƲ kGroupType_Chaoszone_HistoryTree = 25, //!<Ä«¿À½ºÁ¸ È÷½ºÅ丮 #ifdef _NA_006448_ITEM_TOTAL_COMPOSITE_REVIEWER kGroupType_Item_Compiosite_Tree = 26, //!<¾ÆÀÌÅÆ »ý¼ºÃ¢ Æ®¸® #endif kGroupType_Title_List_Template = 41, //!<Īȣ¸®½ºÆ®-ÅÛÇø´ kGroupType_Honor_Info_Template = 42, //!<¸í¼º/ÆòÆÇ-ÅÛÇø´ kGroupType_Title_List = 43, //!<Īȣ¸®½ºÆ® kGroupType_Honor_Info = 44, //!<¸í¼º/ÆòÆÇ kGroupType_Currency_Info_Template = 51, //!<È­ÆóÆ÷ÀÎÆ®-ÅÛÇø´ kGroupType_Currency_Info = 52, //!<È­ÆóÆ÷ÀÎÆ® kGroupType_GuildDomination_Info_Template = 61, //!<±æµåÁ¡·ÉÀüÁ¤º¸-ÅÛÇø´ kGroupType_GuildDomination_Info = 62, //!<±æµåÁ¡·ÉÀüÁ¤º¸ #ifdef _NA_007114_20140313_CHAOSZONE_GOLDRUSH kGroupType_Chaoszone_GoldRushTree = 63, //!<Ä«¿À½ºÁ¸ °ñµå·¯½¬, #endif // _NA_007114_20140313_CHAOSZONE_GOLDRUSH #ifdef _NA_007086_20140318_MONSTERBOOK kGroupType_MonsterBook_Template = 64, //!<¸ó½ºÅ͵µ°¨-ÅÛÇø´, kGroupType_MonsterBook_Menu = 65, //!<¸ó½ºÅ͵µ°¨, kGroupType_MonsterBook_MonsterList = 66, //!<¸ó½ºÅ͵µ°¨, kGroupType_MonsterBook_DropList = 67, //!<¸ó½ºÅ͵µ°¨, #endif //_NA_007086_20140318_MONSTERBOOK #ifdef _NA_008334_20150608_SONNENSCHEIN kGroupType_SonnenSchein_MissionList = 68, //!<±æµå¹Ì¼Ç-¼Ò³Ù»þÀÎ #endif //_NA_008334_20150608_SONNENSCHEIN kGroupType_Max, }; enum Menu_Type { kMenuType_None = 0, kMenuType_Group, kMenuType_CheckButton, kMenuType_Max, }; enum Icon_Type { kIconType_Enable = 0, kIconType_Disable, kIconType_Collpase, kIconType_Unfold, kIconType_CheckOn, kIconType_CheckOff, kIconType_Cursor, //!< Ä¿¼­ À̹ÌÁö kIconType_Max, }; enum Font_type { kFontType_Enable = 0, kFontType_Disable, kFontType_Over, kFontType_Select, kFontType_Max, }; enum Sub_Menu_Index { kFirstSubMenuIndex = 3, kSecondSubMenuIndex = 2, kThirdSubMenuIndex = 1, kFourthSubMenuIndex = 0, }; static const int kNameLength = 64; //! tree group °°Àº ¹øÈ£¸é °°Àº Æ®¸® ¾È¿¡ µé¾î °¨. Group_Type tree_group; //! ¸Þ´º´Â °¹¼ö´Â 255°³±îÁö ±íÀÌ´Â 4±îÁö¸¸ À¯È¿ union { BYTE menu_depth[4]; DWORD menu_index; }; //! ¸Þ´º Á¾·ù Menu_Type menu_type; //! ¸Þ´º µé¿©¾²±â int menu_depth_width; //! ¸Þ´º ¹®ÀÚ¿­ DWORD string_code; //! ÆùÆ® Á¾·ù DWORD font_id[kFontType_Max]; DWORD font_color[kFontType_Max]; // TextureListInfoTreeMenu.txt ¿¡ ÀÖ´Â À̹ÌÁö ÄÚµå DWORD image_code[kIconType_Max]; //! ½ºÅ©¸³Æ®¿¡´Â ¼ÂÆÃÇÏÁö ¾Ê´Âº¯¼ö TCHAR string_name[kNameLength]; //!< string_code == 0 À϶§ ÇØ´ç ½ºÆ®¸µÃâ·Â DWORD user_data; //!< »ç¿ëÀÚ º¯¼ö DWORD user_parameter; //!< »ç¿ëÀÚ º¯¼ö #ifdef _NA_006448_ITEM_TOTAL_COMPOSITE_REVIEWER void* user_data_ptr; //!< »ç¿ëÀÚ º¯¼ö #endif //------------------------------------------------------------------------------ BASE_TreeMenuInfo() { tree_group = kGroupType_Max; menu_index = 0; string_code = 0; menu_type = kMenuType_Max; menu_depth_width = 0; ZeroMemory(font_id, sizeof(font_id)); ZeroMemory(font_color, sizeof(font_color)); ZeroMemory(image_code, sizeof(image_code)); user_data = 0; user_parameter = 0; ZeroMemory(string_name, sizeof(string_name)); #ifdef _NA_006448_ITEM_TOTAL_COMPOSITE_REVIEWER user_data_ptr = NULL; #endif } bool is_folder() { return (menu_type == kMenuType_Group); } bool is_check() { return (menu_type == kMenuType_CheckButton); } }; //------------------------------------------------------------------------------ class TreeMenuInfoParser : public util::Singleton, public IParser { public: typedef std::multimap TreeMenu_multimap; public: public: TreeMenuInfoParser(void); ~TreeMenuInfoParser(void); virtual void Release(); virtual BOOL LoadScript(eSCRIPT_CODE ScriptCode, BOOL bReload); void Remove(BASE_TreeMenuInfo::Group_Type group_type); bool Insert(BASE_TreeMenuInfo& info); int GetTreeMenu(OUT std::vector& value_vector, int group); bool GetFirstTreeMenu(OUT BASE_TreeMenuInfo& info, BASE_TreeMenuInfo::Group_Type group_type); TreeMenu_multimap& treecontrol_multimap() { return treecontrol_multimap_; } private: TreeMenu_multimap treecontrol_multimap_; }; #endif //_TreeMenuParser_h_