Skip to content

Commit 7cf2eaf

Browse files
committed
Add button to player list. Add toggle button for tracing (default off). Code clean up.
1 parent 947c5a1 commit 7cf2eaf

9 files changed

Lines changed: 457 additions & 75 deletions

File tree

Lines changed: 298 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,298 @@
1+
"Resource/UI/PlayerListPanel.res"
2+
{
3+
"PlayerListPanel"
4+
{
5+
"fieldName" "PlayerListPanel"
6+
"ControlName" "EditablePanel"
7+
"xpos" "0"
8+
"ypos" "0"
9+
"wide" "f0"
10+
"tall" "f0"
11+
}
12+
// "VoteBG"
13+
// {
14+
// "fieldName" "VoteBG"
15+
// "xpos" "c-250"
16+
// "ypos" "300"
17+
// "wide" "500"
18+
// "tall" "70"
19+
// "ControlName" "Panel"
20+
// "bgcolor_override" "0 0 0 128"
21+
// "zpos" "1"
22+
// }
23+
"MissionLabel"
24+
{
25+
"fieldName" "MissionLabel"
26+
"xpos" "c-210"
27+
"ypos" "40"
28+
"wide" "250"
29+
"tall" "22"
30+
"zpos" "5"
31+
"font" "DefaultExtraLarge"
32+
"textAlignment" "west"
33+
"ControlName" "Label"
34+
"fgcolor_override" "224 224 224 255"
35+
}
36+
"Team1Score"
37+
{
38+
"fieldName" "Team1Score"
39+
"xpos" "c15"
40+
"ypos" "40"
41+
"wide" "150"
42+
"tall" "25"
43+
"zpos" "5"
44+
"font" "DefaultLarge"
45+
"textAlignment" "west"
46+
"ControlName" "Label"
47+
"fgcolor_override" "224 224 224 255"
48+
}
49+
"Team2Score"
50+
{
51+
"fieldName" "Team2Score"
52+
"xpos" "c165"
53+
"ypos" "40"
54+
"wide" "150"
55+
"tall" "25"
56+
"zpos" "5"
57+
"font" "DefaultLarge"
58+
"textAlignment" "west"
59+
"ControlName" "Label"
60+
"fgcolor_override" "224 224 224 255"
61+
}
62+
"CurrentVoteTitle"
63+
{
64+
"fieldName" "CurrentVoteTitle"
65+
"xpos" "c-240"
66+
"ypos" "398"
67+
"wide" "250"
68+
"tall" "25"
69+
"zpos" "5"
70+
"font" "Default"
71+
"textAlignment" "west"
72+
"ControlName" "Label"
73+
"fgcolor_override" "224 224 224 255"
74+
}
75+
"MapName"
76+
{
77+
"fieldName" "MapName"
78+
"xpos" "c-240"
79+
"ypos" "422"
80+
"wide" "250"
81+
"tall" "25"
82+
"zpos" "5"
83+
"font" "DefaultLarge"
84+
"textAlignment" "west"
85+
"ControlName" "Label"
86+
"fgcolor_override" "83 148 192 255"
87+
}
88+
"VisibilityLabel"
89+
{
90+
"fieldName" "VisibilityLabel"
91+
"xpos" "c-290"
92+
"ypos" "20"
93+
"wide" "420"
94+
"tall" "17"
95+
"font" "Default"
96+
"textAlignment" "west"
97+
"ControlName" "Label"
98+
"fgcolor_override" "224 224 224 255"
99+
"zpos" "5"
100+
}
101+
"DifficultyLabel"
102+
{
103+
"fieldName" "DifficultyLabel"
104+
"xpos" "c-210"
105+
"ypos" "60"
106+
"wide" "420"
107+
"tall" "17"
108+
"font" "Default"
109+
"textAlignment" "west"
110+
"ControlName" "Label"
111+
"fgcolor_override" "224 224 224 255"
112+
"zpos" "5"
113+
}
114+
"ServerLabel"
115+
{
116+
"fieldName" "ServerLabel"
117+
"xpos" "c-210"
118+
"ypos" "60"
119+
"wide" "420"
120+
"tall" "17"
121+
"font" "Default"
122+
"textAlignment" "east"
123+
"ControlName" "Label"
124+
"fgcolor_override" "224 224 224 255"
125+
"zpos" "5"
126+
}
127+
"Counter"
128+
{
129+
"fieldName" "Counter"
130+
"xpos" "c-75"
131+
"ypos" "398"
132+
"wide" "150"
133+
"tall" "25"
134+
"font" "Default"
135+
"textAlignment" "center"
136+
"ControlName" "Label"
137+
"fgcolor_override" "224 224 224 255"
138+
"zpos" "5"
139+
}
140+
"YesCount"
141+
{
142+
"fieldName" "YesCount"
143+
"xpos" "c-25"
144+
"ypos" "398"
145+
"wide" "150"
146+
"tall" "25"
147+
"font" "Default"
148+
"textAlignment" "east"
149+
"ControlName" "Label"
150+
"fgcolor_override" "224 224 224 255"
151+
"zpos" "5"
152+
}
153+
"NoCount"
154+
{
155+
"fieldName" "NoCount"
156+
"xpos" "c-25"
157+
"ypos" "426"
158+
"wide" "150"
159+
"tall" "25"
160+
"font" "Default"
161+
"textAlignment" "east"
162+
"ControlName" "Label"
163+
"fgcolor_override" "224 224 224 255"
164+
"zpos" "5"
165+
}
166+
"RestartButton"
167+
{
168+
"fieldName" "RestartButton"
169+
"ControlName" "CNB_Button"
170+
"xpos" "c147"
171+
"ypos" "r23"
172+
"wide" "117"
173+
"tall" "27"
174+
"labelText" "#asw_button_restart_mis"
175+
"textAlignment" "center"
176+
"font" "DefaultMedium"
177+
"fgcolor_override" "113 142 181 255"
178+
"zpos" "3"
179+
}
180+
"BackButton"
181+
{
182+
"fieldName" "BackButton"
183+
"ControlName" "CNB_Button"
184+
"xpos" "c-264"
185+
"ypos" "r23"
186+
"wide" "117"
187+
"tall" "27"
188+
"labelText" "#nb_back"
189+
"textAlignment" "center"
190+
"font" "DefaultMedium"
191+
"command" "Back"
192+
"fgcolor_override" "113 142 181 255"
193+
"zpos" "3"
194+
}
195+
"VisibilityButton"
196+
{
197+
"fieldName" "VisibilityButton"
198+
"xpos" "c-108"
199+
"ypos" "r23"
200+
"wide" "117"
201+
"tall" "27"
202+
"ControlName" "CNB_Button"
203+
"labelText" "#L4D360UI_Lobby_FriendsTitle"
204+
"textAlignment" "center"
205+
"font" "DefaultMedium"
206+
"fgcolor_override" "113 142 181 255"
207+
"zpos" "3"
208+
}
209+
"TipsLabel"
210+
{
211+
"fieldName" "TipsLabel"
212+
"xpos" "c-120"
213+
"ypos" "r39"
214+
"wide" "420"
215+
"tall" "17"
216+
"font" "Default"
217+
"textAlignment" "west"
218+
"ControlName" "Label"
219+
"fgcolor_override" "224 224 224 255"
220+
"zpos" "5"
221+
}
222+
"CampaignVoteButton"
223+
{
224+
"fieldName" "CampaignVoteButton"
225+
"ControlName" "CNB_Button"
226+
"xpos" "c20"
227+
"ypos" "r23"
228+
"wide" "117"
229+
"tall" "27"
230+
"labelText" "#asw_campaign_vote"
231+
"textAlignment" "center"
232+
"font" "DefaultMedium"
233+
"fgcolor_override" "113 142 181 255"
234+
"zpos" "3"
235+
}
236+
"Yes"
237+
{
238+
"fieldName" "Yes"
239+
"ControlName" "CNB_Button"
240+
"xpos" "c132"
241+
"ypos" "398"
242+
"wide" "110"
243+
"tall" "25"
244+
"labelText" "#asw_vote_yes"
245+
"textAlignment" "center"
246+
"font" "DefaultMedium"
247+
"fgcolor_override" "113 142 181 255"
248+
"zpos" "3"
249+
}
250+
"No"
251+
{
252+
"fieldName" "No"
253+
"ControlName" "CNB_Button"
254+
"xpos" "c132"
255+
"ypos" "426"
256+
"wide" "110"
257+
"tall" "25"
258+
"labelText" "#asw_vote_no"
259+
"textAlignment" "center"
260+
"font" "DefaultMedium"
261+
"fgcolor_override" "113 142 181 255"
262+
"zpos" "3"
263+
}
264+
"PlayerListScroll"
265+
{
266+
"ControlName" "GenericPanelList"
267+
"fieldName" "PlayerListScroll"
268+
// positioning done by code
269+
"zpos" "1"
270+
"autoResize" "1"
271+
"pinCorner" "0"
272+
"visible" "1"
273+
"enabled" "1"
274+
"tabPosition" "1"
275+
"proportionalToParent" "1"
276+
"bgcolor_override" "0 0 0 0"
277+
}
278+
"SettingAutoReportVotes"
279+
{
280+
"ControlName" "CCvarToggleCheckButton"
281+
"fieldName" "SettingAutoReportVotes"
282+
"xpos" "c-250"
283+
"ypos" "360"
284+
"wide" "500"
285+
"tall" "20"
286+
"ResourceFile" "resource/ui/option_simple_checkbox.res"
287+
}
288+
"SettingTracePlayerToggle"
289+
{
290+
"ControlName" "CCvarToggleCheckButton"
291+
"fieldName" "SettingTracePlayerToggle"
292+
"xpos" "c"
293+
"ypos" "360"
294+
"wide" "500"
295+
"tall" "20"
296+
"ResourceFile" "resource/ui/option_simple_checkbox.res"
297+
}
298+
}

