Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#include "cbase.h"
#include "c_prop_vehicle.h"
#include "c_vehicle_jeep.h"
#include "movevars_shared.h"
#include "view.h"
#include "flashlighteffect.h"
#include "c_baseplayer.h"
#include "c_te_effect_dispatch.h"
#include "hl2_vehicle_radar.h"
#include "usermessages.h"
#include "hud_radar.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
//=============================================================================
//
// Client-side Episodic Jeep (Jalopy) Class
//
class C_PropJeepEpisodic : public C_PropJeep {
DECLARE_CLASS( C_PropJeepEpisodic, C_PropJeep );
public: DECLARE_CLIENTCLASS();
public: C_PropJeepEpisodic();
void OnEnteredVehicle( C_BasePlayer *pPlayer ); void Simulate( void );
public: int m_iNumRadarContacts; Vector m_vecRadarContactPos[ RADAR_MAX_CONTACTS ]; int m_iRadarContactType[ RADAR_MAX_CONTACTS ]; }; C_PropJeepEpisodic *g_pJalopy = NULL;
IMPLEMENT_CLIENTCLASS_DT( C_PropJeepEpisodic, DT_CPropJeepEpisodic, CPropJeepEpisodic ) //CNetworkVar( int, m_iNumRadarContacts );
RecvPropInt( RECVINFO(m_iNumRadarContacts) ),
//CNetworkArray( Vector, m_vecRadarContactPos, RADAR_MAX_CONTACTS );
RecvPropArray( RecvPropVector(RECVINFO(m_vecRadarContactPos[0])), m_vecRadarContactPos ),
//CNetworkArray( int, m_iRadarContactType, RADAR_MAX_CONTACTS );
RecvPropArray( RecvPropInt( RECVINFO(m_iRadarContactType[0] ) ), m_iRadarContactType ),
END_RECV_TABLE()
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void __MsgFunc_UpdateJalopyRadar(bf_read &msg) { // Radar code here!
if( !GetHudRadar() ) return;
// Sometimes we update more quickly when we need to track something in high resolution.
// Usually we do not, so default to false.
GetHudRadar()->m_bUseFastUpdate = false;
for( int i = 0 ; i < g_pJalopy->m_iNumRadarContacts ; i++ ) { if( g_pJalopy->m_iRadarContactType[i] == RADAR_CONTACT_DOG ) { GetHudRadar()->m_bUseFastUpdate = true; break; } }
float flContactTimeToLive;
if( GetHudRadar()->m_bUseFastUpdate ) { flContactTimeToLive = RADAR_UPDATE_FREQUENCY_FAST; } else { flContactTimeToLive = RADAR_UPDATE_FREQUENCY; }
for( int i = 0 ; i < g_pJalopy->m_iNumRadarContacts ; i++ ) { GetHudRadar()->AddRadarContact( g_pJalopy->m_vecRadarContactPos[i], g_pJalopy->m_iRadarContactType[i], flContactTimeToLive ); } }
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
C_PropJeepEpisodic::C_PropJeepEpisodic() { if( g_pJalopy == NULL ) { usermessages->HookMessage( "UpdateJalopyRadar", __MsgFunc_UpdateJalopyRadar ); }
g_pJalopy = this; }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void C_PropJeepEpisodic::Simulate( void ) { // Keep trying to hook to the radar.
if( GetHudRadar() != NULL ) { // This is not our ideal long-term solution. This will only work if you only have
// one jalopy in a given level. The Jalopy and the Radar Screen are currently both
// assumed to be singletons. This is appropriate for EP2, however. (sjb)
GetHudRadar()->SetVehicle( this ); }
BaseClass::Simulate(); }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void C_PropJeepEpisodic::OnEnteredVehicle( C_BasePlayer *pPlayer ) { BaseClass::OnEnteredVehicle( pPlayer ); }
|