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

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 界面--游戏显示玩家信息主界面
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-8-16
  6. *****************************************************************************************/
  7. #pragma once
  8. #include "../Elem/WndButton.h"
  9. #include "../Elem/WndPureTextBtn.h"
  10. #include "../Elem/WndText.h"
  11. #include "../Elem/WndEdit.h"
  12. #include "../Elem/WndValueImage.h"
  13. #include "../Elem/WndObjContainer.h"
  14. #include "../Elem/WndLabeledButton.h"
  15. #include "../../../Represent/iRepresent/KRepresentUnit.h"
  16. #include "../../../Core/src/GameDataDef.h"
  17. #include "UiMsgCentrePad.h"
  18. #include "../Elem/ComWindow.h"
  19. //时间
  20. class GameWorld_DateTime : public KWndLabeledButton
  21. {
  22. public:
  23. DECLARE_COMCLASS(GameWorld_DateTime)
  24. GameWorld_DateTime();
  25. virtual int Init(KIniFile* pIniFile, const char* pSection); //初始化
  26. void            UpdateData();
  27. private:
  28. int             m_nSmoothPing, m_nCrowdPing, m_nBlockPing;
  29. bool m_bTrueWorld;
  30. bool            m_bNetStatus;
  31. bool m_bLogo;
  32. char            m_szLogo[32], m_szSmoothMsg[32], m_szCrowdMsg[32], m_szBlockMsg[32];
  33. unsigned int m_uLastSwitchTime, m_uDefaultColor, m_uSmoothColor, m_uCrowdColor, m_uBlockColor;
  34. private:
  35. void OnButtonClick();
  36. void UpdateNetStatus();
  37. };
  38. class KImmediaItem : public KWndObjectBox
  39. {
  40. public:
  41. int m_nIndex;
  42. DWORD m_TextColor;
  43. KImmediaItem() :m_nIndex(-1), m_TextColor(0xFFFFFF00){}
  44. void PaintWindow();
  45. int Init(KIniFile* pIniFile, const char* pSection);
  46. };
  47. struct KUiDraggedObject;
  48. struct KPopupMenuData;
  49. class KIniFile;
  50. class KUiPlayerBar : protected KWndImage
  51. {
  52. public:
  53. //----界面面板统一的接口函数----
  54. static KUiPlayerBar* OpenWindow(); //打开窗口,返回唯一的一个类对象实例
  55. static KUiPlayerBar* GetIfVisible(); //如果窗口正被显示,则返回实例指针
  56. static void CloseWindow(bool bDestroy); //关闭窗口,同时可以选则是否删除对象实例
  57. static void LoadScheme(const char* pScheme);//载入界面方案
  58. static void InputNameMsg(char bChannel, const char* szName, bool bFocus);
  59. static int FindRecentPlayer(const char* szName);
  60. static int          AddRecentPlayer(const char* szName);
  61. static char*        GetRecentPlayerName(int nIndex);//根据index取得某密聊频道的目标玩家名
  62. static const char* SelfName()
  63. {
  64. if (m_pSelf)
  65. return m_pSelf->m_szSelfName;
  66. return NULL;
  67. }
  68. static BOOL IsSelfName(char* szName)
  69. {
  70. if (m_pSelf && szName)
  71. {
  72. return (strcmpi(m_pSelf->m_szSelfName, szName) == 0);
  73. }
  74. return FALSE;
  75. }
  76. static void OnUseItem(int nIndex); //使用快捷物品
  77. static BOOL IsCanSendMessage(const char* Buffer, int nLen, char* szDestName, int nChannelID); //能发送吗?
  78. static void OnSendChannelMessage(DWORD nChannelID, const char* Buffer, int nLen); //发送频道聊天到服务器
  79. static void OnSendSomeoneMessage(const char* Name, const char* Buffer, int nLen); //发送someone聊天到服务器
  80. void UpdateItem(int nIndex, unsigned int uGenre, unsigned int uId); //变更物品摆换
  81. void UpdateSkill(int nIndex, unsigned int uGenre, unsigned int uId); //变更快捷技能
  82. static bool GetExp(int& nFull, int& nCurrLevelExp, int& nCurrentExp);
  83. static BOOL LoadPrivateSetting(KIniFile* pFile);
  84. static int SavePrivateSetting(KIniFile* pFile);
  85. static void         SetCurrentChannel(int nIndex);
  86. static void         SwitchChannel(BOOL bUp = FALSE);  //切换到下一个频道,到底了就切换到第一个,循环
  87.                                                       //bUp是true就上升,否则下降
  88.                                                       //e...下标是0是最顶部的概念
  89.     static int          GetCurChannel();                  //得到PlayerBar里当前的频道
  90. private:
  91. KUiPlayerBar();
  92. ~KUiPlayerBar();
  93. void Breathe(); //活动函数
  94. void Initialize(); //初始化
  95. void PaintWindow();
  96. void UpdateData(); //更新数据
  97. void UpdateXXXNumber(int& nMana, int& nFullMana); //更新常变的那些数值数据
  98. void UpdateRuntimeAttribute(int& nMoney, int& nLevel);
  99. int WndProc(unsigned int uMsg, unsigned int uParam, int nParam);//窗口函数
  100. void OnObjPickedDropped(ITEM_PICKDROP_PLACE* pPickPos, ITEM_PICKDROP_PLACE* pDropPos);//响应界面操作取起放下东西
  101. void LoadScheme(KIniFile* pIni);//载入界面方案
  102. void OnSend(BOOL bDirectSend);
  103. void OnDirectSendChannelMessage(DWORD nChannelID, BYTE cost, const char* Buffer, int nLen); //发送频道聊天到服务器
  104. void PopupChannelMenu(int x, int y);
  105. void PopupPhraseMenu(int x, int y, bool bFirstItem);
  106. void InputRecentMsg(bool bPrior);
  107. void OnSwitchSize(); //切换大小
  108. int GetChannelIndex(const char* pTitle);
  109. //void SetCurrentChannel(int nIndex);
  110. void InputCurrentChannel(int nIndex, bool bFocus);
  111. //返回在Channel中的索引, < 0 失败
  112. //int AddRecentPlayer(const char* szName);
  113. void ReplaceSpecialName(char* szDest, size_t nDestSize, char* szSrc);
  114. int IsHasCost(BYTE cost, int nMoney, int nLevel, int nMana, int nFullMana, int& nUseMoney, int& nUseLevel, int& nUseMana);
  115. private:
  116. static KUiPlayerBar* m_pSelf;
  117. private:
  118. KWndButton m_Face; //表情
  119. KWndButton m_Friend; //好友
  120. KWndButton m_EscDlg; //系统选项
  121. GameWorld_DateTime m_DateTime; //时间
  122. #define UPB_IMMEDIA_ITEM_COUNT 3
  123. KImmediaItem m_ImmediaItem[UPB_IMMEDIA_ITEM_COUNT];
  124. KWndObjectBox m_ImmediaSkill[2];
  125. KWndButton m_SendBtn; //发送
  126. KWndEdit512 m_InputEdit; //输入框
  127. KWndPureTextBtn m_ChannelSwitchBtn; //切换频道
  128. KWndButton m_ChannelOpenBtn; //频道打开
  129. KWndButton m_SwitchBtn; //切换大小
  130. char m_cPreMsgCounter;
  131. char m_cLatestMsgIndex;
  132. #define MAX_RECENT_MSG_COUNT 8
  133. char m_RecentMsg[MAX_RECENT_MSG_COUNT][512];
  134. int m_nCurChannel;
  135. #define MAX_RECENTPLAYER_COUNT 10
  136. char m_RecentPlayerName[MAX_RECENTPLAYER_COUNT][32];
  137. int m_nRecentPlayerName;
  138. int m_bMiniMode;
  139. char m_szSelfName[32]; //自己的名字
  140. int m_nExperienceFull;
  141. int m_nCurLevelExperience;
  142. int m_nExperience;
  143. };