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
12 changes: 11 additions & 1 deletion src/game/client/hud_crosshair.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,17 @@ void CHudCrosshair::GetDrawPosition ( float *pX, float *pY, bool *pbBehindCamera
ConVar cl_neo_scope_restrict_to_rectangle("cl_neo_scope_restrict_to_rectangle", "1", FCVAR_CHEAT,
"Whether to enforce rectangular sniper scope shape regardless of screen ratio.", true, 0.0, true, 1.0);

#ifdef NEO

void CHudCrosshair::resetPlayersCrosshair()
{
V_memset(m_szLocalStrPlayersCrosshair, 0, sizeof(m_szLocalStrPlayersCrosshair));
V_memset(m_playersCrosshairInfos, 0, sizeof(m_playersCrosshairInfos));
V_memset(m_aflLastCheckedPlayersCrosshair, 0, sizeof(m_aflLastCheckedPlayersCrosshair));
}

#endif // NEO

void CHudCrosshair::Paint( void )
{
if ( !m_pCrosshair )
Expand Down Expand Up @@ -502,7 +513,6 @@ void CHudCrosshair::Paint( void )
if (bPlayerIdxValid)
{
bTakeSpecCrosshair = true;
m_playersCrosshairInfos;
bThisFrameRefreshCrosshair = false;
pCrosshairInfo = &m_playersCrosshairInfos[iPlayerIdx];
pszNeoCrosshair = pNeoPlayer->m_szNeoCrosshair.Get();
Expand Down
2 changes: 2 additions & 0 deletions src/game/client/hud_crosshair.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ class CHudCrosshair : public CHudElement, public vgui::Panel
char m_szLocalStrPlayersCrosshair[MAX_PLAYERS][NEO_XHAIR_SEQMAX] = {};
CrosshairInfo m_playersCrosshairInfos[MAX_PLAYERS] = {};
float m_aflLastCheckedPlayersCrosshair[MAX_PLAYERS] = {};

void resetPlayersCrosshair();
#endif

virtual void SetCrosshairAngle( const QAngle& angle );
Expand Down
32 changes: 32 additions & 0 deletions src/game/client/neo/c_neo_player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,7 @@ C_NEO_Player::C_NEO_Player()
m_bPreviouslyReloading = false;
m_bLastTickInThermOpticCamo = false;
m_bIsAllowedToToggleVision = false;
m_bSpecRefreshedStates = false;

m_flTocFactor = 0.15f;

Expand Down Expand Up @@ -1154,6 +1155,25 @@ void C_NEO_Player::PreThink( void )
m_flCamoAuxLastTime = 0;
}

if (IsLocalPlayer() && GetTeamNumber() == TEAM_SPECTATOR)
{
if (NEORules()->IsRoundPreRoundFreeze())
{
if (false == m_bSpecRefreshedStates)
{
if (CHudCrosshair *crosshair = GET_HUDELEMENT(CHudCrosshair))
{
crosshair->resetPlayersCrosshair();
}
}
m_bSpecRefreshedStates = true;
}
else
{
m_bSpecRefreshedStates = false;
}
}

if (IsAlive())
{
if (IsLocalPlayer() && m_bFirstAliveTick)
Expand All @@ -1168,6 +1188,11 @@ void C_NEO_Player::PreThink( void )
// so it could arrive too late.
CLocalPlayerFilter filter;
enginesound->SetPlayerDSP(filter, 0, true);

if (CHudCrosshair *crosshair = GET_HUDELEMENT(CHudCrosshair))
{
crosshair->resetPlayersCrosshair();
}
}
}
else
Expand Down Expand Up @@ -1606,6 +1631,13 @@ void C_NEO_Player::Spawn( void )
}
}
}

// Only do crosshair reset for confirmed local player
if (CHudCrosshair *crosshair = GET_HUDELEMENT(CHudCrosshair);
crosshair && IsLocalPlayer())
{
crosshair->resetPlayersCrosshair();
}
}

void C_NEO_Player::DoImpactEffect( trace_t &tr, int nDamageType )
Expand Down
1 change: 1 addition & 0 deletions src/game/client/neo/c_neo_player.h
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@ class C_NEO_Player : public C_HL2MP_Player
bool m_bFirstDeathTick;
bool m_bPreviouslyReloading;
bool m_bIsAllowedToToggleVision;
bool m_bSpecRefreshedStates;

float m_flLastAirborneJumpOkTime;
float m_flLastSuperJumpTime;
Expand Down
17 changes: 17 additions & 0 deletions src/game/shared/neo/neo_gamerules.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "engine/IEngineSound.h"
#include "filesystem.h"
#include "hltvcamera.h"
#include "hud_crosshair.h"
#else
#include "neo_player.h"
#include "team.h"
Expand Down Expand Up @@ -745,6 +746,17 @@ void CNEORules::ClientSpawned(edict_t* pPlayer)
}
#endif
#endif

#ifdef CLIENT_DLL
C_NEO_Player *pLocalPlayer = C_NEO_Player::GetLocalNEOPlayer();
if (pLocalPlayer->index == pPlayer->m_EdictIndex)
{
if (CHudCrosshair *crosshair = GET_HUDELEMENT(CHudCrosshair))
{
crosshair->resetPlayersCrosshair();
}
}
#endif
}

int CNEORules::DefaultFOV(void)
Expand Down Expand Up @@ -822,6 +834,11 @@ void CNEORules::ResetMapSessionCommon()
m_pJuggernautItem = nullptr;
m_pJuggernautPlayer = nullptr;
m_bGotMatchWinner = false;
#else // CLIENT_DLL
if (CHudCrosshair *crosshair = GET_HUDELEMENT(CHudCrosshair))
{
crosshair->resetPlayersCrosshair();
}
#endif
}

Expand Down
Loading