Skip to content

Commit c976e2f

Browse files
committed
Updated c_gui_widget and some subclasses
Added `c_gui_widget` virtual functions Added `c_gui_list_item_widget` virtual functions Added `c_gui_list_widget` virtual functions Added `c_gui_screen_widget` virtual functions Added `c_gui_text_widget` virtual functions Added `c_gui_roster_list_widget` virtual functions Added `c_gui_screen_pregame_lobby` virtual functions
1 parent 97bcb6d commit c976e2f

17 files changed

Lines changed: 887 additions & 335 deletions

game/source/_force_includes/_force_included_enums.hpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5229,3 +5229,16 @@ enum e_custom_bitmap_desired_aspect_ratio
52295229
k_custom_bitmap_desired_aspect_ratio_count,
52305230
};
52315231

5232+
enum e_gui_location
5233+
{
5234+
_gui_location_none = NONE,
5235+
_gui_location_main_menu,
5236+
_gui_location_pregame_lobby,
5237+
_gui_location_matchmaking_searching,
5238+
_gui_location_matchmaking_match_found,
5239+
_gui_location_in_game,
5240+
_gui_location_postgame_lobby,
5241+
5242+
k_gui_location_count,
5243+
};
5244+

game/source/interface/c_gui_list_item_widget.cpp

Lines changed: 87 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,98 @@
22

33
//.text:00B18260 ; public: __cdecl c_gui_list_item_widget::c_gui_list_item_widget()
44
//.text:00B18350 ;
5+
56
//.text:00B183B0 ; public: virtual void* __cdecl c_gui_list_item_widget::`vector deleting destructor'(unsigned int)
6-
//.text:00B183E0 ; public: virtual bool __cdecl c_gui_list_item_widget::can_receive_focus()
7-
//.text:00B18420 ; public: virtual c_gui_bitmap_widget* __cdecl c_gui_list_item_widget::create_bitmap_widget(s_runtime_bitmap_widget_definition const*)
8-
//.text:00B18430 ; public: virtual c_gui_button_key_widget* __cdecl c_gui_list_item_widget::create_button_key_widget(s_button_key_definition const*)
9-
//.text:00B18440 ; public: virtual c_gui_group_widget* __cdecl c_gui_list_item_widget::create_group_widget(s_group_widget_definition const*)
10-
//.text:00B18450 ; public: virtual c_gui_list_item_widget* __cdecl c_gui_list_item_widget::create_list_item_widget(s_list_item_widget_block const*)
11-
//.text:00B18460 ; public: virtual c_gui_list_widget* __cdecl c_gui_list_item_widget::create_list_widget(s_list_widget_block const*)
12-
//.text:00B18470 ; public: virtual c_gui_model_widget* __cdecl c_gui_list_item_widget::create_model_widget(s_model_widget_block const*)
13-
//.text:00B18480 ; public: virtual c_gui_text_widget* __cdecl c_gui_list_item_widget::create_text_widget(s_runtime_text_widget_definition const*)
14-
//.text:00B18490 ; public: virtual s_runtime_core_widget_definition* __cdecl c_gui_list_item_widget::get_core_definition()
15-
//.text:00B184A0 ; public: virtual int32 __cdecl c_gui_list_item_widget::get_element_handle()
16-
//.text:00B184C0 ; public: int32 __cdecl c_gui_list_item_widget::get_item_label()
7+
c_gui_list_item_widget::~c_gui_list_item_widget()
8+
{
9+
DECLFUNC(0x00B183B0, void, __thiscall, c_gui_list_item_widget*)(this);
10+
}
11+
12+
bool c_gui_list_item_widget::can_receive_focus()
13+
{
14+
return INVOKE_CLASS_MEMBER(0x00B183E0, c_gui_list_item_widget, can_receive_focus);
15+
}
16+
17+
c_gui_bitmap_widget* c_gui_list_item_widget::create_bitmap_widget(s_runtime_bitmap_widget_definition const* definition)
18+
{
19+
return INVOKE_CLASS_MEMBER(0x00B18420, c_gui_list_item_widget, create_bitmap_widget, definition);
20+
}
21+
22+
c_gui_button_key_widget* c_gui_list_item_widget::create_button_key_widget(s_button_key_definition const* definition)
23+
{
24+
return INVOKE_CLASS_MEMBER(0x00B18430, c_gui_list_item_widget, create_button_key_widget, definition);
25+
}
26+
27+
c_gui_group_widget* c_gui_list_item_widget::create_group_widget(s_group_widget_definition const* definition)
28+
{
29+
return INVOKE_CLASS_MEMBER(0x00B18440, c_gui_list_item_widget, create_group_widget, definition);
30+
}
31+
32+
c_gui_list_item_widget* c_gui_list_item_widget::create_list_item_widget(s_list_item_widget_block const* definition)
33+
{
34+
return INVOKE_CLASS_MEMBER(0x00B18450, c_gui_list_item_widget, create_list_item_widget, definition);
35+
}
36+
37+
c_gui_list_widget* c_gui_list_item_widget::create_list_widget(s_list_widget_block const* definition)
38+
{
39+
return INVOKE_CLASS_MEMBER(0x00B18460, c_gui_list_item_widget, create_list_widget, definition);
40+
}
41+
42+
c_gui_model_widget* c_gui_list_item_widget::create_model_widget(s_model_widget_block const* definition)
43+
{
44+
return INVOKE_CLASS_MEMBER(0x00B18470, c_gui_list_item_widget, create_model_widget, definition);
45+
}
1746

