Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions cl_dll/hl/hl_weapons.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,67 @@ void CBasePlayer::Spawn()
g_irunninggausspred = false;
}

void CBaseEntity::PlaybackEvent(
const unsigned short usEventIndex,
const float fparam1,
const float fparam2,
const int iparam1,
const int iparam2,
const int bparam1,
const int bparam2,
const int afFlags,
const bool bSendPosition,
const float flDelay)
{
const float* origin = g_vecZero;
const float* angles = g_vecZero;

if (bSendPosition)
{
origin = pev->origin;
angles = pev->angles;
}

g_engfuncs.pfnPlaybackEvent(
afFlags,
edict(),
usEventIndex,
flDelay,
origin,
angles,
fparam1,
fparam2,
iparam1,
iparam2,
bparam1,
bparam2);
}

void CBasePlayer::PlaybackEvent(
const unsigned short usEventIndex,
const float fparam1,
const float fparam2,
const int iparam1,
const int iparam2,
const int bparam1,
const int bparam2,
const int afFlags,
const bool bSendPosition,
const float flDelay)
{
CBaseEntity::PlaybackEvent(
usEventIndex,
fparam1,
fparam2,
iparam1,
iparam2,
bparam1,
bparam2,
afFlags,
bSendPosition || (afFlags & FEV_RELIABLE) != 0,
flDelay);
}

