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
59 changes: 41 additions & 18 deletions src/game/client/neo/ui/neo_hud_friendly_marker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,14 @@ void iffMarkerChangeCallback( IConVar *pConVar, char const* pOldString, float fl
}
}

ConVar cl_neo_squad_marker("cl_neo_squad_marker", NEO_SQUAD_MARKER_DEFAULT, FCVAR_ARCHIVE | FCVAR_DONTRECORD, "IFF Marker settings for squad-mates", iffMarkerChangeCallback);
ConVar cl_neo_friendly_marker("cl_neo_friendly_marker", NEO_FRIENDLY_MARKER_DEFAULT, FCVAR_ARCHIVE | FCVAR_DONTRECORD, "IFF Marker settings for team-mates", iffMarkerChangeCallback);
ConVar cl_neo_spectator_marker("cl_neo_spectator_marker", NEO_SPECTATOR_MARKER_DEFAULT, FCVAR_ARCHIVE | FCVAR_DONTRECORD, "IFF Marker settings for spectated players", iffMarkerChangeCallback);
constexpr auto markerFlags = FCVAR_ARCHIVE | FCVAR_PRINTABLEONLY | FCVAR_DONTRECORD;
ConVar cl_neo_squad_marker("cl_neo_squad_marker", NEO_SQUAD_MARKER_DEFAULT, markerFlags, "IFF Marker settings for squad-mates", iffMarkerChangeCallback);
ConVar cl_neo_friendly_marker("cl_neo_friendly_marker", NEO_FRIENDLY_MARKER_DEFAULT, markerFlags, "IFF Marker settings for team-mates", iffMarkerChangeCallback);
ConVar cl_neo_spectator_marker("cl_neo_spectator_marker", NEO_SPECTATOR_MARKER_DEFAULT, markerFlags, "IFF Marker settings for spectated players", iffMarkerChangeCallback);
#ifdef GLOWS_ENABLE
ConVar cl_neo_squad_xray_marker("cl_neo_squad_xray_marker", NEO_SQUAD_XRAY_MARKER_DEFAULT, FCVAR_ARCHIVE | FCVAR_DONTRECORD, "IFF Marker settings for squad-mates with xray enabled", iffMarkerChangeCallback);
ConVar cl_neo_friendly_xray_marker("cl_neo_friendly_xray_marker", NEO_FRIENDLY_XRAY_MARKER_DEFAULT, FCVAR_ARCHIVE | FCVAR_DONTRECORD, "IFF Marker settings for team-mates with xray enabled", iffMarkerChangeCallback);
ConVar cl_neo_spectator_xray_marker("cl_neo_spectator_xray_marker", NEO_SPECTATOR_XRAY_MARKER_DEFAULT, FCVAR_ARCHIVE | FCVAR_DONTRECORD, "IFF Marker settings for spectated players with xray enabled", iffMarkerChangeCallback);
ConVar cl_neo_squad_xray_marker("cl_neo_squad_xray_marker", NEO_SQUAD_XRAY_MARKER_DEFAULT, markerFlags, "IFF Marker settings for squad-mates with xray enabled", iffMarkerChangeCallback);
ConVar cl_neo_friendly_xray_marker("cl_neo_friendly_xray_marker", NEO_FRIENDLY_XRAY_MARKER_DEFAULT, markerFlags, "IFF Marker settings for team-mates with xray enabled", iffMarkerChangeCallback);
ConVar cl_neo_spectator_xray_marker("cl_neo_spectator_xray_marker", NEO_SPECTATOR_XRAY_MARKER_DEFAULT, markerFlags, "IFF Marker settings for spectated players with xray enabled", iffMarkerChangeCallback);
#endif // GLOWS_ENABLE

