DragonNest/Server/DNMasterServer/DNWaitUserManager.h

57 lines
1.3 KiB
C
Raw Normal View History

2024-12-19 09:48:26 +08:00
#pragma once
const int DISTRIBUTE_OUT_TABLE = 6;
struct _WAITUSER
{
int nServerID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20>ִ<EFBFBD> <20>α<EFBFBD><CEB1>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
UINT nAccountDBID; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ī<EFBFBD><C4AB>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>
ULONG nAddTimeTick; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD>
//need update
USHORT nWaitTicketNum; //Ƽ<>ϳѹ<CFB3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_WAITUSER()
{
nServerID = 0;
nAccountDBID = 0;
nAddTimeTick = 0;
nWaitTicketNum = 0;
}
};
class CDNWaitUserManager
{
public:
CDNWaitUserManager();
~CDNWaitUserManager();
bool Initialize(int nMaxuser);
void UpdateCurCount(UINT nCurCount);
bool IsWaitUser(UINT nAccountDBID);
int AddWaitUser(int nServerID, UINT nAccountDBID, USHORT &nLeftTicketNum, USHORT &nLastEstimateCalcTime);
void DelWaitUser(int nServerID, UINT nAccountDBID);
//Calc Estimate Waiting Time
UINT GetWaitUserCount();
UINT GetWorldMaxUser() { return m_nWorldMaxUser; }
USHORT CalcEstimateTime(UINT nLeftWaitUser, UINT nWorldUserCount);
private:
CSyncLock m_Sync;
std::list <_WAITUSER> m_WaitUserList;
UINT m_nWorldMaxUser;
UINT m_nWorldPreCurUser;
UINT m_nWorldCurUser;
void WaitUserProcessAsync(UINT nCurCnt);
std::vector <std::pair<int, int>> m_OutList; //first index, second outcount;
void UpdateProcessIndexAsync(int nIndex, int nCount);
};
extern CDNWaitUserManager * g_pWaitUserManager;