诸暨麻将添加redis
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

316 lignes
8.5 KiB

  1. #ifndef GLOBAL_USER_MANAGER_HEAD_FILE
  2. #define GLOBAL_USER_MANAGER_HEAD_FILE
  3. #pragma once
  4. #include "Stdafx.h"
  5. #include "AfxTempl.h"
  6. //////////////////////////////////////////////////////////////////////////////////
  7. //类说明
  8. class CGlobalUserItem;
  9. class CGlobalPlazaItem;
  10. class CGlobalServerItem;
  11. class CAttemperEngineSink;
  12. //数组定义
  13. typedef CWHArray<CGlobalUserItem *> CGlobalUserItemArray;
  14. typedef CWHArray<CGlobalPlazaItem *> CGlobalPlazaItemArray;
  15. typedef CWHArray<CGlobalServerItem *> CGlobalServerItemArray;
  16. //索引定义
  17. typedef CMap<DWORD, DWORD, CGlobalUserItem *, CGlobalUserItem *> CMapUserID;
  18. typedef CMap<DWORD, DWORD, CGlobalUserItem *, CGlobalUserItem *> CMapGameID;
  19. typedef CMap<WORD, WORD, CGlobalPlazaItem *, CGlobalPlazaItem *> CMapPlazaID;
  20. typedef CMap<WORD, WORD, CGlobalServerItem *, CGlobalServerItem *> CMapServerID;
  21. typedef CMap<DWORD, DWORD, JN_GR_RoomListGroup, JN_GR_RoomListGroup> CMapRoomList;
  22. typedef CMap<DWORD, DWORD, JN_GR_RoomListBig, JN_GR_RoomListBig> CPrivateRoomList;
  23. //////////////////////////////////////////////////////////////////////////////////
  24. //结构定义
  25. //用户信息
  26. struct tagGlobalUserInfo
  27. {
  28. //用户信息
  29. DWORD dwUserID; //用户标识
  30. DWORD dwGameID; //游戏标识
  31. //TCHAR szNickName[LEN_NICKNAME]; //用户昵称
  32. //辅助信息
  33. BYTE cbGender; //用户性别
  34. BYTE cbMemberOrder; //会员等级
  35. BYTE cbMasterOrder; //管理等级
  36. };
  37. //////////////////////////////////////////////////////////////////////////////////
  38. //用户子项
  39. class CGlobalUserItem
  40. {
  41. //友元定义
  42. friend class CGlobalInfoManager;
  43. //用户属性
  44. public:
  45. DWORD m_dwUserID; //用户标识
  46. DWORD m_dwGameID; //游戏标识
  47. //TCHAR m_szNickName[LEN_NICKNAME]; //用户昵称
  48. bool IsPlaying; //是否在桌子里打牌
  49. //辅助信息
  50. public:
  51. BYTE m_cbGender; //用户性别
  52. BYTE m_cbMemberOrder; //会员等级
  53. BYTE m_cbMasterOrder; //管理等级
  54. //房间信息
  55. public:
  56. CGlobalServerItemArray m_GlobalServerItemArray; //游戏服务数组
  57. WORD m_ServerID; //最后登录的服务器
  58. //链表属性
  59. protected:
  60. CGlobalUserItem * m_pNextUserItemPtr; //对象指针
  61. //函数定义
  62. protected:
  63. //构造函数
  64. CGlobalUserItem();
  65. //析构函数
  66. virtual ~CGlobalUserItem();
  67. //功能函数
  68. public:
  69. //用户标识
  70. DWORD GetUserID() { return m_dwUserID; }
  71. //游戏标识
  72. DWORD GetGameID() { return m_dwGameID; }
  73. //用户昵称
  74. //LPCTSTR GetNickName() { return m_szNickName; }
  75. //用户信息
  76. public:
  77. //用户性别
  78. BYTE GetGender() { return m_cbGender; }
  79. //会员等级
  80. BYTE GetMemberOrder() { return m_cbMemberOrder; }
  81. //会员等级
  82. BYTE GetMasterOrder() { return m_cbMasterOrder; }
  83. //其他信息
  84. public:
  85. //枚举服务器
  86. CGlobalServerItem * EnumServerItem(WORD wIndex);
  87. };
  88. //////////////////////////////////////////////////////////////////////////////////
  89. //广场子项
  90. class CGlobalPlazaItem
  91. {
  92. //友元定义
  93. friend class CGlobalInfoManager;
  94. //变量定义
  95. public:
  96. WORD m_wIndex; //绑定索引
  97. tagGamePlaza m_GamePlaza; //游戏广场
  98. ///[---add by yd
  99. WORD GetPlazaServerID() { return m_GamePlaza.wServerID; }
  100. ///---]
  101. //索引变量
  102. public:
  103. CMapUserID m_MapUserID; //用户索引
  104. //链表属性
  105. protected:
  106. CGlobalPlazaItem * m_pNextPlazaItemPtr; //对象指针
  107. //函数定义
  108. protected:
  109. //构造函数
  110. CGlobalPlazaItem();
  111. //析构函数
  112. virtual ~CGlobalPlazaItem();
  113. };
  114. //////////////////////////////////////////////////////////////////////////////////
  115. //房间子项
  116. class CGlobalServerItem
  117. {
  118. //友元定义
  119. friend class CGlobalInfoManager;
  120. //变量定义
  121. public:
  122. WORD m_wIndex; //绑定索引
  123. tagGameServer m_GameServer; //游戏房间
  124. tagGameMatch m_GameMatch; //游戏比赛
  125. //索引变量
  126. public:
  127. CMapUserID m_MapUserID; //用户索引
  128. //链表属性
  129. protected:
  130. CGlobalServerItem * m_pNextServerItemPtr; //对象指针
  131. //函数定义
  132. protected:
  133. //构造函数
  134. CGlobalServerItem();
  135. //析构函数
  136. virtual ~CGlobalServerItem();
  137. //功能函数
  138. public:
  139. //绑定索引
  140. WORD GetIndex() { return m_wIndex; }
  141. //获取类型
  142. WORD GetKindID() { return m_GameServer.wKindID; }
  143. //获取房间
  144. WORD GetServerID() { return m_GameServer.wServerID; }
  145. //用户数目
  146. DWORD GetUserItemCount() { return (DWORD)m_MapUserID.GetCount(); }
  147. //比赛房间
  148. bool IsMatchServer() { return (m_GameMatch.wServerID == m_GameServer.wServerID) && m_GameMatch.dwMatchID != 0; }
  149. //查找函数
  150. public:
  151. //寻找用户
  152. CGlobalUserItem * SearchUserItem(DWORD dwUserID);
  153. };
  154. //////////////////////////////////////////////////////////////////////////////////
  155. //全局信息
  156. class CGlobalInfoManager
  157. {
  158. //索引变量
  159. protected:
  160. CMapUserID m_MapUserID; //用户标识
  161. CMapPlazaID m_MapPlazaID; //登陆服务器标识
  162. CMapServerID m_MapServerID; //中心服务器标识
  163. CMapRoomList m_RoomList; //私人房间列表 以用户为KEY
  164. CPrivateRoomList m_PrivateRoom; //以房间号为标识
  165. //辅助索引
  166. protected:
  167. CMapGameID m_MapGameID; //标识索引
  168. /// CMapStringToPtr m_MapNickName; //昵称索引
  169. //存储变量
  170. protected:
  171. CGlobalUserItem * m_pGlobalUserItem; //用户存储
  172. CGlobalPlazaItem * m_pGlobalPlazaItem; //广场存储
  173. CGlobalServerItem * m_pGlobalServerItem; //房间存储
  174. //框架
  175. public:
  176. CAttemperEngineSink* m_pCAttemperEngineSink; //框架
  177. //函数定义
  178. public:
  179. //构造函数
  180. CGlobalInfoManager();
  181. //析构函数
  182. virtual ~CGlobalInfoManager();
  183. //管理函数
  184. public:
  185. //重置数据
  186. VOID ResetData();
  187. //用户数目
  188. DWORD GetUserItemCount() { return (DWORD)m_MapUserID.GetCount(); }
  189. //大厅数目
  190. DWORD GetPlazaItemCount() { return (DWORD)m_MapPlazaID.GetCount(); }
  191. //房间数目
  192. DWORD GetServerItemCount() { return (DWORD)m_MapServerID.GetCount(); }
  193. //用户管理
  194. public:
  195. //删除用户
  196. bool DeleteUserItem(DWORD dwUserID, WORD wServerID);
  197. //删除用户
  198. bool DeleteUserItem(DWORD dwUserID);
  199. //激活用户
  200. int ActiveUserItem(tagGlobalUserInfo & GlobalUserInfo, WORD wServerID);
  201. //广场管理
  202. public:
  203. //删除广场
  204. bool DeletePlazaItem(WORD wPlazaID);
  205. ///[---add by yd 通过serverID删除
  206. bool DeletePlazaItemByServerID(WORD wServerID);
  207. ///---]
  208. //激活广场
  209. bool ActivePlazaItem(WORD wBindIndex, tagGamePlaza & GamePlaza);
  210. //房间管理
  211. public:
  212. //删除房间
  213. bool DeleteServerItem(WORD wServerID);
  214. //激活房间
  215. bool ActiveServerItem(WORD wBindIndex, tagGameServer & GameServer);
  216. //服务查找
  217. public:
  218. //寻找广场
  219. CGlobalPlazaItem * SearchPlazaItem(WORD wPlazaID);
  220. ///[---add by yd
  221. //获取房间
  222. CGlobalPlazaItem * SearchPlazaItemByServerID(WORD wServerID);
  223. ///---]
  224. //寻找房间
  225. CGlobalServerItem * SearchServerItem(WORD wServerID);
  226. //设置框架
  227. void SetFromP(CAttemperEngineSink* pCAttemperEngineSink) { m_pCAttemperEngineSink = pCAttemperEngineSink; }
  228. //用户查找
  229. public:
  230. //寻找用户
  231. CGlobalUserItem * SearchUserItemByUserID(DWORD dwUserID);
  232. //寻找用户
  233. CGlobalUserItem * SearchUserItemByGameID(DWORD dwGameID);
  234. //寻找用户
  235. // CGlobalUserItem * SearchUserItemByNickName(LPCTSTR pszNickName);
  236. //枚举函数
  237. public:
  238. //枚举用户
  239. CGlobalUserItem * EnumUserItem(POSITION & Position);
  240. //枚举广场
  241. CGlobalPlazaItem * EnumPlazaItem(POSITION & Position);
  242. //枚举房间
  243. CGlobalServerItem * EnumServerItem(POSITION & Position);
  244. //创建函数
  245. private:
  246. //创建用户
  247. CGlobalUserItem * CreateGlobalUserItem();
  248. //创建广场
  249. CGlobalPlazaItem * CreateGlobalPlazaItem();
  250. //创建房间
  251. CGlobalServerItem * CreateGlobalServerItem();
  252. //释放函数
  253. private:
  254. //释放用户
  255. bool FreeGlobalUserItem(CGlobalUserItem * pGlobalUserItem);
  256. //释放广场
  257. bool FreeGlobalPlazaItem(CGlobalPlazaItem * pGlobalPlazaItem);
  258. //释放房间
  259. bool FreeGlobalServerItem(CGlobalServerItem * pGlobalServerItem);
  260. //私人房间列表
  261. public:
  262. //获取用户创建的房间MAP
  263. CMapRoomList* GetRoomData(){ return &m_RoomList; }
  264. //以房间号为标识MAP
  265. CPrivateRoomList* GetPrivateRoom(){ return &m_PrivateRoom; }
  266. CMapServerID* GetMapServerID(){ return &m_MapServerID; }
  267. CMapUserID* GetMapUserID(){ return &m_MapUserID; }
  268. };
  269. //////////////////////////////////////////////////////////////////////////////////
  270. #endif