void CNEOHud_FriendlyMarker::UpdateStateForNeoHudElementDraw()
Expand Down Expand Up @@ -407,7 +408,29 @@ bool ImportMarker(FriendlyMarkerInfo *crh, const char *pszSequence)
for (int i = 0; i < iPszSequenceLength && iSegmentIdx < NEOIFFMARKER_SEGMENT__TOTAL; ++i)
{
const char ch = szMutSequence[i];
if (ch == ';')

// NEO NOTE (Rain): I am changing the delimiter away from ';' because the Source cmd tokenizer
// does not have a sensible character escape syntax, and ';' is already used as command end token,
// which causes issues when trying to chain commands with an inner semicolon.
// NEO TODO (Rain): we should probably also update the xhair syntax and any other such serializations
// to ideally use the same, non-semicolon token, and declare that in a global header somewhere.
constexpr char deprecated_delimiter = ';';
static_assert(deprecated_delimiter != NEO_MARKER_DELIMITER);
if (ch == deprecated_delimiter)
{
char point_to[NEO_IFFMARKER_SEQMAX];
V_memset(point_to, ' ', i);
point_to[i] = '^';
point_to[i+1] = '\0';
Warning("Please replace the \"%c\" characters with \"%c\" in your marker syntax.\n"
"Failed for input at pos %d:\n\t%s\n\t%s\n",
deprecated_delimiter, NEO_MARKER_DELIMITER,
i, pszSequence,
point_to);
return false;
}

if (ch == NEO_MARKER_DELIMITER)
{
szMutSequence[i] = '\0';
const char *pszCurSegment = szMutSequence + iPrevSegment;
Expand Down Expand Up @@ -454,15 +477,15 @@ bool ImportMarker(FriendlyMarkerInfo *crh, const char *pszSequence)
void ExportMarker(const FriendlyMarkerInfo *crh, char (&szSequence)[NEO_IFFMARKER_SEQMAX])
{
V_sprintf_safe(szSequence,
"%d;%d;%d;%d;%.2f;%d;%d;%d;%d;%d;",
crh->iInitialOffset,
static_cast<int>(crh->bShowDistance),
static_cast<int>(crh->bVerboseDistance),
static_cast<int>(crh->bShowSquadMarker),
crh->flSquadMarkerScale,
static_cast<int>(crh->bShowHealthBar),
static_cast<int>(crh->bShowHealth),
static_cast<int>(crh->bShowName),
static_cast<int>(crh->bPrependClantagToName),
crh->iMaxNameLength);
"%d%c%d%c%d%c%d%c%.2f%c%d%c%d%c%d%c%d%c%d%c",
crh->iInitialOffset, NEO_MARKER_DELIMITER,
static_cast<int>(crh->bShowDistance), NEO_MARKER_DELIMITER,
static_cast<int>(crh->bVerboseDistance), NEO_MARKER_DELIMITER,
static_cast<int>(crh->bShowSquadMarker), NEO_MARKER_DELIMITER,
crh->flSquadMarkerScale, NEO_MARKER_DELIMITER,
static_cast<int>(crh->bShowHealthBar), NEO_MARKER_DELIMITER,
static_cast<int>(crh->bShowHealth), NEO_MARKER_DELIMITER,
static_cast<int>(crh->bShowName), NEO_MARKER_DELIMITER,
static_cast<int>(crh->bPrependClantagToName), NEO_MARKER_DELIMITER,
crh->iMaxNameLength, NEO_MARKER_DELIMITER);
}
14 changes: 8 additions & 6 deletions src/game/client/neo/ui/neo_hud_friendly_marker.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ enum NeoIFFMarkerSegment
NEOIFFMARKER_SEGMENT__TOTAL,
};

#define NEO_SQUAD_MARKER_DEFAULT "0;1;0;0;0.50;1;0;1;1;32;"
#define NEO_FRIENDLY_MARKER_DEFAULT "0;1;0;1;0.50;1;0;0;0;32;"
#define NEO_SPECTATOR_MARKER_DEFAULT "0;0;0;1;0.50;1;1;1;1;32;"
constexpr const char NEO_MARKER_DELIMITER = ',';

#define NEO_SQUAD_MARKER_DEFAULT "0,1,0,0,0.50,1,0,1,1,32,"
#define NEO_FRIENDLY_MARKER_DEFAULT "0,1,0,1,0.50,1,0,0,0,32,"
#define NEO_SPECTATOR_MARKER_DEFAULT "0,0,0,1,0.50,1,1,1,1,32,"
#ifdef GLOWS_ENABLE
#define NEO_SQUAD_XRAY_MARKER_DEFAULT "4;0;0;0;0.50;1;0;1;0;32;"
#define NEO_FRIENDLY_XRAY_MARKER_DEFAULT "4;0;0;0;0.50;1;0;0;0;32;"
#define NEO_SPECTATOR_XRAY_MARKER_DEFAULT "4;0;0;0;0.50;1;0;1;1;32;"
#define NEO_SQUAD_XRAY_MARKER_DEFAULT "4,0,0,0,0.50,1,0,1,0,32,"
#define NEO_FRIENDLY_XRAY_MARKER_DEFAULT "4,0,0,0,0.50,1,0,0,0,32,"
#define NEO_SPECTATOR_XRAY_MARKER_DEFAULT "4,0,0,0,0.50,1,0,1,1,32,"
#endif // GLOWS_ENABLE
constexpr int NEO_IFFMARKER_SEQMAX = 32;
constexpr int MAX_MARKER_STRSIZE = 48 + NEO_MAX_CLANTAG_LENGTH + 1;
Expand Down
Loading