Skip to content

Commit 67762b5

Browse files
committed
Updated online_guide_pc
1 parent f4b68c7 commit 67762b5

File tree

2 files changed

+136
-68
lines changed

2 files changed

+136
-68
lines changed

game/source/networking/online/online_guide_pc.cpp

Lines changed: 80 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "interface/c_controller.hpp"
66
#include "interface/user_interface_text.hpp"
77
#include "memory/module.hpp"
8+
#include "shell/shell.hpp"
89
#include "xbox/xbox.hpp"
910

1011
#include <windows.h>
@@ -20,15 +21,22 @@ HOOK_DECLARE_CLASS_MEMBER(0x004E1A20, c_virtual_keyboard_task, _success);
2021

2122
HOOK_DECLARE(0x004E1860, online_guide_delay_toasts);
2223
HOOK_DECLARE(0x004E1870, online_guide_dispose);
24+
HOOK_DECLARE(0x004E1880, online_guide_handle_custom_action_pressed);
25+
HOOK_DECLARE(0x004E1890, online_guide_handle_custom_gamercard);
2326
HOOK_DECLARE(0x004E18A0, online_guide_initialize);
2427
HOOK_DECLARE(0x004E18B0, online_guide_set_toast_position);
2528
HOOK_DECLARE(0x004E18C0, online_guide_show_damaged_media_ui);
29+
HOOK_DECLARE(0x004E18D0, online_guide_show_device_selector_ui);
2630
HOOK_DECLARE(0x004E18E0, online_guide_show_file_share_recommendation);
2731
HOOK_DECLARE(0x004E18F0, online_guide_show_friend_request_ui);
2832
HOOK_DECLARE(0x004E1900, online_guide_show_friends_ui);
2933
HOOK_DECLARE(0x004E1910, online_guide_show_gamer_card_ui);
34+
HOOK_DECLARE(0x004E1920, online_guide_show_marketplace);
35+
HOOK_DECLARE(0x004E1930, online_guide_show_marketplace_offer);
36+
HOOK_DECLARE(0x004E1940, online_guide_show_message_ui);
3037
HOOK_DECLARE(0x004E1950, online_guide_show_player_review_ui);
3138
HOOK_DECLARE(0x004E1960, online_guide_show_sign_in_ui);
39+
HOOK_DECLARE(0x004E1970, online_guide_show_virtual_keyboard_ui);
3240
HOOK_DECLARE(0x004E1980, online_guide_update);
3341