src/game/client/swarm/c_asw_marine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ Color g_TraceColorArray[8] =
122122
std::vector<int> g_nTracePlayer2Color = std::vector<int>(MAX_PLAYERS, 0);
123123
std::vector<int> g_nTraceColor2Player = std::vector<int>(8, 0);
124124
float TRACE_FADE_TIME = 60.0f; // how long to keep the trace positions for
125+
ConVar cl_trace_player_enable("cl_trace_player_enable", "0", FCVAR_ARCHIVE | FCVAR_CLIENTDLL, "Show player movement traces in the client. 0 = disabled, 1 = enabled.");
125126
ConVar cl_trace_player_max_targets("cl_trace_player_max_targets", "3", FCVAR_ARCHIVE | FCVAR_CLIENTDLL, "Maximum number of players to trace positions for in the client.", true, 1.0f, true, 7.0f);
126127
ConVar cl_trace_player_opacity("cl_trace_player_opacity", "1", FCVAR_ARCHIVE | FCVAR_CLIENTDLL, "Opacity of the player trace positions in the client. 0.0 means fully transparent, 1.0 means fully opaque.", true, 0.0f, true, 1.0f);
127128
//ConVar cl_trace_player_line_thickness("cl_trace_player_line_thickness", "30", FCVAR_ARCHIVE | FCVAR_CLIENTDLL, "Thickness of the player trace.", true, 1.0f, true, 100.0f);

