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

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 界面--系统消息中心
  3. // Copyright : Kingsoft 2003
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2003-4-15
  6. ------------------------------------------------------------------------------------------
  7. *****************************************************************************************/
  8. #pragma once
  9. #include "../Elem/WndImage.h"
  10. #include "../Elem/WndButton.h"
  11. #include "../Elem/WndText.h"
  12. #include "../../../core/src/gamedatadef.h"
  13. #define MAX_SYS_MSG_TYPE 6
  14. #define POPUPING_MSG_HEAP_INDEX MAX_SYS_MSG_TYPE
  15. #define RECYCLE_MSG_HEAP_INDEX POPUPING_MSG_HEAP_INDEX + 1
  16. class KUiSysMsgCentre : protected KWndWindow
  17. {
  18. public:
  19. //----界面面板统一的接口函数----
  20. static KUiSysMsgCentre* OpenWindow(); //打开窗口,返回唯一的一个类对象实例
  21. static void CloseWindow(); //关闭窗口,同时可以选则是否删除对象实例
  22. static void LoadScheme(const char* pScheme);//载入界面方案
  23. static bool AMessageArrival(KSystemMessage* pMsg, void* pParam);
  24. private:
  25. KUiSysMsgCentre();
  26. ~KUiSysMsgCentre();
  27. void Initialize();
  28. void Clear();
  29. void LoadScheme(KIniFile* pIni); //载入界面方案
  30. KSystemMessage* GetAMsgSpace(int nParamSize);
  31. bool AddAMsgToHeap(KSystemMessage*pMsg, int nHeapIndex, bool bSort);
  32. void DeleteMsgInHeap(int nHeapIndex, int nMsgIndex, bool bImmedDel, bool bTobeConfirm);
  33. void ConfirmMsg(KSystemMessage* pMsg, bool bImmedDel);
  34. void MovePopupedMsgToHeap();
  35. int WndProc(unsigned int uMsg, unsigned int uParam, int nParam);//窗口函数
  36. void OnConfirmOperFinished(unsigned int uParam, int nSelAction); //响应操作结束,玩家已经做出选择。
  37. void SetPopupMsgDest();
  38. void PaintWindow(); //绘制窗口
  39. int PtInWindow(int x, int y); //判断一个点是否在窗口范围内,传入的是绝对坐标
  40. void Breathe();
  41. bool FilterSameMsg(KSystemMessage* pMsg, void* pParam);
  42. private:
  43. static KUiSysMsgCentre* m_pSelf;
  44. private:
  45. struct SYS_MSG_HEAP
  46. {
  47. KSystemMessage** pMsgList; //消息指针的列表
  48. int nListSpace; //消息指针列表的大小(包含多少个指针空间)
  49. int nNumValid; //列表中有效的消息的数目
  50. } m_MsgHeap[MAX_SYS_MSG_TYPE + 2];
  51. KUiMsgParam m_SysMsgParam; //传给聊天信息窗口的参数
  52. int m_nPopupMsgDestX; //弹出消息的终点位置横向坐标
  53. int m_nPopupMsgX; //弹出消息的当前位置横向坐标
  54. int m_nPopupMsgY; //弹出消息的当前点位置纵向坐标
  55. int m_nPopupMsgDestIndex; //弹出消息的终点位置在哪个图标按钮上
  56. unsigned int m_uLastMovementTime;
  57. unsigned int m_uMoveInterval;
  58. unsigned int m_uDisappearInterval;
  59. KWndText32 m_MsgTextWnd;
  60. int m_bShowMsgText;
  61. KWndButton m_MsgIconBtn[MAX_SYS_MSG_TYPE];
  62. KUiImageRef m_MsgIcon[MAX_SYS_MSG_TYPE]; //消息图标的图形
  63. short m_nMsgIconFrame[MAX_SYS_MSG_TYPE];//消息图标的图形帧索引
  64. KSystemMessage* m_pHandlingMsg;
  65. };