Skip to content

Commit 730f466

Browse files
authored
Unify menu binding types with their widget CreateParams counterparts (isledecomp#505)
SelectorBinding and ButtonBindingTable::ButtonBinding duplicated the field layout of MenuSelector::CreateParams and MenuTextButton::CreateParams with undefined4 placeholders in the pointer slots. The consumers already cast the stored entries to the widget CreateParams types (CreateSelector, CreateTextButton), so the two declarations describe the same record; derive the bindings from the real types instead. MenuTextButton::CreateParams's m_unk0xd0 is a VisualStateColor, proven by ParseButtonBinding writing it via ReadVisualState. Byte-identical: full reccmp JSON diff vs master baseline shows zero changes (96.79%, 3942 functions at 100%); decomplint, datacmp and check_folded clean.
1 parent d304f98 commit 730f466

3 files changed

Lines changed: 4 additions & 18 deletions

File tree

LEGORacers/include/menu/screens/menugamescreen.h

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
#include "decomp.h"
66
#include "menu/screens/menuscreen.h"
77
#include "menu/style/sharedmenustyletable.h"
8+
#include "menu/widgets/menutextbutton.h"
89
#include "render/golrenderdevice.h"
910

1011
class MenuGameContext;
1112
class MenuScreenCreateParams;
12-
class MenuTextButton;
1313
class MenuWidget;
1414
class GolFont;
1515
class GolImage;
@@ -44,17 +44,7 @@ class MenuGameScreen : public MenuScreen {
4444
void ParseSection(undefined4 p_token) override; // vtable+0x14
4545

4646
// SIZE 0xe0
47-
class ButtonBinding : public MenuInputBindingTable::IconBinding {
48-
public:
49-
GolFont* m_stateFonts[6]; // 0x84
50-
GolImage* m_stateImages[6]; // 0x9c
51-
VisualStateColor m_stateColors[6]; // 0xb4
52-
undefined m_unk0xcc[0xd0 - 0xcc]; // 0xcc
53-
VisualStateColor m_unk0xd0; // 0xd0
54-
undefined m_unk0xd4[0xd8 - 0xd4]; // 0xd4
55-
LegoU32 m_maxTextWidth; // 0xd8
56-
LegoBool32 m_hasMaxTextWidth; // 0xdc
57-
};
47+
class ButtonBinding : public MenuTextButton::CreateParams {};
5848

5949
// SYNTHETIC: LEGORACERS 0x0047f0f0
6050
// MenuGameScreen::ButtonBindingTable::`scalar deleting destructor'

LEGORacers/include/menu/style/menuinputbindingtable.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,7 @@ class MenuInputBindingTable : public MenuResourceTable {
9191
};
9292

9393
// SIZE 0x98
94-
class SelectorBinding : public MenuSelectorBase::CreateParamsWithCarousel {
95-
public:
96-
undefined4 m_carouselWidget; // 0x90 (filled at runtime; see MenuSelector::CreateParams)
97-
undefined4 m_acceptUnfocusedInput; // 0x94
98-
};
94+
class SelectorBinding : public MenuSelector::CreateParams {};
9995

10096
// SIZE 0x9c
10197
class ButtonBinding : public IconBinding {

LEGORacers/include/menu/widgets/menutextbutton.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class MenuTextButton : public MenuIcon {
2323
GolImage* m_stateImages[6]; // 0x9c
2424
VisualStateColor m_stateColors[6]; // 0xb4
2525
GolStringTable* m_stringTable; // 0xcc
26-
undefined4 m_unk0xd0; // 0xd0
26+
VisualStateColor m_unk0xd0; // 0xd0
2727
undefined2 m_stringId; // 0xd4
2828
undefined2 m_unk0xd6; // 0xd6
2929
LegoU32 m_maxTextWidth; // 0xd8

0 commit comments

Comments
 (0)