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

模拟服务器

开发平台:

C/C++

  1. /*******************************************************************************
  2. File        : UiTongManager.h
  3. Creator     : Fyt(Fan Zhanpeng)
  4. create data : 08-29-2003(mm-dd-yyyy)
  5. Description : 管理帮会的界面
  6. ********************************************************************************/
  7. #if !defined(AFX_UITONGMANAGER_H__13BA213D_11EC_4F24_BF98_F51C3F414D6D__INCLUDED_)
  8. #define AFX_UITONGMANAGER_H__13BA213D_11EC_4F24_BF98_F51C3F414D6D__INCLUDED_
  9. #if _MSC_VER > 1000
  10. #pragma once
  11. #endif // _MSC_VER > 1000
  12. #include "../elem/wndlabeledbutton.h"
  13. #include "../elem/wndscrollbar.h"
  14. #include "../elem/wndimage.h"
  15. #include "../elem/wndlist2.h"
  16. #include "../../Engine/Src/LinkStruct.h"
  17. #include "../../Core/Src/GameDataDef.h"
  18. struct KPilgarlicItem : public KTongMemberItem
  19. {
  20. int nHashID;
  21. KPilgarlicItem *next;
  22.     KPilgarlicItem *previous;
  23. };
  24. class KUiTongManager : KWndImage
  25. {
  26. public:
  27. KUiTongManager();
  28. virtual ~KUiTongManager();
  29. static        KUiTongManager* OpenWindow();      //打开窗口
  30. static        KUiTongManager* OpenWindow(        //打开窗口,同时安排界面布局
  31.                                      char* pszPlayerName);
  32. static        KUiTongManager* GetIfVisible();    //如果窗口正被显示,则返回实例指针
  33. static void   CloseWindow(bool bDestory = TRUE); //关闭窗口,同时可以选则是否删除对象实例
  34. static void   LoadScheme(const char* pScheme);   //载入界面方案
  35.                                                  //接受新的数据
  36. static void   NewDataArrive(KUiGameObjectWithName *ParamInfo, KTongMemberItem *pIncome);
  37.                                                  //接受帮会信息
  38. static void   TongInfoArrive(KUiPlayerRelationWithOther* Relation, KTongInfo *pTongInfo);
  39. static int    RemoveTempFile();                  //删除临时文件
  40. static void   ResponseResult(                    //对结果的响应入口
  41.                          KUiGameObjectWithName *pResult, int nbIsSucceed);
  42. public:
  43. virtual int   WndProc(unsigned int uMsg, unsigned int uParam, int nParam);
  44. void          ArrangeComposition(                //根据传入的玩家名字,安排界面布局
  45.                              char* pszPlayerName);
  46. private:
  47. void          Initialize();
  48. void          PopupConfirmWindow(                //弹出确认窗口
  49.                         const char* pszInfo, unsigned int uHandleID);
  50. static void   RequestData(int nType, int nIndex);//向Core发出数据请求
  51. static void   SaveNewData(                       //把新到的列表信息存到临时文件
  52.                         KUiGameObjectWithName *ParamInfo, KTongMemberItem *pIncome);
  53. static void   SaveWholeData(int nType);          //把指定类型的列表数据整个存储起来
  54. static int    IsPlayerExist(                     //查询特定名字的玩家是否已经存在
  55.                         KPilgarlicItem *MeToCmp, KLinkStruct<KPilgarlicItem> *pData);
  56. KLinkStruct<KPilgarlicItem>*                     //查询特定名字的玩家的数据位置
  57.           FindPlayer(char *pszName);
  58. KLinkStruct<KPilgarlicItem>*                     //查找玩家处理函数
  59.           HandleFind(KLinkStruct<KPilgarlicItem> *pData, char *pszName);
  60. void          LoadData(int nType);               //载入资料
  61. int           LoadDataHandler(                   //载入资料的处理函数
  62.                         KLinkStruct<KPilgarlicItem> *pData,
  63.     const char* szSection);
  64. void          UpdateBtnTheme(                    //更新按钮配置方案
  65.                         int nType, BOOL IsDissable = FALSE);
  66. KLinkStruct<KPilgarlicItem>*                     //返回当前所选择的列表类型所对应的数据集
  67.           GetCurrentSelectedData();
  68. KPilgarlicItem*                                  //返回所选择的会员
  69.           GetSelectedPlayer();
  70. void          UpdateTongInfoView();              //更新帮会讯息的显示
  71. void          UpdateTongListView();              //更新列表栏
  72. void          ClearTongData();                   //把帮会信息栏清空
  73. void          UpdateListCheckButton(int nType);  //三个列表CheckBox的管理
  74. void          OnAction(int nType);               //各种帮会操作的处理函数
  75. void          OnRefresh();                       //响应刷新按钮的操作函数
  76. void          ResponseLeave(                     //响应离帮后的操作
  77.                         KUiGameObjectWithName *pResult, int nbIsSucceed);
  78. void          ResponseDismiss(                   //响应踢人后的操作
  79.                         KUiGameObjectWithName *pResult, int nbIsSucceed);
  80. void          ResponseDemise(                    //响应传位后的操作
  81.                         KUiGameObjectWithName *pResult, int nbIsSucceed);
  82. void          ResponseAssign(                    //响应任命后的操作
  83.                         KUiGameObjectWithName *pResult, int nbIsSucceed);
  84. void          ResponseApply(                     //响应申请后的操作
  85.                         KUiGameObjectWithName *pResult, int nbIsSucceed);
  86. private:
  87. static        KUiTongManager* ms_pSelf;
  88. static int    m_nElderDataIndex;
  89. static int    m_nMemberDataIndex;
  90. static int    m_nCaptainDataIndex;
  91. private:
  92. enum RESULT_TYPE
  93. {
  94. RESULT_T_DISMISS,
  95. RESULT_T_ASSIGN,
  96. RESULT_T_DEMISE,
  97. RESULT_T_LEAVE,
  98. RESULT_T_PASSWORD_TO_DEMISE,
  99. };
  100. private:
  101. KWndLabeledButton                                //踢人,任命,传位按钮
  102.           m_BtnDismiss, m_BtnAssign, m_BtnDemise;
  103. KWndLabeledButton
  104.           m_BtnLeave, m_BtnRecruit;          //离帮,招人按钮
  105. KWndLabeledButton
  106.           m_BtnApply, m_BtnCancel;           //申请,取消按钮
  107. KWndLabeledButton                                //长老、队长、成员列表
  108.           m_BtnElderList, m_BtnCaptainList, m_BtnMemberList;
  109. KWndButton    m_BtnClose, m_BtnRefresh;
  110. KWndText32    m_TongName, m_MasterName;          //帮会名字,老大名字(五月)
  111. KWndText32    m_Alignment;                       //阵营名字
  112. KWndText32    m_MemberCount, m_Money;            //人数,资金
  113. KWndList2     m_List;                            //中间的列表控件
  114. KWndScrollBar m_ListScroll;                      //列表的滚动条
  115. TONG_MEMBER_FIGURE
  116.           m_Relation;                        //打开这个界面的人与目标帮会的关系
  117. private:
  118. KLinkStruct<KPilgarlicItem>
  119.           m_MemberData, m_CaptainData;       //成员列表和队长列表的数据
  120. KLinkStruct<KPilgarlicItem> m_ElderData;         //长老列表
  121. static KTongInfo            m_TongData;          //帮会的资料数据
  122. private:
  123. unsigned int  m_uLastRequestTongDataTime;        //上一次请求帮会资料的时间
  124. unsigned int  m_uLastRequestElderListTime;       //上一次请求长老列表的时间
  125. unsigned int  m_uLastRequestMemberListTime;      //上一次请求帮众列表的时间
  126. unsigned int  m_uLastRequestCaptainListTime;     //上一次请求队长列表的时间
  127. int           m_nRelation;                       //下面那个玩家与所打开的帮会的关系
  128. int           m_nIndex;                          //与下面那个对应的玩家的Index
  129. char          m_szPlayerName[32];                //帮会界面打开,都有一个绑定的玩家,
  130.                                                  //或别人,或自己,这就是他(她)的
  131.                                                  //名字。另一个角度说,每一次打开界面
  132.                                                  //都绑定一个帮会,而帮会绑定到人
  133. int           m_nSelectIndex;                    //在列表上选择的项的下标
  134. int           m_nCurrentCheckBox;                //正在选择的CheckBox
  135. char          m_szDismiss[64], m_szAssign[64];   //踢人和任命的确认框的字符串
  136. char          m_szDemise[64], m_szLeave[64];     //传位和离开的确认框的字符串
  137. char          m_szJustice[16], m_szBalance[16];  //正和中的描述串
  138. char          m_szEvil[16];                      //邪的描述串
  139. char          m_szConfirm[16], m_szCancel[16];   //确认窗口上,确认和取消的文字
  140. char          m_szPassword[32];                  //MD5编码之后的密码串
  141. char          m_szTargetPlayerName[32];          //操作对象玩家的名字
  142. };
  143. unsigned long StringToHash(const char *pString, BOOL bIsCaseSensitive = TRUE);
  144. #endif // !defined(AFX_UITONGMANAGER_H__13BA213D_11EC_4F24_BF98_F51C3F414D6D__INCLUDED_)