[server] Implement CGameMode::Frame(...)

* Update `CNetGame::Process()`
This commit is contained in:
RD42 2024-06-25 22:26:45 +08:00
parent 52ee926fdd
commit 2df59766ac
3 changed files with 38 additions and 1 deletions

View File

@ -133,6 +133,35 @@ void CGameMode::Unload()
//----------------------------------------------------------------------------------
void CGameMode::Frame(float fElapsedTime)
{
if (!m_bInitialised)
return;
if (!m_bSleeping)
return;
if (m_fSleepTime > 0.0f)
{
m_fSleepTime -= fElapsedTime;
}
else
{
cell ret;
int err = amx_Exec(&m_amx, &ret, AMX_EXEC_CONT);
if (err == AMX_ERR_SLEEP)
{
m_bSleeping = true;
m_fSleepTime = ((float)ret / 1000.0f);
}
else
{
m_bSleeping = false;
AMXPrintError(this, &m_amx, err);
}
}
}
//----------------------------------------------------------------------------------
int CGameMode::CallPublic(char* szFuncName)

View File

@ -22,6 +22,7 @@ public:
bool Load(char* pFileName);
void Unload();
void Frame(float fElapsedTime);
int CallPublic(char* szFuncName);

View File

@ -592,11 +592,18 @@ void CNetGame::Process()
{
float fElapsedTime = GetElapsedTime();
if(m_iGameState == GAMESTATE_RUNNING)
{
if(m_pGameMode) m_pGameMode->Frame(fElapsedTime);
}
else if(m_iGameState == GAMESTATE_RESTARTING)
{
}
// TODO: CNetGame::Process W: 00491240 L: 080AEEE0
/*
v4 = sub_80AA3D0();
sub_80ABF00(this);
sub_80AECE0((int)this);
v1 = this->field_5E;