18-
int32 c_gui_list_item_widget::get_list_item_index()
47+
c_gui_text_widget* c_gui_list_item_widget::create_text_widget(s_runtime_text_widget_definition const* definition)
1948
{
20-
return INVOKE_CLASS_MEMBER((uns32)__vftable->__funcs[37], c_gui_list_item_widget, get_list_item_index);
21-
//return m_list_item_index;
49+
return INVOKE_CLASS_MEMBER(0x00B18480, c_gui_list_item_widget, create_text_widget, definition);
50+
}
51+
52+
s_runtime_core_widget_definition* c_gui_list_item_widget::get_core_definition()
53+
{
54+
return INVOKE_CLASS_MEMBER(0x00B18490, c_gui_list_item_widget, get_core_definition);
55+
}
56+
57+
int32 c_gui_list_item_widget::get_element_handle()
58+
{
59+
return INVOKE_CLASS_MEMBER(0x00B184A0, c_gui_list_item_widget, get_element_handle);
60+
}
61+
62+
int32 c_gui_list_item_widget::get_item_label()
63+
{
64+
return INVOKE_CLASS_MEMBER(0x00B184C0, c_gui_list_item_widget, get_item_label);
2265
}
2366

2467
//.text:00B184D0 ;
25-
//.text:00B184E0 ; public: c_gui_list_item_widget* __cdecl c_gui_list_item_widget::get_sibling_list_item_widget(bool, int)
68+
//.text:00B184E0 ; public: c_gui_list_item_widget* c_gui_list_item_widget::get_sibling_list_item_widget(bool, int)
2669
//.text:00B18520 ;
2770

71+
bool c_gui_list_item_widget::handle_widget_back_out()
72+
{
73+
return INVOKE_CLASS_MEMBER(0x00B18530, c_gui_list_item_widget, handle_widget_back_out);
74+
}
75+
76+
bool c_gui_list_item_widget::handle_widget_selected()
77+
{
78+
return INVOKE_CLASS_MEMBER(0x00B185F0, c_gui_list_item_widget, handle_widget_selected);
79+
}
80+
81+
void c_gui_list_item_widget::initialize(s_list_item_widget_block const* item_block)
82+
{
83+
INVOKE_CLASS_MEMBER(0x00B18640, c_gui_list_item_widget, initialize, item_block);
84+
}
85+
86+
//.text:00B186C0 ; public: bool c_gui_list_item_widget::invokes_submenu(int32*)
87+
//.text:00B18760 ;
88+
//.text:00B18770 ;
89+
//.text:00B18780 ;
90+
//.text:00B187A0 ;
91+
//.text:00B187D0 ; public: void c_gui_list_item_widget::set_list_item_index(int32)
92+
93+
bool c_gui_list_item_widget::should_render(bool* add_to_render_list)
94+
{
95+
return INVOKE_CLASS_MEMBER(0x00B187E0, c_gui_list_item_widget, should_render, add_to_render_list);
96+
97+
//return c_gui_widget::should_render(add_to_render_list) & (get_element_handle() != NONE);
98+
}
99+

