Files

684 lines
15 KiB
C++
Raw Permalink Normal View History

2026-03-03 13:56:44 +08:00
#include "StdAfx.h"
#include "GlobalInfoManager.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGlobalUserItem::CGlobalUserItem()
{
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
m_dwUserID=0L;
m_dwGameID=0L;
m_szNickName[0]=0;
//<2F>ȼ<EFBFBD><C8BC><EFBFBD>Ϣ
m_cbMemberOrder=0;
m_cbMasterOrder=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pNextUserItemPtr=NULL;
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGlobalUserItem::~CGlobalUserItem()
{
}
//ö<>ٷ<EFBFBD><D9B7><EFBFBD>
CGlobalServerItem * CGlobalUserItem::EnumServerItem(WORD wIndex)
{
if (wIndex>=m_GlobalServerItemArray.GetCount()) return NULL;
return m_GlobalServerItemArray[wIndex];
}
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGlobalPlazaItem::CGlobalPlazaItem()
{
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
m_wIndex=0;
ZeroMemory(&m_GamePlaza,sizeof(m_GamePlaza));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pNextPlazaItemPtr=NULL;
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGlobalPlazaItem::~CGlobalPlazaItem()
{
}
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGlobalServerItem::CGlobalServerItem()
{
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
m_wIndex=0;
ZeroMemory(&m_GameServer,sizeof(m_GameServer));
ZeroMemory(&m_GameMatch,sizeof(m_GameMatch));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pNextServerItemPtr=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_MapUserID.InitHashTable(PRIME_SERVER_USER);
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGlobalServerItem::~CGlobalServerItem()
{
}
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * CGlobalServerItem::SearchUserItem(DWORD dwUserID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
CGlobalUserItem * pGlobalUserItem=NULL;
m_MapUserID.Lookup(dwUserID,pGlobalUserItem);
return pGlobalUserItem;
}
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGlobalInfoManager::CGlobalInfoManager()
{
//<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
m_pGlobalUserItem=NULL;
m_pGlobalPlazaItem=NULL;
m_pGlobalServerItem=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_MapPlazaID.InitHashTable(PRIME_SERVER);
m_MapServerID.InitHashTable(PRIME_SERVER);
m_MapUserID.InitHashTable(PRIME_PLATFORM_USER);
m_MapGameID.InitHashTable(PRIME_PLATFORM_USER);
m_MapNickName.InitHashTable(PRIME_PLATFORM_USER);
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGlobalInfoManager::~CGlobalInfoManager()
{
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
DWORD dwUserID=0L;
CGlobalUserItem * pGlobalUserItem=NULL;
POSITION Position=m_MapUserID.GetStartPosition();
while (Position!=NULL)
{
m_MapUserID.GetNextAssoc(Position,dwUserID,pGlobalUserItem);
SafeDelete(pGlobalUserItem);
}
m_MapUserID.RemoveAll();
//ɾ<><C9BE><EFBFBD>
WORD wPlazaID=0;
CGlobalPlazaItem * pGlobalPlazaItem=NULL;
Position=m_MapPlazaID.GetStartPosition();
while (Position!=NULL)
{
m_MapPlazaID.GetNextAssoc(Position,wPlazaID,pGlobalPlazaItem);
SafeDelete(pGlobalPlazaItem);
}
m_MapPlazaID.RemoveAll();
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wServerID=0;
CGlobalServerItem * pGlobalServerItem=NULL;
Position=m_MapServerID.GetStartPosition();
while (Position!=NULL)
{
m_MapServerID.GetNextAssoc(Position,wServerID,pGlobalServerItem);
SafeDelete(pGlobalServerItem);
}
m_MapServerID.RemoveAll();
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
while (m_pGlobalUserItem!=NULL)
{
pGlobalUserItem=m_pGlobalUserItem;
m_pGlobalUserItem=m_pGlobalUserItem->m_pNextUserItemPtr;
SafeDelete(pGlobalUserItem);
}
//ɾ<><C9BE><EFBFBD>
while (m_pGlobalPlazaItem!=NULL)
{
pGlobalPlazaItem=m_pGlobalPlazaItem;
m_pGlobalPlazaItem=m_pGlobalPlazaItem->m_pNextPlazaItemPtr;
SafeDelete(pGlobalPlazaItem);
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (m_pGlobalServerItem!=NULL)
{
pGlobalServerItem=m_pGlobalServerItem;
m_pGlobalServerItem=m_pGlobalServerItem->m_pNextServerItemPtr;
SafeDelete(pGlobalServerItem);
}
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID CGlobalInfoManager::ResetData()
{
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
DWORD dwUserID=0L;
CGlobalUserItem * pGlobalUserItem=NULL;
POSITION Position=m_MapUserID.GetStartPosition();
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
while (Position!=NULL)
{
m_MapUserID.GetNextAssoc(Position,dwUserID,pGlobalUserItem);
if (pGlobalUserItem!=NULL) FreeGlobalUserItem(pGlobalUserItem);
}
//ɾ<><C9BE><EFBFBD>
WORD wPlazaID=0;
CGlobalPlazaItem * pGlobalPlazaItem=NULL;
Position=m_MapPlazaID.GetStartPosition();
//ɾ<><C9BE><EFBFBD>
while (Position!=NULL)
{
m_MapPlazaID.GetNextAssoc(Position,wPlazaID,pGlobalPlazaItem);
if (pGlobalPlazaItem!=NULL) FreeGlobalPlazaItem(pGlobalPlazaItem);
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wServerID=0;
CGlobalServerItem * pGlobalServerItem=NULL;
Position=m_MapServerID.GetStartPosition();
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (Position!=NULL)
{
m_MapServerID.GetNextAssoc(Position,wServerID,pGlobalServerItem);
if (pGlobalServerItem!=NULL) FreeGlobalServerItem(pGlobalServerItem);
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_MapUserID.RemoveAll();
m_MapGameID.RemoveAll();
m_MapPlazaID.RemoveAll();
m_MapServerID.RemoveAll();
m_MapNickName.RemoveAll();
return;
}
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
bool CGlobalInfoManager::DeleteUserItem(DWORD dwUserID, WORD wServerID)
{
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * pGlobalUserItem=NULL;
if (m_MapUserID.Lookup(dwUserID,pGlobalUserItem)==FALSE)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGlobalServerItem * pGlobalServerItem=NULL;
INT_PTR nServerCount=pGlobalUserItem->m_GlobalServerItemArray.GetCount();
//<2F>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
for (INT_PTR i=0;i<nServerCount;i++)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
pGlobalServerItem=pGlobalUserItem->m_GlobalServerItemArray[i];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (pGlobalServerItem->GetServerID()==wServerID)
{
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pGlobalServerItem->m_MapUserID.RemoveKey(dwUserID);
pGlobalUserItem->m_GlobalServerItemArray.RemoveAt(i);
//<2F>ͷ<EFBFBD><CDB7>û<EFBFBD>
if (pGlobalUserItem->m_GlobalServerItemArray.GetCount()==0L)
{
//<2F>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
m_MapUserID.RemoveKey(dwUserID);
m_MapGameID.RemoveKey(pGlobalUserItem->GetGameID());
m_MapNickName.RemoveKey(pGlobalUserItem->GetNickName());
//<2F>ͷŶ<CDB7><C5B6><EFBFBD>
FreeGlobalUserItem(pGlobalUserItem);
}
return true;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
bool CGlobalInfoManager::ActiveUserItem(tagGlobalUserInfo & GlobalUserInfo, WORD wServerID)
{
//Ѱ<>ҷ<EFBFBD><D2B7><EFBFBD>
CGlobalServerItem * pGlobalServerItem=NULL;
if (m_MapServerID.Lookup(wServerID,pGlobalServerItem)==FALSE)
{
ASSERT(FALSE);
return false;
}
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * pGlobalUserItem=NULL;
if (m_MapUserID.Lookup(GlobalUserInfo.dwUserID,pGlobalUserItem)==FALSE)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
pGlobalUserItem=CreateGlobalUserItem();
if (pGlobalUserItem==NULL)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD>
TCHAR szNickName[LEN_NICKNAME]=TEXT("");
lstrcpyn(szNickName,GlobalUserInfo.szNickName,CountArray(szNickName));
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
pGlobalUserItem->m_dwUserID=GlobalUserInfo.dwUserID;
pGlobalUserItem->m_dwGameID=GlobalUserInfo.dwGameID;
lstrcpyn(pGlobalUserItem->m_szNickName,GlobalUserInfo.szNickName,CountArray(pGlobalUserItem->m_szNickName));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
pGlobalUserItem->m_cbGender=GlobalUserInfo.cbGender;
pGlobalUserItem->m_cbMemberOrder=GlobalUserInfo.cbMemberOrder;
pGlobalUserItem->m_cbMasterOrder=GlobalUserInfo.cbMasterOrder;
//<2F>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD>
m_MapNickName[_tcslwr(szNickName)]=pGlobalUserItem;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_MapUserID[GlobalUserInfo.dwUserID]=pGlobalUserItem;
m_MapGameID[GlobalUserInfo.dwGameID]=pGlobalUserItem;
}
else
{
//<2F>ظ<EFBFBD><D8B8>ж<EFBFBD>
for (INT_PTR i=0;i<pGlobalUserItem->m_GlobalServerItemArray.GetCount();i++)
{
if (pGlobalUserItem->m_GlobalServerItemArray[i]->GetServerID()==wServerID)
{
ASSERT(FALSE);
return false;
}
}
}
//<2F><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
pGlobalUserItem->m_GlobalServerItemArray.Add(pGlobalServerItem);
pGlobalServerItem->m_MapUserID[GlobalUserInfo.dwUserID]=pGlobalUserItem;
return true;
}
//ɾ<><C9BE><EFBFBD>
bool CGlobalInfoManager::DeletePlazaItem(WORD wPlazaID)
{
//Ѱ<>ҹ㳡
CGlobalPlazaItem * pGlobalPlazaItem=NULL;
if (m_MapPlazaID.Lookup(wPlazaID,pGlobalPlazaItem)==FALSE)
{
ASSERT(FALSE);
return false;
}
//<2F>ͷŹ㳡
m_MapPlazaID.RemoveKey(wPlazaID);
FreeGlobalPlazaItem(pGlobalPlazaItem);
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>
bool CGlobalInfoManager::ActivePlazaItem(WORD wBindIndex, tagGamePlaza & GamePlaza)
{
//Ѱ<>ҹ㳡
CGlobalPlazaItem * pGlobalPlazaItem=NULL;
if (m_MapPlazaID.Lookup(GamePlaza.wPlazaID,pGlobalPlazaItem)==TRUE)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>
pGlobalPlazaItem=CreateGlobalPlazaItem();
if (pGlobalPlazaItem==NULL)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ù㳡
pGlobalPlazaItem->m_wIndex=wBindIndex;
pGlobalPlazaItem->m_GamePlaza=GamePlaza;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_MapPlazaID[GamePlaza.wPlazaID]=pGlobalPlazaItem;
return true;
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CGlobalInfoManager::DeleteServerItem(WORD wServerID)
{
//Ѱ<>ҷ<EFBFBD><D2B7><EFBFBD>
CGlobalServerItem * pGlobalServerItem=NULL;
if (m_MapServerID.Lookup(wServerID,pGlobalServerItem)==FALSE)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwUserKey=0L;
CGlobalUserItem * pGlobalUserItem=NULL;
POSITION Position=pGlobalServerItem->m_MapUserID.GetStartPosition();
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
while (Position!=NULL)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
pGlobalServerItem->m_MapUserID.GetNextAssoc(Position,dwUserKey,pGlobalUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (INT_PTR i=0;i<pGlobalUserItem->m_GlobalServerItemArray.GetCount();i++)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
CGlobalServerItem * pTempServerItem=pGlobalUserItem->m_GlobalServerItemArray[i];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (pTempServerItem->GetServerID()==wServerID)
{
pGlobalUserItem->m_GlobalServerItemArray.RemoveAt(i);
break;
}
}
//<2F>ͷ<EFBFBD><CDB7>û<EFBFBD>
if (pGlobalUserItem->m_GlobalServerItemArray.GetCount()==0)
{
m_MapUserID.RemoveKey(dwUserKey);
FreeGlobalUserItem(pGlobalUserItem);
}
}
//<2F>ͷŷ<CDB7><C5B7><EFBFBD>
m_MapServerID.RemoveKey(wServerID);
FreeGlobalServerItem(pGlobalServerItem);
return true;
}
//<2F><><EFBFBD><EFBFBD><EEB7BF>
bool CGlobalInfoManager::ActiveServerItem(WORD wBindIndex, tagGameServer & GameServer)
{
//Ѱ<>ҷ<EFBFBD><D2B7><EFBFBD>
CGlobalServerItem * pGlobalServerItem=NULL;
if (m_MapServerID.Lookup(GameServer.wServerID,pGlobalServerItem)==TRUE)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pGlobalServerItem=CreateGlobalServerItem();
if (pGlobalServerItem==NULL)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
pGlobalServerItem->m_wIndex=wBindIndex;
pGlobalServerItem->m_GameServer=GameServer;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_MapServerID[GameServer.wServerID]=pGlobalServerItem;
return true;
}
//Ѱ<>ҹ㳡
CGlobalPlazaItem * CGlobalInfoManager::SearchPlazaItem(WORD wPlazaID)
{
//Ѱ<>ҷ<EFBFBD><D2B7><EFBFBD>
CGlobalPlazaItem * pGlobalPlazaItem=NULL;
m_MapPlazaID.Lookup(wPlazaID,pGlobalPlazaItem);
return pGlobalPlazaItem;
}
//Ѱ<>ҷ<EFBFBD><D2B7><EFBFBD>
CGlobalServerItem * CGlobalInfoManager::SearchServerItem(WORD wServerID)
{
//Ѱ<>ҷ<EFBFBD><D2B7><EFBFBD>
CGlobalServerItem * pGlobalServerItem=NULL;
m_MapServerID.Lookup(wServerID,pGlobalServerItem);
return pGlobalServerItem;
}
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * CGlobalInfoManager::SearchUserItemByUserID(DWORD dwUserID)
{
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * pGlobalUserItem=NULL;
m_MapUserID.Lookup(dwUserID,pGlobalUserItem);
return pGlobalUserItem;
}
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * CGlobalInfoManager::SearchUserItemByGameID(DWORD dwGameID)
{
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * pGlobalUserItem=NULL;
m_MapGameID.Lookup(dwGameID,pGlobalUserItem);
return pGlobalUserItem;
}
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
CGlobalUserItem * CGlobalInfoManager::SearchUserItemByNickName(LPCTSTR pszNickName)
{
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
VOID * pGlobalUserItem=NULL;
m_MapNickName.Lookup(pszNickName,pGlobalUserItem);
return (CGlobalUserItem *)pGlobalUserItem;
}
//ö<><C3B6><EFBFBD>û<EFBFBD>
CGlobalUserItem * CGlobalInfoManager::EnumUserItem(POSITION & Position)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwUserID=0L;
CGlobalUserItem * pGlobalUserItem=NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
if (Position==NULL) Position=m_MapUserID.GetStartPosition();
if (Position!=NULL) m_MapUserID.GetNextAssoc(Position,dwUserID,pGlobalUserItem);
return pGlobalUserItem;
}
//ö<>ٹ㳡
CGlobalPlazaItem * CGlobalInfoManager::EnumPlazaItem(POSITION & Position)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wPlazaID=0L;
CGlobalPlazaItem * pGlobalPlazaItem=NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
if (Position==NULL) Position=m_MapPlazaID.GetStartPosition();
if (Position!=NULL) m_MapPlazaID.GetNextAssoc(Position,wPlazaID,pGlobalPlazaItem);
return pGlobalPlazaItem;
}
//ö<>ٷ<EFBFBD><D9B7><EFBFBD>
CGlobalServerItem * CGlobalInfoManager::EnumServerItem(POSITION & Position)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wServerID=0L;
CGlobalServerItem * pGlobalServerItem=NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
if (Position==NULL) Position=m_MapServerID.GetStartPosition();
if (Position!=NULL) m_MapServerID.GetNextAssoc(Position,wServerID,pGlobalServerItem);
return pGlobalServerItem;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
CGlobalUserItem * CGlobalInfoManager::CreateGlobalUserItem()
{
//ʹ<>ô洢
if (m_pGlobalUserItem!=NULL)
{
CGlobalUserItem * pGlobalUserItem=m_pGlobalUserItem;
m_pGlobalUserItem=m_pGlobalUserItem->m_pNextUserItemPtr;
pGlobalUserItem->m_pNextUserItemPtr=NULL;
return pGlobalUserItem;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
try
{
CGlobalUserItem * pGlobalUserItem=new CGlobalUserItem;
return pGlobalUserItem;
}
catch (...) {}
return NULL;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>
CGlobalPlazaItem * CGlobalInfoManager::CreateGlobalPlazaItem()
{
//ʹ<>ô洢
if (m_pGlobalPlazaItem!=NULL)
{
CGlobalPlazaItem * pGlobalPlazaItem=m_pGlobalPlazaItem;
m_pGlobalPlazaItem=m_pGlobalPlazaItem->m_pNextPlazaItemPtr;
pGlobalPlazaItem->m_pNextPlazaItemPtr=NULL;
return pGlobalPlazaItem;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
try
{
CGlobalPlazaItem * pGlobalPlazaItem=new CGlobalPlazaItem;
return pGlobalPlazaItem;
}
catch (...) {}
return NULL;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGlobalServerItem * CGlobalInfoManager::CreateGlobalServerItem()
{
//ʹ<>ô洢
if (m_pGlobalServerItem!=NULL)
{
CGlobalServerItem * pGlobalServerItem=m_pGlobalServerItem;
m_pGlobalServerItem=m_pGlobalServerItem->m_pNextServerItemPtr;
pGlobalServerItem->m_pNextServerItemPtr=NULL;
return pGlobalServerItem;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
try
{
CGlobalServerItem * pGlobalServerItem=new CGlobalServerItem;
return pGlobalServerItem;
}
catch (...) {}
return NULL;
}
//<2F>ͷ<EFBFBD><CDB7>û<EFBFBD>
bool CGlobalInfoManager::FreeGlobalUserItem(CGlobalUserItem * pGlobalUserItem)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(pGlobalUserItem!=NULL);
if (pGlobalUserItem==NULL) return false;
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
pGlobalUserItem->m_dwUserID=0L;
pGlobalUserItem->m_dwGameID=0L;
pGlobalUserItem->m_szNickName[0]=0;
pGlobalUserItem->m_GlobalServerItemArray.RemoveAll();
//<2F><><EFBFBD><EFBFBD><EFBFBD>
pGlobalUserItem->m_pNextUserItemPtr=m_pGlobalUserItem;
m_pGlobalUserItem=pGlobalUserItem;
return true;
}
//<2F>ͷŹ㳡
bool CGlobalInfoManager::FreeGlobalPlazaItem(CGlobalPlazaItem * pGlobalPlazaItem)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(pGlobalPlazaItem!=NULL);
if (pGlobalPlazaItem==NULL) return false;
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
pGlobalPlazaItem->m_wIndex=0;
ZeroMemory(&pGlobalPlazaItem->m_GamePlaza,sizeof(pGlobalPlazaItem->m_GamePlaza));
//<2F><><EFBFBD><EFBFBD><EFBFBD>
pGlobalPlazaItem->m_pNextPlazaItemPtr=m_pGlobalPlazaItem;
m_pGlobalPlazaItem=pGlobalPlazaItem;
return true;
}
//<2F>ͷŷ<CDB7><C5B7><EFBFBD>
bool CGlobalInfoManager::FreeGlobalServerItem(CGlobalServerItem * pGlobalServerItem)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(pGlobalServerItem!=NULL);
if (pGlobalServerItem==NULL) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pGlobalServerItem->m_MapUserID.RemoveAll();
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
pGlobalServerItem->m_wIndex=0;
ZeroMemory(&pGlobalServerItem->m_GameServer,sizeof(pGlobalServerItem->m_GameServer));
//<2F><><EFBFBD><EFBFBD><EFBFBD>
pGlobalServerItem->m_pNextServerItemPtr=m_pGlobalServerItem;
m_pGlobalServerItem=pGlobalServerItem;
return true;
}
//////////////////////////////////////////////////////////////////////////////////