public void OnGameFrame()
{
float frametime = GetGameFrameTime();
for(int i = 1; i <= MaxClients; i++)
{
if(gB_ClientPaused[i] || !gB_TimerEnabled[i])
{
continue;
}
float time = frametime;
if(gA_StyleSettings[gBS_Style[i]][bHalftime])
{
time /= 2.0;
}
any[] snapshot = new any[TIMERSNAPSHOT_SIZE];
snapshot[bTimerEnabled] = gB_TimerEnabled[i];
snapshot[bClientPaused] = gB_ClientPaused[i];
snapshot[iJumps] = gI_Jumps[i];
snapshot[bsStyle] = gBS_Style[i];
snapshot[iStrafes] = gI_Strafes[i];
snapshot[iTotalMeasures] = gI_TotalMeasures[i];
snapshot[iGoodGains] = gI_GoodGains[i];
snapshot[fServerTime] = GetEngineTime();
snapshot[fCurrentTime] = gF_PlayerTimer[i];
snapshot[iSHSWCombination] = gI_SHSW_FirstCombination[i];
snapshot[iTimerTrack] = gI_Track[i];
Call_StartForward(gH_Forwards_OnTimerIncrement);
Call_PushCell(i);
Call_PushArray(snapshot, TIMERSNAPSHOT_SIZE);
Call_PushCellRef(time);
Call_PushArray(gA_StyleSettings[gBS_Style[i]], STYLESETTINGS_SIZE);
Call_Finish();
gF_PlayerTimer[i] += time;
Call_StartForward(gH_Forwards_OnTimerIncrementPost);
Call_PushCell(i);
Call_PushCell(time);
Call_PushArray(gA_StyleSettings[gBS_Style[i]], STYLESETTINGS_SIZE);
Call_Finish();
}
}