UiBase.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:5k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 剑侠界面系统
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-7-17
  6. ------------------------------------------------------------------------------------------
  7. 剑侠界面系统以剑侠界面窗口元素体系为基础,为剑侠的实际应用界面的实现。每个界面窗口
  8.     都是遵从iKUiWindow接口。界面系统可以支持让窗口有不同的外表(skin),在系统中称为方案(Scheme)
  9. 整个界面系统的实现程序文件都以Ui作为文件名前缀。
  10.     界面系统将针对每个(玩家)名称id保存一份窗口自定义应用配置文件。
  11.         界面系统的实现类为KUiBase。界面系统的应用:
  12. Init --> 初始化界面系统与各界面窗口,执行此操作后,界面窗口可以执行窗口操作功能了。
  13. LoadConfig --> 载入窗口的可定制的配置信息,如窗口的位置。
  14. LoadScheme --> 载入窗口系统的界面方案,在执行这个操作后,界面窗口才知道用什么图来
  15. 装扮自己。
  16. 注:
  17. 现在全部窗口界面方案是一次一起载入,但是每个界面中用到的图都在第一次被显示的时候才
  18. 载入,需要时可以进一步改造优化为各个窗口的界面方案在第一次显示窗口时候被载入。
  19. *****************************************************************************************/
  20. #pragma once
  21. enum UISYS_STATUS
  22. {
  23. UIS_S_IDLE,
  24. UIS_S_TRADE_PLAYER, //(与Player)交易
  25. UIS_S_TRADE_NPC, //(与npc)交易
  26. UIS_S_TRADE_SALE, //(与npc)交易 卖
  27. UIS_S_TRADE_BUY, //(与npc)交易 买
  28. UIS_S_TRADE_REPAIR //(与npc)交易 修理
  29. };
  30. enum UISYS_OPERATION
  31. {
  32. UIS_O_MOVE_ITEM,
  33. UIS_O_TRADE_ITEM,
  34. UIS_O_USE_ITEM,
  35. };
  36. #define APP_START "Start()"
  37. #define APP_EXIT "Exit()"
  38. #define APP_STARTGAME "StartGame("%s")"
  39. #define APP_EXITGAME "ExitGame()"
  40. #define APP_SAY "Say("%s", "%s")"
  41. #define APP_CHAT "Chat("%s", "%s")"
  42. #define APP_CREATEUNIT "CreateUnit("%s")"
  43. #define APP_DELETEUNIT "DeleteUnit("%s")"
  44. #define APP_CREATEUNITGROUP "CreateUnitGroup("%s", "%s")"
  45. #define APP_RENAMEUNITROUP "RenameUnitGroup("%s", "%s", "%s")"
  46. #define APP_DELETEUNITROUP "DeleteUnitGroup("%s", "%s")"
  47. #define APP_MOVEUNITROUP "MoveUnitGroup("%s", "%s", "%s")"
  48. #define APP_CREATEUNITMEMBER "CreateUnitMember("%s", "%s", "%s")"
  49. #define APP_DELETEUNITMEMBER "DeleteUnitMember("%s", "%s")"
  50. #define APP_MOVEUNITMEMBER "MoveUnitMember("%s", "%s", "%s")"
  51. #define APP_SETUNITMEMBERSTATUS "SetUnitMemberStatus("%s", "%s", "%s")"
  52. class KIniFile;
  53. extern const char* $Main;
  54. #pragma warning(disable:4786)
  55. #include "map"
  56. #include "string"
  57. class KUiBase
  58. {
  59. public:
  60. KUiBase();
  61. ~KUiBase();
  62. int Init(); //初始化
  63. void Exit(); //退出
  64. void SetUserAccount(char* pszId, char* pszRole); //设置用户账号
  65. int GetUserPrivateDataFolder(char* pBuffer, int nSize); //获得当前玩家私有数据的存储目录
  66. const char* GetUserTempDataFolder(); //获得玩家数据的临时存盘目录位置
  67. void CleanTempDataFolder(); //清除玩家数据的临时存盘目录内的全部文件
  68. void CleanPrivateDataFolder(); //清除当前玩家私有数据的存储目录
  69. void DeletePrivateDataFile(const char* pszFileName); //清除当前玩家私有数据的某个文件
  70. int LoadScheme(const char* pSchemeName); //按照某种方案载入界面(Skin)
  71. int SchemeCount(); //获得界面方案的数目
  72. int GetScheme(int nIndex, char* pName, char* pPath);//获得某个界面方案的名称与路径
  73. int GetCurSchemePath(char* pBuffer, int nSize); //获得当前界面方案的路径
  74. //操作配置、设定文件
  75. KIniFile* GetCommSettingFile(); //打开保存界面公共设置的文件
  76. void CloseCommSettingFile(bool bSave); //关闭保存界面公共设置的文件
  77. KIniFile* GetPrivateSettingFile(); //打开打开当前账号的设置文件
  78. void ClosePrivateSettingFile(bool bSave); //关闭打开当前账号的设置文件
  79. KIniFile* GetCommConfigFile();
  80. void CloseCommConfigFile();
  81. //设置获取界面操作状态
  82. UISYS_STATUS GetStatus() { return m_Status; }
  83. void  SetStatus(UISYS_STATUS eStatus);
  84. void  SetCurrentCursor(); //根据当前状态设置鼠标指针图形
  85. int  IsOperationEnable(UISYS_OPERATION uOper);
  86. void LoadPrivateConfig(); //载入配置纪录,如定制的窗口位置
  87. int SavePrivateConfig(); //存储配置纪录
  88. void RegisterEvent(const char* szName, HANDLE hWnd);
  89. void UnregisterEvent(const char* szName, HANDLE hWnd);
  90. int NotifyEvent(const char* szEvent); //0为已经处理, 不要再处理了, 非0为未处理或错误
  91. int NotifyOneEvent(const char* szName, const char* szEvent); //0为已经处理, 不要再处理了, 非0为未处理或错误
  92. private:
  93. void LoadSchemeForEachWnd();
  94. int GetSchemePath(const char* pScheme); //获得当前指定界面方案的目录名
  95. void ClearFolder(const char* pszFolder, bool bDeleteFolder); //清除当前玩家私有数据的存储目录
  96. private:
  97. UISYS_STATUS m_Status; //界面操作状态
  98. char m_CurScheme[32]; //当前界面方案的名称
  99. char m_CurSchemePath[40]; //当前界面方案的路径
  100. char m_UserAccountId[32]; //当前玩家账号在界面系统中的id
  101. KIniFile* m_pUiCommSettingFile; //界面公共设置的文件
  102. KIniFile* m_pUiPrivateSettingFile; //当前账号的设置文件
  103. KIniFile* m_pUiCommConfigFile;
  104. typedef std::map<std::string, HANDLE> EVENTWNDLIST;
  105. EVENTWNDLIST m_EventWndList;
  106. };
  107. extern KUiBase g_UiBase;