game/source/interface/c_gui_list_item_widget.hpp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,29 @@ struct c_gui_list_item_widget :
2020
public c_gui_widget
2121
{
2222
public:
23-
int32 get_list_item_index();
23+
virtual ~c_gui_list_item_widget();
24+
virtual int32 get_element_handle() override;
25+
virtual s_runtime_core_widget_definition* get_core_definition() override;
26+
virtual bool should_render(bool* add_to_render_list) override;
27+
virtual bool can_receive_focus() override;
28+
virtual c_gui_text_widget* create_text_widget(s_runtime_text_widget_definition const* definition) override;
29+
virtual c_gui_bitmap_widget* create_bitmap_widget(s_runtime_bitmap_widget_definition const* definition) override;
30+
virtual c_gui_group_widget* create_group_widget(s_group_widget_definition const* definition) override;
31+
virtual c_gui_button_key_widget* create_button_key_widget(s_button_key_definition const* definition) override;
32+
virtual c_gui_list_widget* create_list_widget(s_list_widget_block const* definition) override;
33+
virtual c_gui_list_item_widget* create_list_item_widget(s_list_item_widget_block const* definition) override;
34+
virtual c_gui_model_widget* create_model_widget(s_model_widget_block const* definition) override;
35+
virtual bool handle_widget_back_out() override;
36+
virtual bool handle_widget_selected() override;
37+
virtual int32 get_list_item_index();
38+
virtual void initialize(s_list_item_widget_block const* item_block);
39+
40+
//int32 get_list_item_index();
41+
int32 get_item_label();
2442

2543
//protected:
2644
int32 __unknownDC;
27-
s_runtime_list_item_widget_definition m_core_definition;
45+
s_runtime_list_item_widget_definition m_definition;
2846
int32 m_list_item_index;
2947
bool __unknown11C;
3048
c_static_wchar_string<200> __string11E;

game/source/interface/c_gui_list_widget.cpp

Lines changed: 55 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,39 @@
11
#include "interface/c_gui_list_widget.hpp"
22

3-
//.text:00B14FD0 ; public: virtual s_runtime_core_widget_definition* c_gui_list_widget::get_core_definition()
3+
//.text:00B14890 ; public: c_gui_list_widget::c_gui_list_widget()
4+
//.text:00B14910 ; public: s_list_widget_block::s_list_widget_block()
5+
//.text:00B14970 ; public: s_list_widget_definition::s_list_widget_definition()
6+
//.text:00B149E0 ; public: s_runtime_list_widget_definition::s_runtime_list_widget_definition()
7+
//.text:00B14A70 ;
8+
9+
//.text:00B14A80 ; public: virtual void* c_gui_list_widget::`scalar deleting destructor'(unsigned int)
10+
c_gui_list_widget::~c_gui_list_widget()
11+
{
12+
DECLFUNC(0x00B14A80, void, __thiscall, c_gui_list_widget*)(this);
13+
}
14+
15+
//.text:00B14AB0 ; public: void c_gui_list_widget::add_definition_fields(s_list_widget_definition const*, bool)
16+
//.text:00B14B90 ; public: void c_gui_list_widget::close_active_submenu(c_gui_list_widget*)
17+
//.text:00B14C10 ; public: void c_gui_list_widget::create_and_add_additional_items_indicators_bitmaps()
18+
//.text:00B14CE0 ; public: void c_gui_list_widget::dispose_submenu(c_gui_list_widget*)
19+
//.text:00B14D30 ; public: void c_gui_list_widget::get_child_list_item_text_bounds(c_font_cache_base*, rectangle2d*, bool*)
20+
//.text:00B14E90 ; public: void c_gui_list_widget::get_child_list_item_widget_bounds(real_rectangle2d*)
21+
22+
s_runtime_core_widget_definition* c_gui_list_widget::get_core_definition()
23+
{
24+
return INVOKE_CLASS_MEMBER(0x00B14FD0, c_gui_list_widget, get_core_definition);
25+
}
426

527
c_gui_data* c_gui_list_widget::get_data()
628
{
729
return INVOKE_CLASS_MEMBER(0x00B14FE0, c_gui_list_widget, get_data);
830
}
931

10-
//.text:00B15020 ; public: virtual int32 c_gui_list_widget::get_datasource_index()
32+
int32 c_gui_list_widget::get_datasource_index()
33+
{
34+
return INVOKE_CLASS_MEMBER(0x00B15020, c_gui_list_widget, get_datasource_index);
35+
}
36+
1137
//.text:00B15060 ; public: int32 c_gui_list_widget::get_element_handle_from_list_item_index(int32)
1238
//.text:00B150E0 ; public: int32 c_gui_list_widget::get_focused_element_handle()
1339

@@ -32,10 +58,19 @@ int32 c_gui_list_widget::get_selectable_item_count()
3258
//.text:00B152C0 ;
3359
//.text:00B15390 ;
3460
//.text:00B15450 ; private: bool c_gui_list_widget::handle_grid_tab(c_gui_list_item_widget*, e_event_type)
35-
//.text:00B156B0 ; public: virtual bool c_gui_list_widget::handle_tab(c_controller_input_message const*)
61+
bool c_gui_list_widget::handle_tab(c_controller_input_message const* message)
62+
{
63+
return INVOKE_CLASS_MEMBER(0x00B156B0, c_gui_list_widget, handle_tab, message);
64+
}
65+
3666
//.text:00B157F0 ; private: bool c_gui_list_widget::handle_tab_direction(c_gui_list_item_widget*, c_gui_list_widget::e_list_scroll_direction)
3767
//.text:00B15B70 ; private: bool c_gui_list_widget::handle_tab_to_list_item(c_gui_list_item_widget*, c_gui_list_item_widget*)
38-
//.text:00B15BA0 ; public: virtual void c_gui_list_widget::initialize(s_list_widget_block const*)
68+
69+
void c_gui_list_widget::initialize(s_list_widget_block const* template_and_override_block)
70+
{
71+
INVOKE_CLASS_MEMBER(0x00B15BA0, c_gui_list_widget, initialize, template_and_override_block);
72+
}
73+
3974
//.text:00B15C20 ; public: bool c_gui_list_widget::invoke_submenu(int32, int32, bool)
4075
//.text:00B15CD0 ; public: bool c_gui_list_widget::invoke_submenu(s_list_widget_block const*, int32, bool)
4176
//.text:00B15EA0 ; public: bool c_gui_list_widget::is_submenu_that_needs_disposal() const
@@ -44,7 +79,12 @@ int32 c_gui_list_widget::get_selectable_item_count()
4479
//.text:00B15FB0 ;
4580
//.text:00B15FC0 ; public: void c_gui_list_widget::mark_as_submenu(bool)
4681
//.text:00B15FD0 ; private: void c_gui_list_widget::offset_horizontal_list_item_indicators()
47-
//.text:00B16130 ; public: virtual void c_gui_list_widget::post_initialize()
82+
83+
void c_gui_list_widget::post_initialize()
84+
{
85+
INVOKE_CLASS_MEMBER(0x00B16130, c_gui_list_widget, post_initialize);
86+
}
87+
4888
//.text:00B16140 ;
4989
//.text:00B16150 ;
5090
//.text:00B16160 ; private: void c_gui_list_widget::set_datasource_name(int32)
@@ -61,13 +101,18 @@ void c_gui_list_widget::set_scroll_position(int32 scroll_position)
61101
INVOKE_CLASS_MEMBER(0x00B16440, c_gui_list_widget, set_scroll_position, scroll_position);
62102
}
63103

