#pragma once #include "Singleton.h" #include "HotKeyDefine.h" class HotKeyInfoParser : public util::Singleton, public IParser { struct BASE_HotKeyInfo { DWORD function_index; DWORD description_code; KEY_BIND_PAIR key_pair; bool support_setting; WORD action_code; BASE_HotKeyInfo() :function_index(0), description_code(0), support_setting(false), action_code(0) { } }; typedef STLX_MAP HotKeyInfoMap; public: typedef STLX_MAP AllowKeyCodeMap; public: HotKeyInfoParser(); ~HotKeyInfoParser(); void Release(); virtual BOOL LoadScript(eSCRIPT_CODE script_code, BOOL is_reload); /// µðÆúÆ® Ű¼¼ÆÃ Á¤º¸ ¾ò±â bool GetDefalutKeyInfo(KEY_BIND_INFO& output_info); /// ±â´É¿¡ ´ëÇÑ ¼³¸í ½ºÆ®¸µÄÚµå DWORD GetDescriptionCodeByIndex(HOT_KEY_FUNCTION_INDEX function_index); // Ű¼¼ÆÃ¿¡ Çã¿ëµÇ´Â ŰÄÚµå °ªÀÎÁö ÆÇ´Ü bool IsAllowKeyCode(WORD key_code); // ŰÄÚµå °ª¿¡ ÇØ´çµÇ´Â ½ºÆ®¸µÄÚµå int GetStringCodeByKeyCode(WORD key_code); // ŰÄÚµå °ª¿¡ ÇØ´çµÇ´Â ½ºÆ®¸µÄÚµå(Å£½½·Ô¿ë) int GetStringCodeForQuickSlot(WORD key_code); // Ű½ºÆ®¸µ¿¡ ´ëÇÑ Å°Äڵ尪 WORD GetKeyCodeByString(const TCHAR* key_string); // ¼³Á¤°¡´É ±â´É À妽º¸ñ·Ï ¾ò±â bool GetIndexList(STLX_VECTOR& output_list); // ¿¬°áµÈ À¯Àú¾×¼Ç½ºÅ³ÄÚµå WORD GetUserActionCode(HOT_KEY_FUNCTION_INDEX function_index); HotKeyInfoParser::AllowKeyCodeMap& allow_key_code_map() { return allow_key_code_map_; } HotKeyInfoParser::AllowKeyCodeMap& quick_key_code_map() { return quick_key_code_map_; } private: void Unload(); void BuildAllowKeyCodeList(); /// ±â´É¿¡ ´ëÇÑ À¯Àú¼¼ÆÃ Áö¿ø¿©ºÎ /// À¯Àú¼¼ÆÃ Áö¿øÀÌ ¾ÈµÇ¸é UI¿¡ Ç׸ñÀÌ ³ª¿ÀÁö ¾ÊÀ¸¸ç, ¼­¹ö¿¡ ÀúÀåÇÏÁö ¾ÊÀ½ bool SupportUserSetting(HOT_KEY_FUNCTION_INDEX function_index); KEY_BIND_INFO& defalut_Info() { return defalut_Info_; } HotKeyInfoParser::HotKeyInfoMap& hot_key_info_map() { return hot_key_info_map_; } private: KEY_BIND_INFO defalut_Info_; // ÇØ´ç µ¥ÀÌÅÍ´Â ·Îµå ÀÌÈÄ º¯°æµÇ¸é ¾ÈµÊ. ¿ÜºÎ¿¡ ³ëÃâµÇÁö ¾Êµµ·ÏÇÔ HotKeyInfoMap hot_key_info_map_; // ±â´É¿¡ ´ëÇÑ ¼³¸íÄÚµå/À¯Àú¼¼ÆÃÁö¿ø¿©ºÎ AllowKeyCodeMap allow_key_code_map_;// Çã¿ë ŰÄÚµå/½ºÆ®¸µ(+½ºÆ®¸µÄÚµå) AllowKeyCodeMap quick_key_code_map_;// Äü½½·Ï¿¡¼­ »ç¿ëµÉ ½ºÆ®¸µ };