src/game/client/swarm/vgui/asw_hud_emotes.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ extern ConVar asw_draw_hud;
4646

4747
#ifdef CLIENT_DLL
4848
extern float TRACE_FADE_TIME;
49+
extern ConVar cl_trace_player_enable;
4950
extern ConVar cl_trace_player_opacity;
5051
extern ConVar cl_trace_player_max_targets;
5152
//extern ConVar cl_trace_player_line_thickness;

src/game/client/swarm/vgui/nb_lobby_row.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "gameui/swarm/vdropdownmenu.h"
2121
#include "gameui/swarm/vhybridbutton.h"
2222
#include "rd_inventory_shared.h"
23+
#include "asw_deathmatch_mode.h"
2324
#include <vector>
2425

2526
// memdbgon must be the last include file in a .cpp file!!!
@@ -31,6 +32,7 @@ extern ConVar rd_legacy_ui;
3132
extern Color g_TraceColorArray[8];
3233
extern std::vector<int> g_nTracePlayer2Color;
3334
extern std::vector<int> g_nTraceColor2Player;
35+
extern ConVar cl_trace_player_enable;
3436
extern ConVar cl_trace_player_max_targets;
3537
extern void RemoveInvalidTracePlayersAndColors();
3638
extern void ToggleTraceColor(int playerIndex);
@@ -109,7 +111,7 @@ CNB_Lobby_Row::CNB_Lobby_Row( vgui::Panel *parent, const char *name ) : BaseClas
109111
m_nLobbySlot = 0;
110112

