From 05b7db1ca9676ffe60e928d2813efe752c68e6a1 Mon Sep 17 00:00:00 2001 From: nullsystem <15316579+nullsystem@users.noreply.github.com> Date: Mon, 24 Aug 2026 00:51:19 +0100 Subject: [PATCH 1/3] Add a red background for muted player rows To differentiate muted players better from non-muted. --- src/game/client/neo/ui/neo_scoreboard.cpp | 12 +++++++++++- src/game/client/neo/ui/neo_theme.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/game/client/neo/ui/neo_scoreboard.cpp b/src/game/client/neo/ui/neo_scoreboard.cpp index ce1baf2d59..222e11535d 100644 --- a/src/game/client/neo/ui/neo_scoreboard.cpp +++ b/src/game/client/neo/ui/neo_scoreboard.cpp @@ -894,6 +894,7 @@ void CNEOScoreBoard::OnMainLoop(const NeoUI::Mode eMode) const CNEOScoreBoardPlayer *pPlayerInfo = &m_playersInfo[i]; const bool bIsPlaying = (pPlayerInfo->iTeam >= FIRST_GAME_TEAM); const bool bIsDMPlaying = false == bIsTeamplay && bIsPlaying; + const bool bIsMuted = pPlayerInfo->bMuted && false == pPlayerInfo->bBot; iInPlaying += (bIsPlaying); const bool bDMNotThisSide = bIsDMPlaying && @@ -947,6 +948,15 @@ void CNEOScoreBoard::OnMainLoop(const NeoUI::Mode eMode) m_uiCtx.dPanel.x + m_uiCtx.dPanel.wide, m_uiCtx.dPanel.y + m_uiCtx.iLayoutY + m_uiCtx.layout.iRowTall); } + else if (bIsMuted) + { + vgui::surface()->DrawSetColor(COLOR_MUTE_BG); + vgui::surface()->DrawFilledRect( + m_uiCtx.dPanel.x, + m_uiCtx.dPanel.y + m_uiCtx.iLayoutY, + m_uiCtx.dPanel.x + m_uiCtx.dPanel.wide, + m_uiCtx.dPanel.y + m_uiCtx.iLayoutY + m_uiCtx.layout.iRowTall); + } // Ping/BOT if (pPlayerInfo->iPing >= 0) @@ -991,7 +1001,7 @@ void CNEOScoreBoard::OnMainLoop(const NeoUI::Mode eMode) } } // Voice mute icon - layered over avatar, only do for actual players - if (pPlayerInfo->bMuted && false == pPlayerInfo->bBot) + if (bIsMuted) { // Slightly redden the avatar if (pAvatarImg) diff --git a/src/game/client/neo/ui/neo_theme.h b/src/game/client/neo/ui/neo_theme.h index 33bdd29621..392cc7bc2d 100644 --- a/src/game/client/neo/ui/neo_theme.h +++ b/src/game/client/neo/ui/neo_theme.h @@ -7,6 +7,7 @@ #define COLOR_ALMOST_BLACK Color(15, 15, 15, 255) #define COLOR_BLACK_TRANSPARENT Color(0, 0, 0, 190) #define COLOR_DARK_RED Color(180, 32, 32, 255) +#define COLOR_MUTE_BG Color(140, 20, 20, 25) #define COLOR_NEOPANELMICTEST Color(30, 90, 30, 255) #define COLOR_NEOPANELACCENTBG Color(40, 0, 0, 255) From 72fcb65c57ec06c51ce11f49e0c1eb60798096bb Mon Sep 17 00:00:00 2001 From: nullsystem <15316579+nullsystem@users.noreply.github.com> Date: Tue, 25 Aug 2026 20:55:42 +0100 Subject: [PATCH 2/3] put icon next to name --- src/game/client/neo/ui/neo_scoreboard.cpp | 40 ++++++++++++++--------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/game/client/neo/ui/neo_scoreboard.cpp b/src/game/client/neo/ui/neo_scoreboard.cpp index 222e11535d..dfacf2cc01 100644 --- a/src/game/client/neo/ui/neo_scoreboard.cpp +++ b/src/game/client/neo/ui/neo_scoreboard.cpp @@ -1001,25 +1001,15 @@ void CNEOScoreBoard::OnMainLoop(const NeoUI::Mode eMode) } } // Voice mute icon - layered over avatar, only do for actual players - if (bIsMuted) + if (bIsMuted && pAvatarImg) { // Slightly redden the avatar - if (pAvatarImg) - { - vgui::surface()->DrawSetColor(100, 0, 0, 75); - vgui::surface()->DrawFilledRect( - m_uiCtx.rWidgetArea.x0, - m_uiCtx.rWidgetArea.y0, - m_uiCtx.rWidgetArea.x0 + m_uiCtx.irWidgetTall, - m_uiCtx.rWidgetArea.y0 + m_uiCtx.irWidgetTall); - } - NeoUI::Texture("vgui/hud/voice_mute", + vgui::surface()->DrawSetColor(100, 0, 0, 75); + vgui::surface()->DrawFilledRect( m_uiCtx.rWidgetArea.x0, m_uiCtx.rWidgetArea.y0, - m_uiCtx.irWidgetTall, - m_uiCtx.irWidgetTall, - "", - NeoUI::TEXTUREOPTFLAGS_DONOTCROPTOPANEL); + m_uiCtx.rWidgetArea.x0 + m_uiCtx.irWidgetTall, + m_uiCtx.rWidgetArea.y0 + m_uiCtx.irWidgetTall); } if (iCurTeam >= FIRST_GAME_TEAM) { @@ -1060,6 +1050,26 @@ void CNEOScoreBoard::OnMainLoop(const NeoUI::Mode eMode) } NeoUI::Label(wszText); + if (bIsMuted) + { + const auto *pFontI = &m_uiCtx.fonts[m_uiCtx.eFont]; + + int iNameWide = 0, iNameTall = 0; + vgui::surface()->GetTextSize(pFontI->hdl, wszText, iNameWide, iNameTall); + + const int iStartX = m_uiCtx.rWidgetArea.x0 + iNameWide + (2 * m_uiCtx.iMarginX); + if ((iStartX + m_uiCtx.irWidgetTall) < m_uiCtx.rWidgetArea.x1) + { + NeoUI::Texture("vgui/hud/voice_mute", + iStartX, + m_uiCtx.rWidgetArea.y0, + m_uiCtx.irWidgetTall, + m_uiCtx.irWidgetTall, + "", + NeoUI::TEXTUREOPTFLAGS_DONOTCROPTOPANEL); + } + } + if (iCurTeam >= FIRST_GAME_TEAM) { // Ready-up (Hidden when not used) From 75a0a074f8087e9560669aceb7809615114fc260 Mon Sep 17 00:00:00 2001 From: nullsystem <15316579+nullsystem@users.noreply.github.com> Date: Wed, 26 Aug 2026 20:15:05 +0100 Subject: [PATCH 3/3] 75% of the size --- src/game/client/neo/ui/neo_scoreboard.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/game/client/neo/ui/neo_scoreboard.cpp b/src/game/client/neo/ui/neo_scoreboard.cpp index dfacf2cc01..9d7147d133 100644 --- a/src/game/client/neo/ui/neo_scoreboard.cpp +++ b/src/game/client/neo/ui/neo_scoreboard.cpp @@ -1000,7 +1000,6 @@ void CNEOScoreBoard::OnMainLoop(const NeoUI::Mode eMode) pAvatarImg->Paint(); } } - // Voice mute icon - layered over avatar, only do for actual players if (bIsMuted && pAvatarImg) { // Slightly redden the avatar @@ -1050,6 +1049,7 @@ void CNEOScoreBoard::OnMainLoop(const NeoUI::Mode eMode) } NeoUI::Label(wszText); + // Voice mute icon - after name, only do for actual players if (bIsMuted) { const auto *pFontI = &m_uiCtx.fonts[m_uiCtx.eFont]; @@ -1057,14 +1057,15 @@ void CNEOScoreBoard::OnMainLoop(const NeoUI::Mode eMode) int iNameWide = 0, iNameTall = 0; vgui::surface()->GetTextSize(pFontI->hdl, wszText, iNameWide, iNameTall); + const int iMuteIconWH = (m_uiCtx.irWidgetTall * 0.75f); const int iStartX = m_uiCtx.rWidgetArea.x0 + iNameWide + (2 * m_uiCtx.iMarginX); - if ((iStartX + m_uiCtx.irWidgetTall) < m_uiCtx.rWidgetArea.x1) + if ((iStartX + iMuteIconWH) < m_uiCtx.rWidgetArea.x1) { NeoUI::Texture("vgui/hud/voice_mute", iStartX, - m_uiCtx.rWidgetArea.y0, - m_uiCtx.irWidgetTall, - m_uiCtx.irWidgetTall, + m_uiCtx.rWidgetArea.y0 + ((m_uiCtx.irWidgetTall - iMuteIconWH) / 2.0f), + iMuteIconWH, + iMuteIconWH, "", NeoUI::TEXTUREOPTFLAGS_DONOTCROPTOPANEL); }