//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseTeamObjectiveResource::Spawn( void ) { m_iNumControlPoints = 0; // If you hit this, you've got too many teams for the control point system to handle. Assert( GetNumberOfTeams() < MAX_CONTROL_POINT_TEAMS ); for ( int i=0; i < MAX_CONTROL_POINTS; i++ ) { // data variables m_vCPPositions.Set( i, vec3_origin ); m_bCPIsVisible.Set( i, true ); m_bBlocked.Set( i, false ); // state variables m_iOwner.Set( i, TEAM_UNASSIGNED ); m_iCappingTeam.Set( i, TEAM_UNASSIGNED ); m_iTeamInZone.Set( i, TEAM_UNASSIGNED ); m_bInMiniRound.Set( i, true ); m_bWarnOnCap.Set( i, false ); m_flLazyCapPerc.Set( i, 0.0 ); for ( int team = 0; team < MAX_CONTROL_POINT_TEAMS; team++ ) { int iTeamIndex = TEAM_ARRAY( i, team ); m_iTeamIcons.Set( iTeamIndex, 0 ); m_iTeamOverlays.Set( iTeamIndex, 0 ); m_iTeamReqCappers.Set( iTeamIndex, 0 ); m_flTeamCapTime.Set( iTeamIndex, 0.0f ); m_iNumTeamMembers.Set( TEAM_ARRAY( i, team ), 0 ); for ( int ipoint = 0; ipoint < MAX_PREVIOUS_POINTS; ipoint++ ) { int iIntIndex = ipoint + (i * MAX_PREVIOUS_POINTS) + (team * MAX_CONTROL_POINTS * MAX_PREVIOUS_POINTS); m_iPreviousPoints.Set( iIntIndex, -1 ); } m_bTeamCanCap.Set( iTeamIndex, false ); } } for ( int i = 0; i < MAX_TEAMS; i++ ) { m_iBaseControlPoints.Set( i, -1 ); } SetThink( &CBaseTeamObjectiveResource::ObjectiveThink ); SetNextThink( gpGlobals->curtime + LAZY_UPDATE_TIME ); }
//----------------------------------------------------------------------------- // Purpose: Round is starting, reset state //----------------------------------------------------------------------------- void CBaseTeamObjectiveResource::ResetControlPoints( void ) { for ( int i=0; i < MAX_CONTROL_POINTS; i++ ) { m_iCappingTeam.Set( i, TEAM_UNASSIGNED ); m_iTeamInZone.Set( i, TEAM_UNASSIGNED ); m_bInMiniRound.Set( i, true ); for ( int team = 0; team < MAX_CONTROL_POINT_TEAMS; team++ ) { m_iNumTeamMembers.Set( TEAM_ARRAY( i, team ), 0.0f ); } } UpdateCapHudElement(); m_bControlPointsReset = !m_bControlPointsReset; }
//----------------------------------------------------------------------------- // Purpose: Data setting functions //----------------------------------------------------------------------------- void CBaseTeamObjectiveResource::SetNumPlayers( int index, int team, int iNumPlayers ) { AssertValidIndex(index); m_iNumTeamMembers.Set( TEAM_ARRAY( index, team ), iNumPlayers ); UpdateCapHudElement(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- bool CBaseTeamObjectiveResource::TeamCanCapPoint( int index, int team ) { AssertValidIndex(index); return m_bTeamCanCap[ TEAM_ARRAY( index, team ) ]; }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseTeamObjectiveResource::SetTeamCanCap( int index, int iTeam, bool bCanCap ) { AssertValidIndex(index); m_bTeamCanCap.Set( TEAM_ARRAY( index, iTeam ), bCanCap ); UpdateCapHudElement(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseTeamObjectiveResource::SetCPCapTime( int index, int iTeam, float flTime ) { AssertValidIndex(index); m_flTeamCapTime.Set( TEAM_ARRAY( index, iTeam ), flTime ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseTeamObjectiveResource::SetCPRequiredCappers( int index, int iTeam, int iReqPlayers ) { AssertValidIndex(index); m_iTeamReqCappers.Set( TEAM_ARRAY( index, iTeam ), iReqPlayers ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseTeamObjectiveResource::SetCPOverlays( int index, int iTeam, int iIcon ) { AssertValidIndex(index); m_iTeamOverlays.Set( TEAM_ARRAY( index, iTeam ), iIcon ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseTeamObjectiveResource::Spawn( void ) { m_iNumControlPoints = 0; // If you hit this, you've got too many teams for the control point system to handle. Assert( GetNumberOfTeams() < MAX_CONTROL_POINT_TEAMS ); for ( int i=0; i < MAX_CONTROL_POINTS; i++ ) { // data variables m_vCPPositions.Set( i, vec3_origin ); m_bCPIsVisible.Set( i, true ); m_bBlocked.Set( i, false ); // state variables m_iOwner.Set( i, TEAM_UNASSIGNED ); m_iCappingTeam.Set( i, TEAM_UNASSIGNED ); m_iTeamInZone.Set( i, TEAM_UNASSIGNED ); m_bInMiniRound.Set( i, true ); m_iWarnOnCap.Set( i, CP_WARN_NORMAL ); m_iCPGroup.Set( i, TEAM_INVALID ); m_flLazyCapPerc.Set( i, 0.0 ); m_bCPLocked.Set( i, false ); m_flUnlockTimes.Set( i, 0.0 ); m_flCPTimerTimes.Set( i, -1.0 ); m_bCPCapRateScalesWithPlayers.Set( i, true ); for ( int team = 0; team < MAX_CONTROL_POINT_TEAMS; team++ ) { int iTeamIndex = TEAM_ARRAY( i, team ); m_iTeamIcons.Set( iTeamIndex, 0 ); m_iTeamOverlays.Set( iTeamIndex, 0 ); m_iTeamReqCappers.Set( iTeamIndex, 0 ); m_flTeamCapTime.Set( iTeamIndex, 0.0f ); m_iNumTeamMembers.Set( TEAM_ARRAY( i, team ), 0 ); for ( int ipoint = 0; ipoint < MAX_PREVIOUS_POINTS; ipoint++ ) { int iIntIndex = ipoint + (i * MAX_PREVIOUS_POINTS) + (team * MAX_CONTROL_POINTS * MAX_PREVIOUS_POINTS); m_iPreviousPoints.Set( iIntIndex, -1 ); } m_bTeamCanCap.Set( iTeamIndex, false ); } } for ( int i = 0; i < MAX_TEAMS; i++ ) { m_iBaseControlPoints.Set( i, -1 ); } int nNumEntriesPerTeam = TEAM_TRAIN_MAX_HILLS * TEAM_TRAIN_FLOATS_PER_HILL; for ( int i = 0; i < TEAM_TRAIN_MAX_TEAMS; i++ ) { m_nNumNodeHillData.Set( i, 0 ); m_bTrackAlarm.Set( i, false ); int iStartingIndex = i * nNumEntriesPerTeam; for ( int j = 0 ; j < nNumEntriesPerTeam ; j++ ) { m_flNodeHillData.Set( iStartingIndex + j, 0 ); } iStartingIndex = i * TEAM_TRAIN_MAX_HILLS; for ( int j = 0; j < TEAM_TRAIN_MAX_HILLS; j++ ) { m_bHillIsDownhill.Set( iStartingIndex + j, 0 ); } } SetThink( &CBaseTeamObjectiveResource::ObjectiveThink ); SetNextThink( gpGlobals->curtime + LAZY_UPDATE_TIME ); }