64-
//.text:00B16490 ;
65-
//.text:00B164F0 ;
66-
//.text:00B16510 ; public: virtual void c_gui_list_widget::update(uns32)
104+
//.text:00B16490 ; public: c_gui_list_item_widget* c_gui_list_widget::try_and_get_child_list_item_widget_by_element_handle(int32)
105+
//.text:00B164F0 ; public: c_gui_list_item_widget* c_gui_list_widget::try_and_get_focused_child_list_item_widget()
106+
107+
void c_gui_list_widget::update(uns32 current_milliseconds)
108+
{
109+
INVOKE_CLASS_MEMBER(0x00B16510, c_gui_list_widget, update, current_milliseconds);
110+
}
111+
67112
//.text:00B165D0 ; private: void __cdecl c_gui_list_widget::update_indicator_bitmap_widget_animation_states()
68113

69-
void c_gui_list_widget::set_selectable_item_cap_count(int32 selectable_item_cap_count)
114+
void c_gui_list_widget::update_render_state(uns32 current_milliseconds)
70115
{
71-
m_selectable_item_cap_count = selectable_item_cap_count;
116+
INVOKE_CLASS_MEMBER(0x00B16650, c_gui_list_widget, update_render_state, current_milliseconds);
72117
}
73118

game/source/interface/c_gui_list_widget.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ struct c_gui_list_widget :
4343
public c_gui_widget
4444
{
4545
public:
46+
virtual ~c_gui_list_widget();
47+
virtual void post_initialize() override;
48+
virtual int32 get_datasource_index() override;
49+
virtual s_runtime_core_widget_definition* get_core_definition() override;
50+
virtual void update(uns32 current_milliseconds) override;
51+
virtual void update_render_state(uns32 current_milliseconds) override;
52+
virtual bool handle_tab(c_controller_input_message const* message) override;
53+
virtual void initialize(s_list_widget_block const* template_and_override_block);
54+
4655
c_gui_data* get_data();
4756
int32 get_focused_item_index();
4857
int32 get_scroll_position();

0 commit comments

Comments
 (0)