//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CTFSpectatorGUI::UpdateReinforcements( void ) { if( !m_pReinforcementsLabel ) return; C_TFPlayer *pPlayer = C_TFPlayer::GetLocalTFPlayer(); if ( !pPlayer || pPlayer->IsHLTV() || (pPlayer->GetTeamNumber() != TF_TEAM_RED && pPlayer->GetTeamNumber() != TF_TEAM_BLUE && pPlayer->GetTeamNumber() != TF_TEAM_GREEN && pPlayer->GetTeamNumber() != TF_TEAM_YELLOW) || ( pPlayer->m_Shared.GetState() != TF_STATE_OBSERVER ) && ( pPlayer->m_Shared.GetState() != TF_STATE_DYING ) || ( pPlayer->GetObserverMode() == OBS_MODE_FREEZECAM ) ) { m_pReinforcementsLabel->SetVisible( false ); return; } wchar_t wLabel[128]; if ( TFGameRules()->InStalemate() ) { g_pVGuiLocalize->ConstructString( wLabel, sizeof( wLabel ), g_pVGuiLocalize->Find( "#game_respawntime_stalemate" ), 0 ); } else if ( TFGameRules()->State_Get() == GR_STATE_TEAM_WIN ) { // a team has won the round g_pVGuiLocalize->ConstructString( wLabel, sizeof( wLabel ), g_pVGuiLocalize->Find( "#game_respawntime_next_round" ), 0 ); } else { float flNextRespawn = TFGameRules()->GetNextRespawnWave( pPlayer->GetTeamNumber(), pPlayer ); if ( !flNextRespawn ) { m_pReinforcementsLabel->SetVisible( false ); return; } int iRespawnWait = (flNextRespawn - gpGlobals->curtime); if ( iRespawnWait <= 0 ) { g_pVGuiLocalize->ConstructString( wLabel, sizeof( wLabel ), g_pVGuiLocalize->Find("#game_respawntime_now" ), 0 ); } else if ( iRespawnWait <= 1.0 ) { g_pVGuiLocalize->ConstructString( wLabel, sizeof( wLabel ), g_pVGuiLocalize->Find("#game_respawntime_in_sec" ), 0 ); } else { char szSecs[6]; Q_snprintf( szSecs, sizeof(szSecs), "%d", iRespawnWait ); wchar_t wSecs[4]; g_pVGuiLocalize->ConvertANSIToUnicode(szSecs, wSecs, sizeof(wSecs)); g_pVGuiLocalize->ConstructString( wLabel, sizeof( wLabel ), g_pVGuiLocalize->Find("#game_respawntime_in_secs" ), 1, wSecs ); } } m_pReinforcementsLabel->SetVisible( true ); m_pReinforcementsLabel->SetText( wLabel, true ); }