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
40 changes: 22 additions & 18 deletions src/game/client/hud_crosshair.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -373,9 +373,9 @@ ConVar cl_neo_scope_restrict_to_rectangle("cl_neo_scope_restrict_to_rectangle",

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));
V_memset(m_szLocalStrPlayerCrosshair, 0, sizeof(m_szLocalStrPlayerCrosshair));
m_flLastCheckedXHair = 0.0f;
m_iPrevPlayerIdx = -1;
}

#endif // NEO
Expand Down Expand Up @@ -495,7 +495,6 @@ void CHudCrosshair::Paint( void )
bool bThisFrameRefreshCrosshair = m_bRefreshCrosshair;
auto *pNeoPlayer = static_cast<C_NEO_Player *>(pPlayer);
bool bTakeSpecCrosshair = false;
CrosshairInfo *pCrosshairInfo = &m_crosshairInfo;
const char *pszNeoCrosshair = cl_neo_crosshair.GetString();
if (cl_neo_crosshair_network.GetBool() && IsLocalPlayerSpectator())
{
Expand All @@ -504,34 +503,39 @@ void CHudCrosshair::Paint( void )
Assert(bPlayerIdxValid);
if (bPlayerIdxValid)
{
if (m_iPrevPlayerIdx != iPlayerIdx)
{
m_flLastCheckedXHair = 0.0f;
m_iPrevPlayerIdx = iPlayerIdx;
}
bTakeSpecCrosshair = true;
bThisFrameRefreshCrosshair = false;
pCrosshairInfo = &m_playersCrosshairInfos[iPlayerIdx];
pszNeoCrosshair = pNeoPlayer->m_szNeoCrosshair.Get();
pszNeoCrosshair = g_PR->GetNeoCrosshair(iPlayerIdx);

// NEO NOTE (nullsystem): Only check the string per second
static constexpr float FL_XHAIR_REFRESH_INTERVAL = 1.0f;
if (m_aflLastCheckedPlayersCrosshair[iPlayerIdx] + FL_XHAIR_REFRESH_INTERVAL < gpGlobals->curtime)
if (m_flLastCheckedXHair + FL_XHAIR_REFRESH_INTERVAL < gpGlobals->curtime)
{
m_aflLastCheckedPlayersCrosshair[iPlayerIdx] = gpGlobals->curtime;
bThisFrameRefreshCrosshair = (V_strcmp(m_szLocalStrPlayersCrosshair[iPlayerIdx], pszNeoCrosshair) != 0);
if (bThisFrameRefreshCrosshair)
{
V_strcpy_safe(m_szLocalStrPlayersCrosshair[iPlayerIdx], pszNeoCrosshair);
}
m_flLastCheckedXHair = gpGlobals->curtime;
bThisFrameRefreshCrosshair = (V_strcmp(m_szLocalStrPlayerCrosshair, pszNeoCrosshair) != 0);
}

}
}
else if (m_iPrevPlayerIdx != pNeoPlayer->entindex())
{
bThisFrameRefreshCrosshair = true;
m_iPrevPlayerIdx = pNeoPlayer->entindex();
}

if (bThisFrameRefreshCrosshair)
{
const bool bImported = ImportCrosshair(pCrosshairInfo, pszNeoCrosshair);
V_strcpy_safe(m_szLocalStrPlayerCrosshair, pszNeoCrosshair);
const bool bImported = ImportCrosshair(&m_crosshairInfo, pszNeoCrosshair);
if (!bImported)
{
// NEO NOTE (nullsystem): Don't revert, just enforce default if it
// is not given properly
ResetCrosshairToDefault(pCrosshairInfo);
ResetCrosshairToDefault(&m_crosshairInfo);
}
if (!bTakeSpecCrosshair)
{
Expand All @@ -552,9 +556,9 @@ void CHudCrosshair::Paint( void )
iNeoXHairWep += CROSSHAIR_WEP_DEFAULT_HIPFIRE;
}
eNeoXHairWep = static_cast<ENeoCrosshairWep>(
UseCrosshairIndexFor(pCrosshairInfo, iNeoXHairWep, &bHideCrosshair));
UseCrosshairIndexFor(&m_crosshairInfo, iNeoXHairWep, &bHideCrosshair));
}
CrosshairWepInfo *crh = &pCrosshairInfo->wep[eNeoXHairWep];
CrosshairWepInfo *crh = &m_crosshairInfo.wep[eNeoXHairWep];
const int iTexXHId = m_iTexXHId[clamp(crh->iStyle, 0, CROSSHAIR_STYLE__TOTAL - 1)];

