mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-17 06:03:02 +00:00
1
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
//========= 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 );
|
||||
}
|
||||
Reference in New Issue
Block a user