mirror of
https://github.com/YGGverse/hlsdk-portable.git
synced 2025-01-23 21:24:27 +00:00
Restore room sound type (#304)
This commit is contained in:
parent
19e5c784af
commit
03cdf7a0e1
@ -124,9 +124,9 @@ TYPEDESCRIPTION CBasePlayer::m_playerSaveData[] =
|
|||||||
//DEFINE_FIELD( CBasePlayer, m_flStopExtraSoundTime, FIELD_TIME ),
|
//DEFINE_FIELD( CBasePlayer, m_flStopExtraSoundTime, FIELD_TIME ),
|
||||||
//DEFINE_FIELD( CBasePlayer, m_fKnownItem, FIELD_INTEGER ), // reset to zero on load
|
//DEFINE_FIELD( CBasePlayer, m_fKnownItem, FIELD_INTEGER ), // reset to zero on load
|
||||||
//DEFINE_FIELD( CBasePlayer, m_iPlayerSound, FIELD_INTEGER ), // Don't restore, set in Precache()
|
//DEFINE_FIELD( CBasePlayer, m_iPlayerSound, FIELD_INTEGER ), // Don't restore, set in Precache()
|
||||||
//DEFINE_FIELD( CBasePlayer, m_pentSndLast, FIELD_EDICT ), // Don't restore, client needs reset
|
DEFINE_FIELD( CBasePlayer, m_pentSndLast, FIELD_EDICT ),
|
||||||
//DEFINE_FIELD( CBasePlayer, m_flSndRoomtype, FIELD_FLOAT ), // Don't restore, client needs reset
|
DEFINE_FIELD( CBasePlayer, m_SndRoomtype, FIELD_INTEGER ),
|
||||||
//DEFINE_FIELD( CBasePlayer, m_flSndRange, FIELD_FLOAT ), // Don't restore, client needs reset
|
DEFINE_FIELD( CBasePlayer, m_flSndRange, FIELD_FLOAT ),
|
||||||
//DEFINE_FIELD( CBasePlayer, m_fNewAmmo, FIELD_INTEGER ), // Don't restore, client needs reset
|
//DEFINE_FIELD( CBasePlayer, m_fNewAmmo, FIELD_INTEGER ), // Don't restore, client needs reset
|
||||||
//DEFINE_FIELD( CBasePlayer, m_flgeigerRange, FIELD_FLOAT ), // Don't restore, reset in Precache()
|
//DEFINE_FIELD( CBasePlayer, m_flgeigerRange, FIELD_FLOAT ), // Don't restore, reset in Precache()
|
||||||
//DEFINE_FIELD( CBasePlayer, m_flgeigerDelay, FIELD_FLOAT ), // Don't restore, reset in Precache()
|
//DEFINE_FIELD( CBasePlayer, m_flgeigerDelay, FIELD_FLOAT ), // Don't restore, reset in Precache()
|
||||||
@ -2818,6 +2818,7 @@ void CBasePlayer::Spawn( void )
|
|||||||
|
|
||||||
pev->fov = m_iFOV = 0;// init field of view.
|
pev->fov = m_iFOV = 0;// init field of view.
|
||||||
m_iClientFOV = -1; // make sure fov reset is sent
|
m_iClientFOV = -1; // make sure fov reset is sent
|
||||||
|
m_ClientSndRoomtype = -1;
|
||||||
|
|
||||||
m_flNextDecalTime = 0;// let this player decal as soon as he spawns.
|
m_flNextDecalTime = 0;// let this player decal as soon as he spawns.
|
||||||
|
|
||||||
@ -2968,6 +2969,8 @@ int CBasePlayer::Restore( CRestore &restore )
|
|||||||
|
|
||||||
pev->fixangle = TRUE; // turn this way immediately
|
pev->fixangle = TRUE; // turn this way immediately
|
||||||
|
|
||||||
|
m_ClientSndRoomtype = -1;
|
||||||
|
|
||||||
// Copied from spawn() for now
|
// Copied from spawn() for now
|
||||||
m_bloodColor = BLOOD_COLOR_RED;
|
m_bloodColor = BLOOD_COLOR_RED;
|
||||||
|
|
||||||
@ -3353,6 +3356,7 @@ void CBasePlayer::ForceClientDllUpdate( void )
|
|||||||
m_iClientBattery = -1;
|
m_iClientBattery = -1;
|
||||||
m_iClientHideHUD = -1; // Vit_amiN: forcing to update
|
m_iClientHideHUD = -1; // Vit_amiN: forcing to update
|
||||||
m_iClientFOV = -1; // Vit_amiN: force client weapons to be sent
|
m_iClientFOV = -1; // Vit_amiN: force client weapons to be sent
|
||||||
|
m_ClientSndRoomtype = -1;
|
||||||
m_iTrain |= TRAIN_NEW; // Force new train message.
|
m_iTrain |= TRAIN_NEW; // Force new train message.
|
||||||
m_fWeapon = FALSE; // Force weapon send
|
m_fWeapon = FALSE; // Force weapon send
|
||||||
m_fKnownItem = FALSE; // Force weaponinit messages.
|
m_fKnownItem = FALSE; // Force weaponinit messages.
|
||||||
@ -3361,7 +3365,6 @@ void CBasePlayer::ForceClientDllUpdate( void )
|
|||||||
memset( m_rgAmmoLast, 0, sizeof( m_rgAmmoLast )); // a1ba: Force update AmmoX
|
memset( m_rgAmmoLast, 0, sizeof( m_rgAmmoLast )); // a1ba: Force update AmmoX
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Now force all the necessary messages
|
// Now force all the necessary messages
|
||||||
// to be sent.
|
// to be sent.
|
||||||
UpdateClientData();
|
UpdateClientData();
|
||||||
@ -4125,6 +4128,16 @@ void CBasePlayer::UpdateClientData( void )
|
|||||||
m_flNextSBarUpdateTime = gpGlobals->time + 0.2f;
|
m_flNextSBarUpdateTime = gpGlobals->time + 0.2f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Send new room type to client.
|
||||||
|
if (m_ClientSndRoomtype != m_SndRoomtype)
|
||||||
|
{
|
||||||
|
m_ClientSndRoomtype = m_SndRoomtype;
|
||||||
|
|
||||||
|
MESSAGE_BEGIN(MSG_ONE, SVC_ROOMTYPE, NULL, edict());
|
||||||
|
WRITE_SHORT((short)m_SndRoomtype); // sequence number
|
||||||
|
MESSAGE_END();
|
||||||
|
}
|
||||||
|
|
||||||
// Send the current bhopcap state.
|
// Send the current bhopcap state.
|
||||||
if( !m_bSentBhopcap )
|
if( !m_bSentBhopcap )
|
||||||
{
|
{
|
||||||
|
@ -116,8 +116,9 @@ public:
|
|||||||
int m_afButtonReleased;
|
int m_afButtonReleased;
|
||||||
|
|
||||||
edict_t *m_pentSndLast; // last sound entity to modify player room type
|
edict_t *m_pentSndLast; // last sound entity to modify player room type
|
||||||
float m_flSndRoomtype; // last roomtype set by sound entity
|
int m_SndRoomtype; // last roomtype set by sound entity
|
||||||
float m_flSndRange; // dist from player to sound entity
|
float m_flSndRange; // dist from player to sound entity
|
||||||
|
int m_ClientSndRoomtype;
|
||||||
|
|
||||||
float m_flFallVelocity;
|
float m_flFallVelocity;
|
||||||
|
|
||||||
|
@ -814,7 +814,7 @@ public:
|
|||||||
static TYPEDESCRIPTION m_SaveData[];
|
static TYPEDESCRIPTION m_SaveData[];
|
||||||
|
|
||||||
float m_flRadius;
|
float m_flRadius;
|
||||||
float m_flRoomtype;
|
int m_Roomtype;
|
||||||
};
|
};
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS( env_sound, CEnvSound )
|
LINK_ENTITY_TO_CLASS( env_sound, CEnvSound )
|
||||||
@ -822,7 +822,7 @@ LINK_ENTITY_TO_CLASS( env_sound, CEnvSound )
|
|||||||
TYPEDESCRIPTION CEnvSound::m_SaveData[] =
|
TYPEDESCRIPTION CEnvSound::m_SaveData[] =
|
||||||
{
|
{
|
||||||
DEFINE_FIELD( CEnvSound, m_flRadius, FIELD_FLOAT ),
|
DEFINE_FIELD( CEnvSound, m_flRadius, FIELD_FLOAT ),
|
||||||
DEFINE_FIELD( CEnvSound, m_flRoomtype, FIELD_FLOAT ),
|
DEFINE_FIELD( CEnvSound, m_Roomtype, FIELD_INTEGER ),
|
||||||
};
|
};
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE( CEnvSound, CPointEntity )
|
IMPLEMENT_SAVERESTORE( CEnvSound, CPointEntity )
|
||||||
@ -836,7 +836,7 @@ void CEnvSound::KeyValue( KeyValueData *pkvd )
|
|||||||
}
|
}
|
||||||
if( FStrEq( pkvd->szKeyName, "roomtype" ) )
|
if( FStrEq( pkvd->szKeyName, "roomtype" ) )
|
||||||
{
|
{
|
||||||
m_flRoomtype = atof( pkvd->szValue );
|
m_Roomtype = atoi( pkvd->szValue );
|
||||||
pkvd->fHandled = TRUE;
|
pkvd->fHandled = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -902,7 +902,7 @@ void CEnvSound::Think( void )
|
|||||||
{
|
{
|
||||||
// this is the entity currently affecting player, check
|
// this is the entity currently affecting player, check
|
||||||
// for validity
|
// for validity
|
||||||
if( pPlayer->m_flSndRoomtype != 0 && pPlayer->m_flSndRange != 0 )
|
if( pPlayer->m_SndRoomtype != 0 && pPlayer->m_flSndRange != 0 )
|
||||||
{
|
{
|
||||||
// we're looking at a valid sound entity affecting
|
// we're looking at a valid sound entity affecting
|
||||||
// player, make sure it's still valid, update range
|
// player, make sure it's still valid, update range
|
||||||
@ -914,11 +914,11 @@ void CEnvSound::Think( void )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// current sound entity affecting player is no longer valid,
|
// current sound entity affecting player is no longer valid,
|
||||||
// flag this state by clearing room_type and range.
|
// flag this state by clearing source handle and range.
|
||||||
// NOTE: we do not actually change the player's room_type
|
// NOTE: we do not actually change the player's room_type
|
||||||
// NOTE: until we have a new valid room_type to change it to.
|
// NOTE: until we have a new valid room_type to change it to.
|
||||||
pPlayer->m_flSndRange = 0;
|
pPlayer->m_flSndRange = 0;
|
||||||
pPlayer->m_flSndRoomtype = 0;
|
pPlayer->m_pentSndLast = 0;
|
||||||
goto env_sound_Think_slow;
|
goto env_sound_Think_slow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -938,18 +938,10 @@ void CEnvSound::Think( void )
|
|||||||
{
|
{
|
||||||
// new entity is closer to player, so it wins.
|
// new entity is closer to player, so it wins.
|
||||||
pPlayer->m_pentSndLast = ENT( pev );
|
pPlayer->m_pentSndLast = ENT( pev );
|
||||||
pPlayer->m_flSndRoomtype = m_flRoomtype;
|
pPlayer->m_SndRoomtype = m_Roomtype;
|
||||||
pPlayer->m_flSndRange = flRange;
|
pPlayer->m_flSndRange = flRange;
|
||||||
|
|
||||||
// send room_type command to player's server.
|
// New room type is sent to player in CBasePlayer::UpdateClientData.
|
||||||
// this should be a rare event - once per change of room_type
|
|
||||||
// only!
|
|
||||||
|
|
||||||
//CLIENT_COMMAND( pentPlayer, "room_type %f", m_flRoomtype );
|
|
||||||
|
|
||||||
MESSAGE_BEGIN( MSG_ONE, SVC_ROOMTYPE, NULL, pentPlayer ); // use the magic #1 for "one client"
|
|
||||||
WRITE_SHORT( (short)m_flRoomtype ); // sequence number
|
|
||||||
MESSAGE_END();
|
|
||||||
|
|
||||||
// crank up nextthink rate for new active sound entity
|
// crank up nextthink rate for new active sound entity
|
||||||
// by falling through to think_fast...
|
// by falling through to think_fast...
|
||||||
|
Loading…
x
Reference in New Issue
Block a user