Files

287 lines
6.5 KiB
C
Raw Permalink Normal View History

2026-02-13 14:34:15 +08:00
#ifndef GLOBAL_USER_MANAGER_HEAD_FILE
#define GLOBAL_USER_MANAGER_HEAD_FILE
#pragma once
#include "Stdafx.h"
#include "AfxTempl.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><>˵<EFBFBD><CBB5>
class CGlobalUserItem;
class CGlobalPlazaItem;
class CGlobalServerItem;
//<2F><><EFBFBD><EFBFBD><E9B6A8>
typedef CWHArray<CGlobalUserItem *> CGlobalUserItemArray;
typedef CWHArray<CGlobalPlazaItem *> CGlobalPlazaItemArray;
typedef CWHArray<CGlobalServerItem *> CGlobalServerItemArray;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef CMap<DWORD,DWORD,CGlobalUserItem *,CGlobalUserItem *> CMapUserID;
typedef CMap<DWORD,DWORD,CGlobalUserItem *,CGlobalUserItem *> CMapGameID;
typedef CMap<WORD,WORD,CGlobalPlazaItem *,CGlobalPlazaItem *> CMapPlazaID;
typedef CMap<WORD,WORD,CGlobalServerItem *,CGlobalServerItem *> CMapServerID;
//////////////////////////////////////////////////////////////////////////////////
//<2F><EFBFBD><E1B9B9><EFBFBD><EFBFBD>
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
struct tagGlobalUserInfo
{
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
DWORD dwUserID; //<2F>û<EFBFBD><C3BB><EFBFBD>ʶ
DWORD dwGameID; //<2F><>Ϸ<EFBFBD><CFB7>ʶ
TCHAR szNickName[LEN_NICKNAME]; //<2F>û<EFBFBD><C3BB>dz<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
BYTE cbGender; //<2F>û<EFBFBD><C3BB>Ա<EFBFBD>
BYTE cbMemberOrder; //<2F><>Ա<EFBFBD>ȼ<EFBFBD>
BYTE cbMasterOrder; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
};
//////////////////////////////////////////////////////////////////////////////////
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
class CGlobalUserItem
{
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
friend class CGlobalInfoManager;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
public:
DWORD m_dwUserID; //<2F>û<EFBFBD><C3BB><EFBFBD>ʶ
DWORD m_dwGameID; //<2F><>Ϸ<EFBFBD><CFB7>ʶ
TCHAR m_szNickName[LEN_NICKNAME]; //<2F>û<EFBFBD><C3BB>dz<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
public:
BYTE m_cbGender; //<2F>û<EFBFBD><C3BB>Ա<EFBFBD>
BYTE m_cbMemberOrder; //<2F><>Ա<EFBFBD>ȼ<EFBFBD>
BYTE m_cbMasterOrder; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
public:
CGlobalServerItemArray m_GlobalServerItemArray; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
CGlobalUserItem * m_pNextUserItemPtr; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGlobalUserItem();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CGlobalUserItem();
//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
public:
//<2F>û<EFBFBD><C3BB><EFBFBD>ʶ
DWORD GetUserID() { return m_dwUserID; }
//<2F><>Ϸ<EFBFBD><CFB7>ʶ
DWORD GetGameID() { return m_dwGameID; }
//<2F>û<EFBFBD><C3BB>dz<EFBFBD>
LPCTSTR GetNickName() { return m_szNickName; }
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD><C3BB>Ա<EFBFBD>
BYTE GetGender() { return m_cbGender; }
//<2F><>Ա<EFBFBD>ȼ<EFBFBD>
BYTE GetMemberOrder() { return m_cbMemberOrder; }
//<2F><>Ա<EFBFBD>ȼ<EFBFBD>
BYTE GetMasterOrder() { return m_cbMasterOrder; }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
public:
//ö<>ٷ<EFBFBD><D9B7><EFBFBD>
CGlobalServerItem * EnumServerItem(WORD wIndex);
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><EFBFBD><E3B3A1><EFBFBD><EFBFBD>
class CGlobalPlazaItem
{
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
friend class CGlobalInfoManager;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
WORD m_wIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGamePlaza m_GamePlaza; //<2F><>Ϸ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
CMapUserID m_MapUserID; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
CGlobalPlazaItem * m_pNextPlazaItemPtr; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGlobalPlazaItem();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CGlobalPlazaItem();
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CGlobalServerItem
{
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
friend class CGlobalInfoManager;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
WORD m_wIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServer m_GameServer; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
tagGameMatch m_GameMatch; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
CMapUserID m_MapUserID; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
CGlobalServerItem * m_pNextServerItemPtr; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGlobalServerItem();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CGlobalServerItem();
//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD GetIndex() { return m_wIndex; }
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
WORD GetKindID() { return m_GameServer.wKindID; }
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
WORD GetServerID() { return m_GameServer.wServerID; }
//<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
DWORD GetUserItemCount() { return (DWORD)m_MapUserID.GetCount(); }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool IsMatchServer() { return (m_GameMatch.wServerID==m_GameServer.wServerID) && m_GameMatch.dwMatchID!=0; }
//<2F><><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>
public:
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * SearchUserItem(DWORD dwUserID);
};
//////////////////////////////////////////////////////////////////////////////////
//ȫ<><C8AB><EFBFBD><EFBFBD>Ϣ
class CGlobalInfoManager
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
CMapUserID m_MapUserID; //<2F>û<EFBFBD><C3BB><EFBFBD>ʶ
CMapPlazaID m_MapPlazaID; //<2F><EFBFBD><E3B3A1>ʶ
CMapServerID m_MapServerID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
CMapGameID m_MapGameID; //<2F><>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
CMapStringToPtr m_MapNickName; //<2F>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD>
//<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
protected:
CGlobalUserItem * m_pGlobalUserItem; //<2F>û<EFBFBD><C3BB>
CGlobalPlazaItem * m_pGlobalPlazaItem; //<2F><EFBFBD>
CGlobalServerItem * m_pGlobalServerItem; //<2F><><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGlobalInfoManager();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CGlobalInfoManager();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID ResetData();
//<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
DWORD GetUserItemCount() { return (DWORD)m_MapUserID.GetCount(); }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
DWORD GetPlazaItemCount() { return (DWORD)m_MapPlazaID.GetCount(); }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
DWORD GetServerItemCount() { return (DWORD)m_MapServerID.GetCount(); }
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
public:
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
bool DeleteUserItem(DWORD dwUserID, WORD wServerID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
bool ActiveUserItem(tagGlobalUserInfo & GlobalUserInfo, WORD wServerID);
//<2F><EFBFBD><E3B3A1><EFBFBD><EFBFBD>
public:
//ɾ<><C9BE><EFBFBD>
bool DeletePlazaItem(WORD wPlazaID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>
bool ActivePlazaItem(WORD wBindIndex, tagGamePlaza & GamePlaza);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool DeleteServerItem(WORD wServerID);
//<2F><><EFBFBD><EFBFBD><EEB7BF>
bool ActiveServerItem(WORD wBindIndex, tagGameServer & GameServer);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//Ѱ<>ҹ㳡
CGlobalPlazaItem * SearchPlazaItem(WORD wPlazaID);
//Ѱ<>ҷ<EFBFBD><D2B7><EFBFBD>
CGlobalServerItem * SearchServerItem(WORD wServerID);
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
public:
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * SearchUserItemByUserID(DWORD dwUserID);
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * SearchUserItemByGameID(DWORD dwGameID);
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * SearchUserItemByNickName(LPCTSTR pszNickName);
//ö<>ٺ<EFBFBD><D9BA><EFBFBD>
public:
//ö<><C3B6><EFBFBD>û<EFBFBD>
CGlobalUserItem * EnumUserItem(POSITION & Position);
//ö<>ٹ㳡
CGlobalPlazaItem * EnumPlazaItem(POSITION & Position);
//ö<>ٷ<EFBFBD><D9B7><EFBFBD>
CGlobalServerItem * EnumServerItem(POSITION & Position);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private:
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
CGlobalUserItem * CreateGlobalUserItem();
//<2F><><EFBFBD><EFBFBD><EFBFBD>
CGlobalPlazaItem * CreateGlobalPlazaItem();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGlobalServerItem * CreateGlobalServerItem();
//<2F>ͷź<CDB7><C5BA><EFBFBD>
private:
//<2F>ͷ<EFBFBD><CDB7>û<EFBFBD>
bool FreeGlobalUserItem(CGlobalUserItem * pGlobalUserItem);
//<2F>ͷŹ㳡
bool FreeGlobalPlazaItem(CGlobalPlazaItem * pGlobalPlazaItem);
//<2F>ͷŷ<CDB7><C5B7><EFBFBD>
bool FreeGlobalServerItem(CGlobalServerItem * pGlobalServerItem);
};
//////////////////////////////////////////////////////////////////////////////////
#endif