3442
c_virtual_keyboard_task* __cdecl c_virtual_keyboard_task::constructor(
@@ -39,7 +47,7 @@ c_virtual_keyboard_task* __cdecl c_virtual_keyboard_task::constructor(
3947
wchar_t const* title_text,
4048
wchar_t const* description_text,
4149
dword maximum_input_characters,
42-
dword_flags character_flags,
50+
dword character_flags,
4351
bool sanitize_result
4452
)
4553
{
@@ -51,17 +59,17 @@ c_virtual_keyboard_task* __cdecl c_virtual_keyboard_task::constructor(
5159
m_controller_index = controller_index;
5260
m_character_flags = character_flags;
5361

54-
csmemset(m_result_text, 0, sizeof(m_result_text));
55-
csmemset(m_default_text, 0, sizeof(m_default_text));
56-
csmemset(m_title_text, 0, sizeof(m_title_text));
57-
csmemset(m_description_text, 0, sizeof(m_description_text));
62+
csmemset(m_result_text_buffer, 0, sizeof(m_result_text_buffer));
63+
csmemset(m_default_text_buffer, 0, sizeof(m_default_text_buffer));
64+
csmemset(m_title_text_buffer, 0, sizeof(m_title_text_buffer));
65+
csmemset(m_description_text_buffer, 0, sizeof(m_description_text_buffer));
5866

5967
if (maximum_input_characters > 256)
6068
maximum_input_characters = 256;
6169
m_maximum_input_characters = maximum_input_characters;
6270

6371
m_sanitize_result = sanitize_result;
64-
m_result_text[0] = 0;
72+
m_result_text_buffer[0] = 0;
6573

6674
set_default_text(default_text);
6775
set_title_text(title_text);
@@ -93,33 +101,33 @@ void __cdecl c_virtual_keyboard_task::set_controller_index(e_controller_index co
93101
void __cdecl c_virtual_keyboard_task::set_default_text(wchar_t const* default_text)
94102
{
95103
if (default_text)
96-
ustrnzcpy(m_default_text, default_text, 256);
104+
ustrnzcpy(m_default_text_buffer, default_text, 256);
97105
else
98-
m_default_text[0] = 0;
106+
m_default_text_buffer[0] = 0;
99107
}
100108

101109
void __cdecl c_virtual_keyboard_task::set_description_text(wchar_t const* description_text)
102110
{
103111
if (description_text)
104-
ustrnzcpy(m_description_text, description_text, 64);
112+
ustrnzcpy(m_description_text_buffer, description_text, 64);
105113
else
106-
m_description_text[0] = 0;
114+
m_description_text_buffer[0] = 0;
107115
}
108116

109117
void __cdecl c_virtual_keyboard_task::set_title_text(wchar_t const* title_text)
110118
{
111119
if (title_text)
112-
ustrnzcpy(m_title_text, title_text, 64);
120+
ustrnzcpy(m_title_text_buffer, title_text, 64);
113121
else
114-
m_title_text[0] = 0;
122+
m_title_text_buffer[0] = 0;
115123
}
116124

117125
void __cdecl c_virtual_keyboard_task::set_maximum_input_characters(dword maximum_input_characters)
118126
{
119127
m_maximum_input_characters = maximum_input_characters;
120128
}
121129

122-
void __cdecl c_virtual_keyboard_task::set_character_flags(dword_flags character_flags)
130+
void __cdecl c_virtual_keyboard_task::set_character_flags(dword character_flags)
123131
{
124132
m_character_flags = character_flags;
125133
}
@@ -137,7 +145,7 @@ c_virtual_keyboard_task* __cdecl c_virtual_keyboard_task::get_instance(
137145
wchar_t const* title_text,
138146
wchar_t const* description_text,
139147
dword maximum_input_characters,
140-
dword_flags character_flags,
148+
dword character_flags,
141149
bool sanitize_result
142150
)
143151
{
@@ -205,33 +213,16 @@ char const* c_virtual_keyboard_task::get_context_string()
205213
return "XShowKeyboardUI";
206214
}
207215

208-
dword __cdecl online_guide_show_virtual_keyboard_ui(e_controller_index controller_index, dword_flags character_flags, wchar_t const* default_text, wchar_t const* title_text, wchar_t const* description_text, wchar_t* result_text, dword maximum_character_count, void* overlapped)
209-
{
210-
ASSERT(VALID_INDEX(controller_index, k_number_of_controllers));
211-
ASSERT(result_text != NULL);
212-
ASSERT(maximum_character_count > 0);
213-
ASSERT(overlapped != NULL);
214-
215-
c_controller_interface* controller = controller_get(controller_index);
216-
if (!controller->is_signed_in_to_machine())
217-
return E_FAIL;
218-
219-
// $TODO: properly implement `XShowKeyboardUI`
220-
return ERROR_SUCCESS;
221-
222-
return XShowKeyboardUI(controller_index, character_flags, default_text, title_text, description_text, result_text, maximum_character_count, overlapped);
223-
}
224-
225216
dword c_virtual_keyboard_task::start(void* overlapped)
226217
{
227218
c_controller_interface* controller = controller_get(m_controller_index);
228219
if (!controller->is_signed_in_to_machine())
229220
return E_FAIL;
230221

231222
if (m_maximum_input_characters > 256)
232-
return online_guide_show_virtual_keyboard_ui(m_controller_index, m_character_flags, m_default_text, m_title_text, m_description_text, m_result_text, 256, overlapped);
223+
return online_guide_show_virtual_keyboard_ui(m_controller_index, m_character_flags, m_default_text_buffer, m_title_text_buffer, m_description_text_buffer, m_result_text_buffer, 256, overlapped);
233224

234-
return online_guide_show_virtual_keyboard_ui(m_controller_index, m_character_flags, m_default_text, m_title_text, m_description_text, m_result_text, m_maximum_input_characters, overlapped);
225+
return online_guide_show_virtual_keyboard_ui(m_controller_index, m_character_flags, m_default_text_buffer, m_title_text_buffer, m_description_text_buffer, m_result_text_buffer, m_maximum_input_characters, overlapped);
235226
}
236227

237228
dword __thiscall c_virtual_keyboard_task::_start(void* overlapped)
@@ -241,9 +232,9 @@ dword __thiscall c_virtual_keyboard_task::_start(void* overlapped)
241232
return E_FAIL;
242233

243234
if (m_maximum_input_characters > 256)
244-
return online_guide_show_virtual_keyboard_ui(m_controller_index, m_character_flags, m_default_text, m_title_text, m_description_text, m_result_text, 256, overlapped);
235+
return online_guide_show_virtual_keyboard_ui(m_controller_index, m_character_flags, m_default_text_buffer, m_title_text_buffer, m_description_text_buffer, m_result_text_buffer, 256, overlapped);
245236

246-
return online_guide_show_virtual_keyboard_ui(m_controller_index, m_character_flags, m_default_text, m_title_text, m_description_text, m_result_text, m_maximum_input_characters, overlapped);
237+
return online_guide_show_virtual_keyboard_ui(m_controller_index, m_character_flags, m_default_text_buffer, m_title_text_buffer, m_description_text_buffer, m_result_text_buffer, m_maximum_input_characters, overlapped);
247238
}
248239

249240
void __thiscall c_virtual_keyboard_task::_success(dword return_result)
@@ -252,24 +243,32 @@ void __thiscall c_virtual_keyboard_task::_success(dword return_result)
252243

253244
//c_overlapped_task::success(return_result);
254245

255-
if (!ustrncmp(m_result_text, L".fortune", 9))
256-
ustrnzcpy(m_result_text, L"My modem is on file", 256);
246+
if (!ustrncmp(m_result_text_buffer, L".fortune", 9))
247+
ustrnzcpy(m_result_text_buffer, L"My modem is on file", 256);
257248

258-
wchar_string_sanitize_for_game(m_result_text, 256);
249+
wchar_string_sanitize_for_game(m_result_text_buffer, 256);
259250
}
260251

261252
dword __cdecl online_guide_delay_toasts(long milliseconds)
262253
{
263254
//return XNotifyDelayUI(milliseconds);
264255

265-
return -1;
256+
return NONE;
266257
}
267258

268259
void __cdecl online_guide_dispose()
269260
{
270261
//overlapped_task_block_until_finished(&g_online_guide_globals);
271262
}
272263

264+
void __cdecl online_guide_handle_custom_action_pressed()
265+
{
266+
}
267+
268+
void __cdecl online_guide_handle_custom_gamercard(bool guide_is_open)
269+
{
270+
}
271+
273272
void __cdecl online_guide_initialize()
274273
{
275274
//g_online_guide_globals = 0;
@@ -293,7 +292,12 @@ void __cdecl online_guide_show_damaged_media_ui()
293292
//XShowDirtyDiscErrorUI(controller_index);
294293
}
295294

296-
void __cdecl online_guide_show_file_share_recommendation(e_controller_index controller_index, qword user_xuid, long a3, char const* a4, s_service_record_identity const* identity, wchar_t const* a6)
295+
dword __cdecl online_guide_show_device_selector_ui(e_controller_index controller_index, dword requested_bytes, bool always_show, dword* device_id, void* xenon_task_handle)
296+
{
297+
return NONE;
298+
}
299+
300+
void __cdecl online_guide_show_file_share_recommendation(e_controller_index controller_index, qword file_share_xuid, long slot_index, char const* server_id, s_service_record_identity const* service_record_identity, s_custom_message_text* custom_message_text)
297301
{
298302
MessageBoxA(NULL, "File Share Recommendation UI Placeholder", "networking:online:guide", MB_OK);
299303

@@ -318,7 +322,7 @@ dword __cdecl online_guide_show_friend_request_ui(e_controller_index controller_
318322
//
319323
//return result;
320324

321-
return -1;
325+
return NONE;
322326
}
323327

324328
dword __cdecl online_guide_show_friends_ui(e_controller_index controller_index)
@@ -337,7 +341,7 @@ dword __cdecl online_guide_show_friends_ui(e_controller_index controller_index)
337341
//
338342
//return result;
339343

340-
return -1;
344+
return NONE;
341345
}
342346

343347
dword __cdecl online_guide_show_gamer_card_ui(e_controller_index controller_index, qword user_xuid)
@@ -357,7 +361,20 @@ dword __cdecl online_guide_show_gamer_card_ui(e_controller_index controller_inde
357361
//
358362
//return result;
359363

360-
return -1;
364+
return NONE;
365+
}
366+
367+
void __cdecl online_guide_show_marketplace(e_controller_index controller_index)
368+
{
369+
}
370+
371+
void __cdecl online_guide_show_marketplace_offer(e_controller_index controller_index, qword marketplace_offer_id)
372+
{
373+
}
374+
375+
dword __cdecl online_guide_show_message_ui(e_controller_index controller_index, qword target_player_xuid)
376+
{
377+
return 0;
361378
}
362379

363380
dword __cdecl online_guide_show_player_review_ui(e_controller_index controller_index, qword target_user_xuid)
@@ -378,10 +395,10 @@ dword __cdecl online_guide_show_player_review_ui(e_controller_index controller_i
378395
//
379396
//return result;
380397

381-
return -1;
398+
return NONE;
382399
}
383400

384-
bool __cdecl online_guide_show_sign_in_ui(long pane_count, dword_flags flags)
401+
bool __cdecl online_guide_show_sign_in_ui(long pane_count, dword flags)
385402
{
386403
//MessageBoxA(NULL, "Signin UI Placeholder", "networking:online:guide", MB_OK);
387404

@@ -400,6 +417,24 @@ bool __cdecl online_guide_show_sign_in_ui(long pane_count, dword_flags flags)
400417
return true;
401418
}
402419

420+
//dword __cdecl online_guide_show_virtual_keyboard_ui(e_controller_index controller_index, dword character_flags, wchar_t const* default_text, wchar_t const* title_text, wchar_t const* description_text, wchar_t* result_text, dword maximum_character_count, struct _XOVERLAPPED* platform_handle)
421+
dword __cdecl online_guide_show_virtual_keyboard_ui(e_controller_index controller_index, dword character_flags, wchar_t const* default_text, wchar_t const* title_text, wchar_t const* description_text, wchar_t* result_text, dword maximum_character_count, void* overlapped)
422+
{
423+
ASSERT(VALID_INDEX(controller_index, k_number_of_controllers));
424+
ASSERT(result_text != NULL);
425+
ASSERT(maximum_character_count > 0);
426+
ASSERT(overlapped != NULL);
427+
428+
c_controller_interface* controller = controller_get(controller_index);
429+
if (!controller->is_signed_in_to_machine())
430+
return E_FAIL;
431+
432+
// $TODO: properly implement `XShowKeyboardUI`
433+
return ERROR_SUCCESS;
434+
435+
return XShowKeyboardUI(controller_index, character_flags, default_text, title_text, description_text, result_text, maximum_character_count, overlapped);
436+
}
437+
403438
void __cdecl online_guide_update()
404439
{
405440
//online_guide_update_gamercard_dynamic_actions();

0 commit comments

Comments
 (0)