111113
// Create the TracePlayerButton
112-
m_pTracePlayerButton = new CBitmapButton( this, "TracePlayerButton", "" );
114+
m_pTracePlayerButton = new CBitmapButton( this, "TracePlayerButton", " " );
113115
m_pTracePlayerButton->AddActionSignalTarget( this );
114116
m_pTracePlayerButton->SetCommand( "TracePlayerPressed" );
115117
m_pTracePlayerButton->SetImage(CBitmapButton::BUTTON_ENABLED, "vgui/briefing/trace_player_icon_off", color32{ 255, 255, 255, 255 });
@@ -462,17 +464,19 @@ void CNB_Lobby_Row::UpdateDetails()
462464
if (m_pTracePlayerButton) {
463465
RemoveInvalidTracePlayersAndColors();
464466
// In online games, show the button only for other players (not local player, not bot, and occupied slot)
467+
bool isDeathMatch = ASWDeathmatchMode() && (ASWDeathmatchMode()->IsDeathmatchEnabled() || ASWDeathmatchMode()->IsTeamDeathmatchEnabled());
465468
if (!Briefing()
466469
|| Briefing()->IsOfflineGame()
467470
|| Briefing()->IsLobbySlotLocal(m_nLobbySlot)
468471
|| Briefing()->IsLobbySlotBot(m_nLobbySlot)
469-
|| !Briefing()->IsLobbySlotOccupied(m_nLobbySlot))
472+
|| !Briefing()->IsLobbySlotOccupied(m_nLobbySlot)
473+
|| isDeathMatch)
470474
{
471-
m_pTracePlayerButton->SetVisible(true);
475+
m_pTracePlayerButton->SetVisible(false);
472476
return;
473477
}
474478

475-
m_pTracePlayerButton->SetVisible(true);
479+
m_pTracePlayerButton->SetVisible(cl_trace_player_enable.GetBool() );
476480
}
477481
}
478482

@@ -641,5 +645,5 @@ void CNB_Lobby_Row::OnTracePlayerPressed()
641645
}
642646
// flip the trace state for this player
643647
ToggleTraceColor(playerIndex);
644-
m_pTracePlayerButton->SetImage(CBitmapButton::BUTTON_ENABLED, (g_nTracePlayer2Color[playerIndex] == 0) ? "vgui/briefing/trace_player_icon_on" : "vgui/briefing/trace_player_icon_off", color32{ 255, 255, 255, 255 });
648+
m_pTracePlayerButton->SetImage(CBitmapButton::BUTTON_ENABLED, (g_nTracePlayer2Color[playerIndex] != 0) ? "vgui/briefing/trace_player_icon_on" : "vgui/briefing/trace_player_icon_off", color32{ 255, 255, 255, 255 });
645649
}

src/game/client/swarm/vgui/nb_main_panel.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ extern ConVar mm_max_players;
5050
extern ConVar rd_player_bots_allowed;
5151
extern ConVar rd_legacy_ui;
5252
ConVar rd_draw_briefing_ui( "rd_draw_briefing_ui", "1", FCVAR_CHEAT );
53+
extern ConVar cl_trace_player_enable;
5354

5455
using BaseModUI::GenericPanelList;
5556

@@ -350,17 +351,19 @@ void CNB_Main_Panel::OnThink()
350351
// Check if the TraceMe button should be enabled or not
351352
// It should be enabled if it's an online game, the slot is the local player's slot, the slot is not a bot, the slot is occupied, and the marine profile exists
352353
int m_nLobbySlot = m_pLobbyRow0->m_nLobbySlot;
354+
bool isDeathMatch = ASWDeathmatchMode() && (ASWDeathmatchMode()->IsDeathmatchEnabled() || ASWDeathmatchMode()->IsTeamDeathmatchEnabled());
353355
if (!Briefing()
354356
|| Briefing()->IsOfflineGame()
355357
|| !Briefing()->IsLobbySlotLocal(m_nLobbySlot)
356358
|| Briefing()->IsLobbySlotBot(m_nLobbySlot)
357359
|| !Briefing()->IsLobbySlotOccupied(m_nLobbySlot)
358-
|| Briefing()->GetMarineProfile(m_nLobbySlot) == NULL)
360+
|| Briefing()->GetMarineProfile(m_nLobbySlot) == NULL
361+
|| isDeathMatch)
359362
{
360363
m_pTraceMeButton->SetVisible(false);
361364
return;
362365
}
363-
m_pTraceMeButton->SetVisible(true);
366+
m_pTraceMeButton->SetVisible(cl_trace_player_enable.GetBool());
364367
}
365368
}
366369

0 commit comments

Comments
 (0)