bool showFriendlyFireCrosshair = false;
Expand Down
8 changes: 4 additions & 4 deletions src/game/client/hud_crosshair.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ class CHudCrosshair : public CHudElement, public vgui::Panel
bool m_bRefreshCrosshair = true;
CrosshairInfo m_crosshairInfo = {};

// m_szLocalStrPlayersCrosshair is just for crosshair refresh checks
char m_szLocalStrPlayersCrosshair[MAX_PLAYERS][NEO_XHAIR_SEQMAX] = {};
CrosshairInfo m_playersCrosshairInfos[MAX_PLAYERS] = {};
float m_aflLastCheckedPlayersCrosshair[MAX_PLAYERS] = {};
// m_szLocalStrPlayerCrosshair is just for crosshair refresh checks
char m_szLocalStrPlayerCrosshair[NEO_XHAIR_SEQMAX] = {};
float m_flLastCheckedXHair = 0.0f;
int m_iPrevPlayerIdx = -1;

void resetPlayersCrosshair();
#endif
Expand Down
2 changes: 0 additions & 2 deletions src/game/client/neo/c_neo_player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ IMPLEMENT_CLIENTCLASS_DT(C_NEO_Player, DT_NEO_Player, CNEO_Player)
RecvPropInt(RECVINFO(m_NeoFlags)),
RecvPropString(RECVINFO(m_szNeoName)),
RecvPropString(RECVINFO(m_szNeoClantag)),
RecvPropString(RECVINFO(m_szNeoCrosshair)),
RecvPropInt(RECVINFO(m_szNameDupePos)),
RecvPropBool(RECVINFO(m_bClientWantNeoName)),

Expand Down Expand Up @@ -444,7 +443,6 @@ C_NEO_Player::C_NEO_Player()
m_iNeoStar = NEO_DEFAULT_STAR;
V_memset(m_szNeoName.GetForModify(), 0, sizeof(m_szNeoName));
V_memset(m_szNeoClantag.GetForModify(), 0, sizeof(m_szNeoClantag));
V_memset(m_szNeoCrosshair.GetForModify(), 0, sizeof(m_szNeoCrosshair));

m_iLoadoutWepChoice = NEORules()->GetForcedWeapon() >= 0 ? NEORules()->GetForcedWeapon() : 0;
m_iNextSpawnClassChoice = NEO_CLASS_RANDOM;
Expand Down
1 change: 0 additions & 1 deletion src/game/client/neo/c_neo_player.h
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,6 @@ class C_NEO_Player : public C_HL2MP_Player

CNetworkString(m_szNeoName, MAX_PLAYER_NAME_LENGTH);
CNetworkString(m_szNeoClantag, NEO_MAX_CLANTAG_LENGTH);
CNetworkString(m_szNeoCrosshair, NEO_XHAIR_SEQMAX);
CNetworkVar(int, m_szNameDupePos);
CNetworkVar(bool, m_bClientWantNeoName);

