Skip to content

Commit 4e3170d

Browse files
committed
Updated gui_roster_data
This is a more correct implementation
1 parent 1850c76 commit 4e3170d

File tree

2 files changed

+56
-52
lines changed

2 files changed

+56
-52
lines changed

game/source/interface/gui_roster_data.cpp

Lines changed: 44 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "interface/c_controller.hpp"
44
#include "interface/c_gui_widget.hpp"
55
#include "interface/user_interface_session.hpp"
6+
#include "interface/user_interface_utilities.hpp"
67
#include "memory/module.hpp"
78
#include "tag_files/string_ids.hpp"
89

@@ -51,6 +52,12 @@ bool __thiscall c_gui_roster_data::_get_integer_value(long element_handle, long
5152
return true;
5253
}
5354
break;
55+
case STRING_ID(global , team):
56+
{
57+
*value = player_row->player_configuration.host.team_index;
58+
return true;
59+
}
60+
break;
5461
//case STRING_ID(gui, matchmaking):
5562
//{
5663
// *value = player_row->in_matchmaking;
@@ -63,6 +70,12 @@ bool __thiscall c_gui_roster_data::_get_integer_value(long element_handle, long
6370
return true;
6471
}
6572
break;
73+
case STRING_ID(gui, party_bar_length):
74+
{
75+
*value = player_row->party_bar_length;
76+
return true;
77+
}
78+
break;
6679
case STRING_ID(gui, special_status):
6780
{
6881
*value = player_row->special_status;
@@ -109,85 +122,67 @@ bool __thiscall c_gui_roster_data::_get_integer_value(long element_handle, long
109122

110123
bool __thiscall c_gui_roster_data::_get_text_value(long element_handle, long value_name, c_static_wchar_string<1024>* value)
111124
{
112-
bool result = false;
113-
HOOK_INVOKE_CLASS_MEMBER(result =, c_gui_roster_data, _get_text_value, element_handle, value_name, value);
125+
//bool result = false;
126+
//HOOK_INVOKE_CLASS_MEMBER(result =, c_gui_roster_data, _get_text_value, element_handle, value_name, value);
127+
128+
if (!VALID_INDEX(element_handle, m_player_count))
129+
return false;
130+
131+
c_gui_roster_data::s_player_row* player_row = &m_players[element_handle];
114132

115133
switch (value_name)
116134
{
117135
case STRING_ID(global, player_name):
118136
{
119-
if (!result)
120-
return true;
121-
}
122-
break;
123-
case STRING_ID(gui, name_hilite):
124-
{
125-
if (!result)
137+
if (player_row->player_row_type == _player_row_type_player)
138+
{
139+
value->set(player_row->player_configuration.host.name.get_string());
126140
return true;
141+
}
127142
}
128143
break;
129144
case STRING_ID(global, press_a_to_join):
130145
{
131-
value->set(L"PRESS A TO JOIN");
132-
if (!result)
146+
if (player_row->player_row_type == _player_row_type_press_a_to_join)
147+
{
148+
user_interface_global_string_get(STRING_ID(global, press_a_to_join), value);
133149
return true;
150+
}
134151
}
135152
break;
136153
case STRING_ID(gui, looking_for_player):
137154
{
138-
value->set(L"LOOKING FOR PLAYER");
139-
if (!result)
155+
if (player_row->player_row_type == _player_row_type_searching)
156+
{
157+
user_interface_global_string_get(STRING_ID(gui, looking_for_player), value);
140158
return true;
159+
}
141160
}
142161
break;
143162
case STRING_ID(gui, player_found):
144163
{
145-
value->set(L"PLAYER FOUND");
146-
if (!result)
164+
if (player_row->player_row_type == _player_row_type_found)
165+
{
166+
user_interface_global_string_get(STRING_ID(gui, player_found), value);
147167
return true;
168+
}
148169
}
149170
break;
150171
case STRING_ID(gui, service_tag):
151172
{
152-
if (!m_players[element_handle].player_configuration.host.appearance.service_tag.length())
173+
bool is_elite = player_row->player_configuration.host.appearance.player_model_choice == _player_model_choice_elite;
174+
c_static_wchar_string<1024> player_model_text;
175+
if (user_interface_global_string_get(is_elite ? STRING_ID(global, dervish) : STRING_ID(global, masterchief), &player_model_text))
153176
{
154-
long player_index = m_players[element_handle].session_player_index;
155-
if (user_interface_session_is_local_player(player_index))
156-
{
157-
c_controller_interface* controller = controller_get(m_players[element_handle].local_controller_index);
158-
159-
if (!value->length())
160-
{
161-
value->print(L"%s - %s", L"SPARTAN", controller->m_player_profile.m_appearance.desired_service_tag);
162-
}
163-
else
164-
{
165-
value->append(controller->m_player_profile.m_appearance.desired_service_tag);
166-
}
167-
}
168-
else
169-
{
170-
s_player_configuration* player_data = user_interface_session_get_player_data(player_index);
171-
if (player_data)
172-
{
173-
if (!value->length())
174-
{
175-
value->print(L"%s - %s", L"SPARTAN", player_data->host.appearance.service_tag.get_string());
176-
}
177-
else
178-
{
179-
value->append(player_data->host.appearance.service_tag.get_string());
180-
}
181-
}
182-
}
183-
}
184-
185-
if (!result)
177+
c_static_wchar_string<256> service_tag_text;
178+
service_tag_text.set(player_row->player_configuration.host.appearance.service_tag.get_string());
179+
value->print(L"%s - %s", player_model_text.get_string(), service_tag_text.get_string());
186180
return true;
181+
}
187182
}
188183
break;
189184
}
190185

191-
return result;
186+
return false;
192187
}
193188

game/source/interface/gui_roster_data.hpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ struct c_gui_roster_data :
1010
enum e_player_row_type
1111
{
1212
_player_row_type_player,
13-
_player_row_type_player_found,
14-
_player_row_type_looking_for_player,
13+
_player_row_type_found,
14+
_player_row_type_searching,
1515
_player_row_type_press_a_to_join,
1616

1717
k_player_row_type_count
@@ -23,7 +23,16 @@ struct c_gui_roster_data :
2323
_voice_state_has_voice,
2424
_voice_state_talking,
2525
_voice_state_away_in_private_chat,
26-
_voice_state_muted,
26+
_voice_state_muted
27+
};
28+
29+
enum e_special_status
30+
{
31+
_special_status_none = 0,
32+
_special_status_error,
33+
_special_status_party_up_undecided_leader,
34+
_special_status_party_up_chosen_leader,
35+
_special_status_party_up_chosen_member
2736
};
2837

2938
struct s_player_row

0 commit comments

Comments
 (0)