/*
=====================
UTIL_TraceLine
Expand Down
36 changes: 36 additions & 0 deletions dlls/cbase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -792,6 +792,42 @@ int CBaseEntity::DamageDecal(int bitsDamageType)
}


void CBaseEntity::PlaybackEvent(
const unsigned short usEventIndex,
const float fparam1,
const float fparam2,
const int iparam1,
const int iparam2,
const int bparam1,
const int bparam2,
const int afFlags,
const bool bSendPosition,
const float flDelay)
{
const float* origin = g_vecZero;
const float* angles = g_vecZero;

if (bSendPosition)
{
origin = pev->origin;
angles = pev->angles;
}

g_engfuncs.pfnPlaybackEvent(
afFlags,
edict(),
usEventIndex,
flDelay,
origin,
angles,
fparam1,
fparam2,
iparam1,
iparam2,
bparam1,
bparam2);
}


// NOTE: szName must be a pointer to constant memory, e.g. "monster_class" because the entity
// will keep a pointer to it after this call.
Expand Down
12 changes: 12 additions & 0 deletions dlls/cbase.h
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,18 @@ class CBaseEntity
int m_fInAttack;

int m_fireState;

virtual void PlaybackEvent(
const unsigned short usEventIndex,
const float fparam1 = 0.0F,
const float fparam2 = 0.0F,
const int iparam1 = 0,
const int iparam2 = 0,
const int bparam1 = 0,
const int bparam2 = 0,
const int afFlags = 0,
const bool bSendPosition = false,
const float flDelay = 0.0F);
};

inline bool FNullEnt(CBaseEntity* ent) { return (ent == NULL) || FNullEnt(ent->edict()); }
Expand Down
18 changes: 2 additions & 16 deletions dlls/crossbow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -322,14 +322,7 @@ void CCrossbow::FireSniperBolt()
m_pPlayer->m_iWeaponVolume = QUIET_GUN_VOLUME;
m_iClip--;

int flags;
#if defined(CLIENT_WEAPONS)
flags = FEV_NOTHOST;
#else
flags = 0;
#endif

PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usCrossbow2, 0.0, g_vecZero, g_vecZero, 0, 0, m_iClip, 0, 0, 0);
m_pPlayer->PlaybackEvent(m_usCrossbow2, 0.0F, 0.0F, m_iClip);

// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
Expand Down Expand Up @@ -365,14 +358,7 @@ void CCrossbow::FireBolt()

m_iClip--;

int flags;
#if defined(CLIENT_WEAPONS)
flags = FEV_NOTHOST;
#else
flags = 0;
#endif

PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usCrossbow, 0.0, g_vecZero, g_vecZero, 0, 0, m_iClip, 0, 0, 0);
m_pPlayer->PlaybackEvent(m_usCrossbow, 0.0F, 0.0F, m_iClip);

// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
Expand Down
4 changes: 1 addition & 3 deletions dlls/crowbar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,9 +179,7 @@ bool CCrowbar::Swing(bool fFirst)

if (fFirst)
{
PLAYBACK_EVENT_FULL(FEV_NOTHOST, m_pPlayer->edict(), m_usCrowbar,
0.0, g_vecZero, g_vecZero, 0, 0, 0,
0.0, 0, 0.0);
m_pPlayer->PlaybackEvent(m_usCrowbar);
}


Expand Down
17 changes: 5 additions & 12 deletions dlls/egon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,13 +158,6 @@ void CEgon::Attack()
Vector vecAiming = gpGlobals->v_forward;
Vector vecSrc = m_pPlayer->GetGunPosition();

int flags;
#if defined(CLIENT_WEAPONS)
flags = FEV_NOTHOST;
#else
flags = 0;
#endif

switch (m_fireState)
{
case FIRE_OFF:
Expand All @@ -178,7 +171,7 @@ void CEgon::Attack()

m_flAmmoUseTime = gpGlobals->time; // start using ammo ASAP.

PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usEgonFire, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, 0, m_fireMode, 1, 0);
m_pPlayer->PlaybackEvent(m_usEgonFire, 0.0F, 0.0F, 0, m_fireMode, 1);

m_shakeTime = 0;

Expand All @@ -198,7 +191,7 @@ void CEgon::Attack()

if (pev->fuser1 <= UTIL_WeaponTimeBase())
{
PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usEgonFire, 0, g_vecZero, g_vecZero, 0.0, 0.0, 0, m_fireMode, 0, 0);
m_pPlayer->PlaybackEvent(m_usEgonFire, 0.0F, 0.0F, 0, m_fireMode);
pev->fuser1 = 1000;
}

Expand Down Expand Up @@ -516,9 +509,9 @@ void CEgon::EndAttack()

if (m_fireState != FIRE_OFF) //Checking the button just in case!.
bMakeNoise = true;

PLAYBACK_EVENT_FULL(FEV_GLOBAL | FEV_RELIABLE, m_pPlayer->edict(), m_usEgonStop, 0, m_pPlayer->pev->origin, m_pPlayer->pev->angles, 0.0, 0.0,
static_cast<int>(bMakeNoise), 0, 0, 0);
m_pPlayer->PlaybackEvent(m_usEgonStop, 0.0F, 0.0F,
static_cast<int>(bMakeNoise), 0, 0, 0, FEV_GLOBAL | FEV_RELIABLE);

m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;

Expand Down
8 changes: 4 additions & 4 deletions dlls/gauss.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ void CGauss::SecondaryAttack()
m_pPlayer->m_flStartCharge = gpGlobals->time;
m_pPlayer->m_flAmmoStartCharge = UTIL_WeaponTimeBase() + GetFullChargeTime();

PLAYBACK_EVENT_FULL(FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, 110, 0, 0, 0);
m_pPlayer->PlaybackEvent(m_usGaussSpin, 0.0F, 0.0F, 110);

m_iSoundState = SND_CHANGE_PITCH;
}
Expand Down Expand Up @@ -250,7 +250,7 @@ void CGauss::SecondaryAttack()
if (m_iSoundState == 0)
ALERT(at_console, "sound state %d\n", m_iSoundState);

PLAYBACK_EVENT_FULL(FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, pitch, 0, (m_iSoundState == SND_CHANGE_PITCH) ? 1 : 0, 0);
m_pPlayer->PlaybackEvent(m_usGaussSpin, 0.0F, 0.0F, pitch, 0, m_iSoundState == SND_CHANGE_PITCH ? 1 : 0);

m_iSoundState = SND_CHANGE_PITCH; // hack for going through level transitions

Expand Down Expand Up @@ -369,7 +369,7 @@ void CGauss::Fire(Vector vecOrigSrc, Vector vecDir, float flDamage)
#endif

// The main firing event is sent unreliably so it won't be delayed.
PLAYBACK_EVENT_FULL(FEV_NOTHOST, m_pPlayer->edict(), m_usGaussFire, 0.0, m_pPlayer->pev->origin, m_pPlayer->pev->angles, flDamage, 0.0, 0, 0, m_fPrimaryFire ? 1 : 0, 0);
m_pPlayer->PlaybackEvent(m_usGaussFire, flDamage, 0.0F, 0, 0, static_cast<int>(m_fPrimaryFire), 0, FEV_NOTHOST, true);

SendStopEvent(false);

Expand Down Expand Up @@ -599,7 +599,7 @@ void CGauss::SendStopEvent(bool sendToHost)
flags |= FEV_NOTHOST;
}

PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usGaussFire, 0.01, m_pPlayer->pev->origin, m_pPlayer->pev->angles, 0.0, 0.0, 0, 0, 0, 1);
m_pPlayer->PlaybackEvent(m_usGaussFire, 0.0F, 0.0F, 0, 0, 0, 1, flags, true, 0.01F);
}


Expand Down
10 changes: 1 addition & 9 deletions dlls/glock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,6 @@ void CGlock::GlockFire(float flSpread, float flCycleTime, bool fUseAutoAim)

m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;

int flags;

#if defined(CLIENT_WEAPONS)
flags = FEV_NOTHOST;
#else
flags = 0;
#endif

// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);

Expand Down Expand Up @@ -144,7 +136,7 @@ void CGlock::GlockFire(float flSpread, float flCycleTime, bool fUseAutoAim)
Vector vecDir;
vecDir = m_pPlayer->FireBulletsPlayer(1, vecSrc, vecAiming, Vector(flSpread, flSpread, flSpread), 8192, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed);

PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), fUseAutoAim ? m_usFireGlock1 : m_usFireGlock2, 0.0, g_vecZero, g_vecZero, vecDir.x, vecDir.y, 0, 0, (m_iClip == 0) ? 1 : 0, 0);
m_pPlayer->PlaybackEvent(fUseAutoAim ? m_usFireGlock1 : m_usFireGlock2, vecDir.x, vecDir.y, 0, 0, m_iClip == 0 ? 1 : 0);

m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);

Expand Down
21 changes: 2 additions & 19 deletions dlls/hornetgun.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,16 +143,7 @@ void CHgun::PrimaryAttack()
m_pPlayer->m_iWeaponVolume = QUIET_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;

int flags;
#if defined(CLIENT_WEAPONS)
flags = FEV_NOTHOST;
#else
flags = 0;
#endif

PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usHornetFire, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, 0, 0, 0, 0);


m_pPlayer->PlaybackEvent(m_usHornetFire);

// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
Expand Down Expand Up @@ -234,15 +225,7 @@ void CHgun::SecondaryAttack()
m_flRechargeTime = gpGlobals->time + GetRechargeTime();
#endif

int flags;
#if defined(CLIENT_WEAPONS)
flags = FEV_NOTHOST;
#else
flags = 0;
#endif

PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usHornetFire, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, 0, 0, 0, 0);

m_pPlayer->PlaybackEvent(m_usHornetFire);

m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
Expand Down
18 changes: 2 additions & 16 deletions dlls/mp5.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,14 +141,7 @@ void CMP5::PrimaryAttack()
vecDir = m_pPlayer->FireBulletsPlayer(1, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 8192, BULLET_PLAYER_MP5, 2, 0, m_pPlayer->pev, m_pPlayer->random_seed);
}

int flags;
#if defined(CLIENT_WEAPONS)
flags = FEV_NOTHOST;
#else
flags = 0;
#endif

PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usMP5, 0.0, g_vecZero, g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0);
m_pPlayer->PlaybackEvent(m_usMP5, vecDir.x, vecDir.y);

if (0 == m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
// HEV suit - indicate out of ammo condition
Expand Down Expand Up @@ -198,14 +191,7 @@ void CMP5::SecondaryAttack()
m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16,
gpGlobals->v_forward * 800);

int flags;
#if defined(CLIENT_WEAPONS)
flags = FEV_NOTHOST;
#else
flags = 0;
#endif

PLAYBACK_EVENT(flags, m_pPlayer->edict(), m_usMP52);
m_pPlayer->PlaybackEvent(m_usMP52);

m_flNextPrimaryAttack = GetNextAttackDelay(1);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1;
Expand Down
6 changes: 2 additions & 4 deletions dlls/plats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1112,8 +1112,7 @@ void CFuncTrackTrain::StopSound()

us_encode = us_sound;

PLAYBACK_EVENT_FULL(FEV_RELIABLE | FEV_UPDATE, edict(), m_usAdjustPitch, 0.0,
g_vecZero, g_vecZero, 0.0, 0.0, us_encode, 0, 1, 0);
PlaybackEvent(m_usAdjustPitch, 0.0F, 0.0F, us_encode, 0, 1, 0, FEV_RELIABLE | FEV_UPDATE);

/*
STOP_SOUND(ENT(pev), CHAN_STATIC, (char*)STRING(pev->noise));
Expand Down Expand Up @@ -1162,8 +1161,7 @@ void CFuncTrackTrain::UpdateSound()

us_encode = us_sound | us_pitch | us_volume;

PLAYBACK_EVENT_FULL(FEV_RELIABLE | FEV_UPDATE, edict(), m_usAdjustPitch, 0.0,
g_vecZero, g_vecZero, 0.0, 0.0, us_encode, 0, 0, 0);
PlaybackEvent(m_usAdjustPitch, 0.0F, 0.0F, us_encode, 0, 0, 0, FEV_RELIABLE | FEV_UPDATE);
}
}

Expand Down
25 changes: 25 additions & 0 deletions dlls/player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4913,6 +4913,31 @@ void CBasePlayer::SetPrefsFromUserinfo(char* infobuffer)
}
}

void CBasePlayer::PlaybackEvent(
const unsigned short usEventIndex,
const float fparam1,
const float fparam2,
const int iparam1,
const int iparam2,
const int bparam1,
const int bparam2,
const int afFlags,
const bool bSendPosition,
const float flDelay)
{
CBaseEntity::PlaybackEvent(
usEventIndex,
fparam1,
fparam2,
iparam1,
iparam2,
bparam1,
bparam2,
afFlags,
bSendPosition || (afFlags & FEV_RELIABLE) != 0,
flDelay);
}

//=========================================================
// Dead HEV suit prop
//=========================================================
Expand Down
Loading