DragonNest/Server/DNMasterServer/DNWaitUserManager.h
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

56 lines
1.3 KiB
C++

#pragma once
const int DISTRIBUTE_OUT_TABLE = 6;
struct _WAITUSER
{
int nServerID; //대기중으로 연결되어 있는 로그인서버의 아이디
UINT nAccountDBID; //대기하는 놈의 어카운트디비아이디
ULONG nAddTimeTick; //대기시작한 시간
//need update
USHORT nWaitTicketNum; //티켓넘버 당신이 몇번째 선수인지
_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;