#ifndef GLOBAL_USER_MANAGER_HEAD_FILE #define GLOBAL_USER_MANAGER_HEAD_FILE #pragma once #include "Stdafx.h" #include "AfxTempl.h" ////////////////////////////////////////////////////////////////////////////////// //类说明 class CGlobalUserItem; class CGlobalPlazaItem; class CGlobalServerItem; class CAttemperEngineSink; //数组定义 typedef CWHArray CGlobalUserItemArray; typedef CWHArray CGlobalPlazaItemArray; typedef CWHArray CGlobalServerItemArray; //索引定义 typedef CMap CMapUserID; typedef CMap CMapGameID; typedef CMap CMapPlazaID; typedef CMap CMapServerID; typedef CMap CMapRoomList; typedef CMap CPrivateRoomList; ////////////////////////////////////////////////////////////////////////////////// //结构定义 //用户信息 struct tagGlobalUserInfo { //用户信息 DWORD dwUserID; //用户标识 DWORD dwGameID; //游戏标识 //TCHAR szNickName[LEN_NICKNAME]; //用户昵称 //辅助信息 BYTE cbGender; //用户性别 BYTE cbMemberOrder; //会员等级 BYTE cbMasterOrder; //管理等级 }; ////////////////////////////////////////////////////////////////////////////////// //用户子项 class CGlobalUserItem { //友元定义 friend class CGlobalInfoManager; //用户属性 public: DWORD m_dwUserID; //用户标识 DWORD m_dwGameID; //游戏标识 //TCHAR m_szNickName[LEN_NICKNAME]; //用户昵称 bool IsPlaying; //是否在桌子里打牌 //辅助信息 public: BYTE m_cbGender; //用户性别 BYTE m_cbMemberOrder; //会员等级 BYTE m_cbMasterOrder; //管理等级 //房间信息 public: CGlobalServerItemArray m_GlobalServerItemArray; //游戏服务数组 WORD m_ServerID; //最后登录的服务器 //链表属性 protected: CGlobalUserItem * m_pNextUserItemPtr; //对象指针 //函数定义 protected: //构造函数 CGlobalUserItem(); //析构函数 virtual ~CGlobalUserItem(); //功能函数 public: //用户标识 DWORD GetUserID() { return m_dwUserID; } //游戏标识 DWORD GetGameID() { return m_dwGameID; } //用户昵称 //LPCTSTR GetNickName() { return m_szNickName; } //用户信息 public: //用户性别 BYTE GetGender() { return m_cbGender; } //会员等级 BYTE GetMemberOrder() { return m_cbMemberOrder; } //会员等级 BYTE GetMasterOrder() { return m_cbMasterOrder; } //其他信息 public: //枚举服务器 CGlobalServerItem * EnumServerItem(WORD wIndex); }; ////////////////////////////////////////////////////////////////////////////////// //广场子项 class CGlobalPlazaItem { //友元定义 friend class CGlobalInfoManager; //变量定义 public: WORD m_wIndex; //绑定索引 tagGamePlaza m_GamePlaza; //游戏广场 ///[---add by yd WORD GetPlazaServerID() { return m_GamePlaza.wServerID; } ///---] //索引变量 public: CMapUserID m_MapUserID; //用户索引 //链表属性 protected: CGlobalPlazaItem * m_pNextPlazaItemPtr; //对象指针 //函数定义 protected: //构造函数 CGlobalPlazaItem(); //析构函数 virtual ~CGlobalPlazaItem(); }; ////////////////////////////////////////////////////////////////////////////////// //房间子项 class CGlobalServerItem { //友元定义 friend class CGlobalInfoManager; //变量定义 public: WORD m_wIndex; //绑定索引 tagGameServer m_GameServer; //游戏房间 tagGameMatch m_GameMatch; //游戏比赛 //索引变量 public: CMapUserID m_MapUserID; //用户索引 //链表属性 protected: CGlobalServerItem * m_pNextServerItemPtr; //对象指针 //函数定义 protected: //构造函数 CGlobalServerItem(); //析构函数 virtual ~CGlobalServerItem(); //功能函数 public: //绑定索引 WORD GetIndex() { return m_wIndex; } //获取类型 WORD GetKindID() { return m_GameServer.wKindID; } //获取房间 WORD GetServerID() { return m_GameServer.wServerID; } //用户数目 DWORD GetUserItemCount() { return (DWORD)m_MapUserID.GetCount(); } //比赛房间 bool IsMatchServer() { return (m_GameMatch.wServerID == m_GameServer.wServerID) && m_GameMatch.dwMatchID != 0; } //查找函数 public: //寻找用户 CGlobalUserItem * SearchUserItem(DWORD dwUserID); }; ////////////////////////////////////////////////////////////////////////////////// //全局信息 class CGlobalInfoManager { //索引变量 protected: CMapUserID m_MapUserID; //用户标识 CMapPlazaID m_MapPlazaID; //登陆服务器标识 CMapServerID m_MapServerID; //中心服务器标识 CMapRoomList m_RoomList; //私人房间列表 以用户为KEY CPrivateRoomList m_PrivateRoom; //以房间号为标识 //辅助索引 protected: CMapGameID m_MapGameID; //标识索引 /// CMapStringToPtr m_MapNickName; //昵称索引 //存储变量 protected: CGlobalUserItem * m_pGlobalUserItem; //用户存储 CGlobalPlazaItem * m_pGlobalPlazaItem; //广场存储 CGlobalServerItem * m_pGlobalServerItem; //房间存储 //框架 public: CAttemperEngineSink* m_pCAttemperEngineSink; //框架 //函数定义 public: //构造函数 CGlobalInfoManager(); //析构函数 virtual ~CGlobalInfoManager(); //管理函数 public: //重置数据 VOID ResetData(); //用户数目 DWORD GetUserItemCount() { return (DWORD)m_MapUserID.GetCount(); } //大厅数目 DWORD GetPlazaItemCount() { return (DWORD)m_MapPlazaID.GetCount(); } //房间数目 DWORD GetServerItemCount() { return (DWORD)m_MapServerID.GetCount(); } //用户管理 public: //删除用户 bool DeleteUserItem(DWORD dwUserID, WORD wServerID); //删除用户 bool DeleteUserItem(DWORD dwUserID); //激活用户 int ActiveUserItem(tagGlobalUserInfo & GlobalUserInfo, WORD wServerID); //广场管理 public: //删除广场 bool DeletePlazaItem(WORD wPlazaID); ///[---add by yd 通过serverID删除 bool DeletePlazaItemByServerID(WORD wServerID); ///---] //激活广场 bool ActivePlazaItem(WORD wBindIndex, tagGamePlaza & GamePlaza); //房间管理 public: //删除房间 bool DeleteServerItem(WORD wServerID); //激活房间 bool ActiveServerItem(WORD wBindIndex, tagGameServer & GameServer); //服务查找 public: //寻找广场 CGlobalPlazaItem * SearchPlazaItem(WORD wPlazaID); ///[---add by yd //获取房间 CGlobalPlazaItem * SearchPlazaItemByServerID(WORD wServerID); ///---] //寻找房间 CGlobalServerItem * SearchServerItem(WORD wServerID); //设置框架 void SetFromP(CAttemperEngineSink* pCAttemperEngineSink) { m_pCAttemperEngineSink = pCAttemperEngineSink; } //用户查找 public: //寻找用户 CGlobalUserItem * SearchUserItemByUserID(DWORD dwUserID); //寻找用户 CGlobalUserItem * SearchUserItemByGameID(DWORD dwGameID); //寻找用户 // CGlobalUserItem * SearchUserItemByNickName(LPCTSTR pszNickName); //枚举函数 public: //枚举用户 CGlobalUserItem * EnumUserItem(POSITION & Position); //枚举广场 CGlobalPlazaItem * EnumPlazaItem(POSITION & Position); //枚举房间 CGlobalServerItem * EnumServerItem(POSITION & Position); //创建函数 private: //创建用户 CGlobalUserItem * CreateGlobalUserItem(); //创建广场 CGlobalPlazaItem * CreateGlobalPlazaItem(); //创建房间 CGlobalServerItem * CreateGlobalServerItem(); //释放函数 private: //释放用户 bool FreeGlobalUserItem(CGlobalUserItem * pGlobalUserItem); //释放广场 bool FreeGlobalPlazaItem(CGlobalPlazaItem * pGlobalPlazaItem); //释放房间 bool FreeGlobalServerItem(CGlobalServerItem * pGlobalServerItem); //私人房间列表 public: //获取用户创建的房间MAP CMapRoomList* GetRoomData(){ return &m_RoomList; } //以房间号为标识MAP CPrivateRoomList* GetPrivateRoom(){ return &m_PrivateRoom; } CMapServerID* GetMapServerID(){ return &m_MapServerID; } CMapUserID* GetMapUserID(){ return &m_MapUserID; } }; ////////////////////////////////////////////////////////////////////////////////// #endif