Expand Down
3 changes: 0 additions & 3 deletions src/game/server/neo/neo_player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ SendPropArray(SendPropVector(SENDINFO_ARRAY(m_vLastPingByStar), -1, SPROP_COORD)
SendPropInt(SENDINFO(m_NeoFlags), 4, SPROP_UNSIGNED),
SendPropString(SENDINFO(m_szNeoName)),
SendPropString(SENDINFO(m_szNeoClantag)),
SendPropString(SENDINFO(m_szNeoCrosshair)),
SendPropInt(SENDINFO(m_szNameDupePos)),
SendPropBool(SENDINFO(m_bClientWantNeoName)),

Expand Down Expand Up @@ -119,7 +118,6 @@ DEFINE_FIELD(m_NeoFlags, FIELD_CHARACTER),

DEFINE_FIELD(m_szNeoName, FIELD_STRING),
DEFINE_FIELD(m_szNeoClantag, FIELD_STRING),
DEFINE_FIELD(m_szNeoCrosshair, FIELD_STRING),
DEFINE_FIELD(m_szNameDupePos, FIELD_INTEGER),
DEFINE_FIELD(m_bClientWantNeoName, FIELD_BOOLEAN),

Expand Down Expand Up @@ -582,7 +580,6 @@ CNEO_Player::CNEO_Player()
V_memset(m_szNeoName.GetForModify(), 0, sizeof(m_szNeoName));
m_bNeoNameHasSet = false;
V_memset(m_szNeoClantag.GetForModify(), 0, sizeof(m_szNeoClantag));
V_memset(m_szNeoCrosshair.GetForModify(), 0, sizeof(m_szNeoCrosshair));

m_bInThermOpticCamo = m_bInVision = false;
m_bHasBeenAirborneForTooLongToSuperJump = false;
Expand Down
2 changes: 1 addition & 1 deletion src/game/server/neo/neo_player.h
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ class CNEO_Player : public CHL2MP_Player
CNetworkVar(unsigned char, m_NeoFlags);
CNetworkString(m_szNeoName, MAX_PLAYER_NAME_LENGTH);
CNetworkString(m_szNeoClantag, NEO_MAX_CLANTAG_LENGTH);
CNetworkString(m_szNeoCrosshair, NEO_XHAIR_SEQMAX);
char m_szNeoCrosshair[NEO_XHAIR_SEQMAX] = {};
CNetworkVar(int, m_szNameDupePos);

// NEO NOTE (nullsystem): As dumb as client sets -> server -> client it may sound,
Expand Down
5 changes: 2 additions & 3 deletions src/game/server/player_resource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,11 +186,10 @@ void CPlayerResource::UpdatePlayerData( void )
m_iNeoNameDupeIdx.Set(i, neoPlayer->NameDupePos());
m_bAfk.Set(i, neoPlayer->IsAFK());
{
const char *neoCrosshair = neoPlayer->m_szNeoCrosshair.Get();
string_t strt;
if (neoCrosshair && neoCrosshair[0] != '\0')
if (neoPlayer->m_szNeoCrosshair[0] != '\0')
{
strt = AllocPooledString(neoCrosshair);
strt = AllocPooledString(neoPlayer->m_szNeoCrosshair);
}
else
{
Expand Down
5 changes: 2 additions & 3 deletions src/game/shared/neo/neo_gamerules.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3587,10 +3587,9 @@ void CNEORules::ClientSettingsChanged(CBasePlayer *pPlayer)
}

const char *pszClNeoCrosshair = engine->GetClientConVarValue(pNEOPlayer->entindex(), "cl_neo_crosshair");
const char *pszOldClNeoCrosshair = pNEOPlayer->m_szNeoCrosshair.Get();
if (V_strcmp(pszOldClNeoCrosshair, pszClNeoCrosshair) != 0)
if (V_strcmp(pNEOPlayer->m_szNeoCrosshair, pszClNeoCrosshair) != 0)
{
V_strncpy(pNEOPlayer->m_szNeoCrosshair.GetForModify(), pszClNeoCrosshair, NEO_XHAIR_SEQMAX);
V_strcpy_safe(pNEOPlayer->m_szNeoCrosshair, pszClNeoCrosshair);
}

const char *pszName = pszSteamName;
Expand Down