|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef VEHICLE_SOUNDS_H
#define VEHICLE_SOUNDS_H
#ifdef _WIN32
#pragma once
#endif
#include "vcollide_parse.h"
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
enum vehiclesound { VS_SKID_FRICTION_LOW, VS_SKID_FRICTION_NORMAL, VS_SKID_FRICTION_HIGH, VS_ENGINE2_START, VS_ENGINE2_STOP, VS_MISC1, VS_MISC2, VS_MISC3, VS_MISC4,
VS_NUM_SOUNDS, };
extern const char *vehiclesound_parsenames[VS_NUM_SOUNDS];
// This is a list of vehiclesounds to automatically stop when the vehicle's driver exits the vehicle
#define NUM_SOUNDS_TO_STOP_ON_EXIT 4
extern vehiclesound g_iSoundsToStopOnExit[NUM_SOUNDS_TO_STOP_ON_EXIT];
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
struct vehicle_gear_t { DECLARE_DATADESC();
float flMinSpeed; float flMaxSpeed; float flSpeedApproachFactor; };
struct vehicle_crashsound_t { DECLARE_DATADESC();
float flMinSpeed; float flMinDeltaSpeed; int gearLimit; string_t iszCrashSound; };
enum sound_states { SS_NONE = 0, SS_SHUTDOWN, SS_SHUTDOWN_WATER, SS_START_WATER, SS_START_IDLE, SS_IDLE, SS_GEAR_0, SS_GEAR_1, SS_GEAR_2, SS_GEAR_3, SS_GEAR_4, SS_SLOWDOWN, SS_SLOWDOWN_HIGHSPEED, // not a real state, just a slot for state sounds
SS_GEAR_0_RESUME, SS_GEAR_1_RESUME, SS_GEAR_2_RESUME, SS_GEAR_3_RESUME, SS_GEAR_4_RESUME, SS_TURBO, SS_REVERSE,
SS_NUM_STATES, };
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
struct vehiclesounds_t { void Init( void ) { pGears.Purge(); crashSounds.Purge(); for ( int i = 0; i < VS_NUM_SOUNDS; i++ ) { iszSound[i] = NULL_STRING; }
for ( int i = 0; i < SS_NUM_STATES; i++ ) { iszStateSounds[i] = NULL_STRING; minStateTime[i] = 0.0f; } }
DECLARE_DATADESC();
CUtlVector<vehicle_gear_t> pGears; CUtlVector<vehicle_crashsound_t> crashSounds; string_t iszSound[ VS_NUM_SOUNDS ]; string_t iszStateSounds[SS_NUM_STATES]; float minStateTime[SS_NUM_STATES]; };
//-----------------------------------------------------------------------------
// Purpose: A KeyValues parse for vehicle sound blocks
//-----------------------------------------------------------------------------
class CVehicleSoundsParser : public IVPhysicsKeyHandler { public: CVehicleSoundsParser( void );
virtual void ParseKeyValue( void *pData, const char *pKey, const char *pValue ); virtual void SetDefaults( void *pData );
private: // Index of the gear we're currently reading data into
int m_iCurrentGear; int m_iCurrentState; int m_iCurrentCrashSound; };
#endif // VEHICLE_SOUNDS_H
|