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

模拟服务器

开发平台:

C/C++

  1. /********************************************************************
  2. File        : UiStrengthRank.h
  3. Creator     : Fyt(Fan Zhanpeng)
  4. create data : 08-11-2003(mm-dd-yyyy)
  5. Description : 排名窗口的头文件
  6. *********************************************************************/
  7. #if !defined(AFX_KUISTRENGTHORDER_H__7801F7C7_BAE8_4A49_BEA8_63B5F8FA0BB1__INCLUDED_)
  8. #define AFX_KUISTRENGTHORDER_H__7801F7C7_BAE8_4A49_BEA8_63B5F8FA0BB1__INCLUDED_
  9. #if _MSC_VER > 1000
  10. #pragma once
  11. #endif // _MSC_VER > 1000
  12. #include "KIniFile.h"
  13. #include "../Elem/WndShowAnimate.h"
  14. #include "../Elem/WndButton.h"
  15. #include "../Elem/WndScrollBar.h"
  16. #include "../Elem/WndList.h"
  17. #include "../Elem/WndMessageListBox.h"
  18. #include "../../../Engine/src/LinkStruct.h"
  19. #include "../../Core/Src/GameDataDef.h"
  20. #define MAX_RANK_MESSAGE_LENGTH 128
  21. struct KRankIndexNode : public KRankIndex
  22. {
  23. char szMsg[MAX_RANK_MESSAGE_LENGTH];
  24. int  nMsgLen;
  25. char szUnit[16];
  26. KRankIndexNode *next;
  27. KRankIndexNode *previous;
  28. };
  29. struct KRankNode : public KRankMessage
  30. {
  31. KRankNode* next;
  32. KRankNode* previous;
  33. };
  34. class KUiStrengthRank : public KWndShowAnimate
  35. {
  36. public:
  37. KUiStrengthRank();
  38. virtual ~KUiStrengthRank();
  39. static        KUiStrengthRank* OpenWindow();    //打开窗口
  40. static        KUiStrengthRank* OpenDefaultWindow(int nId = -1);
  41. static        KUiStrengthRank* GetIfVisible();  //如果窗口正被显示,则返回实例指针
  42. static void   CloseWindow(bool bDestory = TRUE);//关闭窗口,同时可以选则是否删除对象实例
  43. static void   LoadScheme(const char* pScheme);  //载入界面方案
  44. //新的排名数据来了
  45. static void   NewRankArrive(unsigned int uParam, KRankMessage *pRankData);
  46. //新的索引数据来了
  47. static void   NewIndexArrive(unsigned int uParam, struct KRankIndex *pIndex);
  48. static int    AttachTempFile();                            //检测临时文件是否存在,不存在则创建
  49. static void   RemoveTempFile();                            //删除临时文件
  50. private:
  51. static void   StoreTempData( );                            //把索引和排名记录进临时文件
  52. static void   StoreNewDataToTempFile(unsigned int uParam,  //把新收到的排名资料存到临时文件
  53.                                  KRankMessage *pInData);
  54. static void   StoreNewDataToTempFile(unsigned int uParam,  //把新收到的索引资料存到临时文件
  55.                                  KRankIndex *pInData);
  56. private:
  57. int    WndProc(unsigned int uMsg, unsigned int uParam, int nParam);
  58. virtual void Breathe();                                    //咦?为什么这里也有?
  59. private:
  60. static KUiStrengthRank* m_pSelf;
  61. private:
  62. void   Initialize();
  63. // void   UpdateIndexData();                   //更新索引的数据
  64. void   UpdateRankData(int nID);             //更新指定排名的数据
  65. static void StoreTempIni();                 //把索引和排名记录进临时文件
  66. BOOL   LoadIndexIni(KIniFile *Ini);         //从INI中载入索引数据
  67. BOOL   LoadRankIni(KIniFile *Ini, int nID); //从INI中载入排名数据
  68.                                                 //这是空行
  69. // void   SendRobIndexToCore();                //从Core那里抢劫索引数据
  70. // void   SendGetIndexToCore();                //功能同上,从Core那里获取索引数据
  71. void   SendGetRankToCore(int nID);          //向Core发送获取排名数据的请求
  72.                                                 //这也是空行
  73. void   ConstructIndexView();                //把Index的数据(m_data)构造进去m_indexList里面,以显示出来
  74. void   ConstructRankView();                 //把Rank的排名数据构造进去m_RankList里面,以显示出来
  75. void   ReleasePic();                        //释放图形资源
  76. void   ReleaseData();                       //释放数据和重置显示
  77. void   ArrangeDefaultData();                //安排默认数据的显示
  78. static void   AddRank(unsigned int uParam, KRankMessage *pRankData);
  79. static void   AddIndex(unsigned int uParam, struct KRankIndex *pIndex);
  80. private:
  81. KWndButton   m_BtnClose;
  82. KWndList   m_IndexList;
  83. KWndScrollBar   m_IndexScroll;
  84. KWndMessageListBox   m_RankList;
  85. KWndScrollBar   m_RankScroll;
  86. static KIniFile           m_IndexIDIni;
  87. static KLinkStruct<KRankIndexNode> m_IndexData; //所有索引数据的链表
  88. static KLinkStruct<KRankNode> m_RankData;       //一项排名数据的链表
  89. unsigned int              m_uColor;
  90. static BOOL               m_bIsIndexDataChange;//索引数据改变了吗?
  91. static BOOL               m_bIsRankDataChange; //排名数据改变了吗?
  92. KRankIndexNode           *m_pCurrentIndexNode; //当前正在显示的排名的索引
  93. int                       m_nFontSize;          //字体大小
  94. int                       m_nLineLen;           //计算出来的行长度
  95. int                       m_nDefaultID;          //默认的排名窗口的ID,现在只有一个,就用一个变量记了
  96. unsigned char            *m_pIDontThinkSo;      //我是为了WndList而存在,好伟大的爱情啊~~(这是传给WndList的SetContent的数组指针)
  97.     unsigned short            m_usUpPic;            //上升的图片
  98. unsigned short            m_usSteadyPic;        //持平的图片
  99. unsigned short            m_usDownPic;          //下降的图片
  100. int   m_nLastIndex;
  101. unsigned int             *m_pLastGettimes;
  102. unsigned int              m_uLastGetIndexTime;
  103. unsigned int              m_uLastGetRankTime;
  104. char                      m_szUpPicPath[128];
  105. char                      m_szDownPicPath[128];
  106. char                      m_szSteadyPicPath[128];
  107. };
  108. int TDrawOutString(char *szBuf, int nBufLen, int nLineLen, int nFontSize);
  109. #endif // !defined(AFX_KUISTRENGTHORDER_H__7801F7C7_BAE8_4A49_BEA8_63B5F8FA0BB1__INCLUDED_)