Skip to content

Commit d3b3e2a

Browse files
MrNiceUKandrewgu
authored andcommitted
Squashing changes from MrNiceUK/ControllerSupport to prepare for rebase against main branch
1 parent be25923 commit d3b3e2a

29 files changed

Lines changed: 888 additions & 400 deletions

ModConfigMenu/ModConfigMenu.XCOM_sln

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ Global
1111
Default|XCOM 2 = Default|XCOM 2
1212
EndGlobalSection
1313
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14-
{3F350978-33E7-493A-993B-92C1B54BF591}.Debug|XCOM 2.ActiveCfg = Debug|XCOM 2
15-
{3F350978-33E7-493A-993B-92C1B54BF591}.Debug|XCOM 2.Build.0 = Debug|XCOM 2
14+
{3F350978-33E7-493A-993B-92C1B54BF591}.Debug|XCOM 2.ActiveCfg = Default|XCOM 2
15+
{3F350978-33E7-493A-993B-92C1B54BF591}.Debug|XCOM 2.Build.0 = Default|XCOM 2
1616
{3F350978-33E7-493A-993B-92C1B54BF591}.Default|XCOM 2.ActiveCfg = Default|XCOM 2
1717
{3F350978-33E7-493A-993B-92C1B54BF591}.Default|XCOM 2.Build.0 = Default|XCOM 2
1818
EndGlobalSection

ModConfigMenu/ModConfigMenu/Localization/ModConfigMenu.int

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ m_strSaveAndExit="Save and Exit"
66
m_strCancel="Cancel"
77
m_strTitle="Mod Settings"
88
m_strSubtitle=""
9+
m_strScroll="SCROLL"
910

1011
[MCM_SettingsPanel]
1112
m_strResetButton="Reset"

ModConfigMenu/ModConfigMenu/ModConfigMenu.x2proj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,12 @@ For full details on using this mod, troubleshooting, or even building your own m
151151
<Content Include="Src\ModConfigMenu\Classes\MCM_TestHarnessListener.uc">
152152
<SubType>Content</SubType>
153153
</Content>
154+
<Content Include="Src\ModConfigMenu\Classes\MCM_UIButton.uc">
155+
<SubType>Content</SubType>
156+
</Content>
157+
<Content Include="Src\ModConfigMenu\Classes\MCM_UIListItemSpinner.uc">
158+
<SubType>Content</SubType>
159+
</Content>
154160
<Content Include="Src\ModConfigMenu\Classes\MCM_UISettingSeparator.uc">
155161
<SubType>Content</SubType>
156162
</Content>

ModConfigMenu/ModConfigMenu/Src/ModConfigMenu/Classes/MCM_Button.uc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
class MCM_Button extends MCM_SettingBase implements(MCM_API_Button) config(ModConfigMenu);
22

3-
var delegate<VoidSettingHandler> ClickHandler;
3+
var delegate<MCM_API_SettingsGroup.VoidSettingHandler> ClickHandler;
44

55
var MCM_API_Setting ParentFacade;
66

7-
delegate VoidSettingHandler(MCM_API_Setting Setting);
87

98
simulated function MCM_SettingBase InitSettingsItem(name _Name, eSettingType _Type, optional string _Label = "", optional string _Tooltip = "")
109
{
@@ -14,7 +13,7 @@ simulated function MCM_SettingBase InitSettingsItem(name _Name, eSettingType _Ty
1413
}
1514

1615
// Fancy init process
17-
simulated function MCM_Button InitButton(name _SettingName, MCM_API_Setting _ParentFacade, string _Label, string _Tooltip, string _ButtonLabel, delegate<VoidSettingHandler> _OnClick)
16+
simulated function MCM_Button InitButton(name _SettingName, MCM_API_Setting _ParentFacade, string _Label, string _Tooltip, string _ButtonLabel, delegate<MCM_API_SettingsGroup.VoidSettingHandler> _OnClick)
1817
{
1918
super.InitSettingsItem(_SettingName, eSettingType_Button, _Label, _Tooltip);
2019

@@ -42,4 +41,9 @@ function SimulateClick()
4241
{
4342
ClickHandler(ParentFacade);
4443
}
44+
}
45+
46+
simulated function bool OnUnrealCommand(int cmd, int arg)
47+
{
48+
return Super(UIMechaListItem).OnUnrealCommand(cmd, arg);
4549
}

ModConfigMenu/ModConfigMenu/Src/ModConfigMenu/Classes/MCM_ButtonFacade.uc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,13 @@ var MCM_SettingGroup ParentGroup;
99

1010
var string ButtonLabel;
1111

12-
var delegate<VoidSettingHandler> ClickHandler;
12+
var delegate<MCM_API_SettingsGroup.VoidSettingHandler> ClickHandler;
1313

1414
var MCM_Button uiInstance;
1515

16-
delegate VoidSettingHandler(MCM_API_Setting _Setting);
1716

1817
simulated function MCM_ButtonFacade InitButtonFacade(name _Name, string _Label, string _Tooltip, string _ButtonLabel,
19-
delegate<VoidSettingHandler> _OnClick, MCM_SettingGroup _ParentGroup)
18+
delegate<MCM_API_SettingsGroup.VoidSettingHandler> _OnClick, MCM_SettingGroup _ParentGroup)
2019
{
2120
SettingName = _Name;
2221
Label = _Label;
@@ -40,7 +39,6 @@ simulated function UIMechaListItem InstantiateUI(UIList parent)
4039
{
4140
uiInstance = Spawn(class'MCM_Button', parent.itemContainer).InitButton(SettingName, self, Label, Tooltip, ButtonLabel, ClickHandler);
4241
uiInstance.Show();
43-
uiInstance.EnableNavigation();
4442
uiInstance.SetEditable(Editable);
4543

4644
return uiInstance;

ModConfigMenu/ModConfigMenu/Src/ModConfigMenu/Classes/MCM_Checkbox.uc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
class MCM_Checkbox extends MCM_SettingBase implements(MCM_API_Checkbox) config(ModConfigMenu);
22

33
var MCM_API_Setting ParentFacade;
4-
var delegate<BoolSettingHandler> ChangeHandler;
5-
6-
delegate BoolSettingHandler(MCM_API_Setting _Setting, bool _SettingValue);
4+
var delegate<MCM_API_SettingsGroup.BoolSettingHandler> ChangeHandler;
75

86
simulated function MCM_SettingBase InitSettingsItem(name _Name, eSettingType _Type, optional string _Label = "", optional string _Tooltip = "")
97
{
@@ -13,7 +11,7 @@ simulated function MCM_SettingBase InitSettingsItem(name _Name, eSettingType _Ty
1311
}
1412

1513
// Fancy init process
16-
simulated function MCM_Checkbox InitCheckbox(name _SettingName, MCM_API_Setting _ParentFacade, string _Label, string _Tooltip, bool initiallyChecked, delegate<BoolSettingHandler> _OnChange)
14+
simulated function MCM_Checkbox InitCheckbox(name _SettingName, MCM_API_Setting _ParentFacade, string _Label, string _Tooltip, bool initiallyChecked, delegate<MCM_API_SettingsGroup.BoolSettingHandler> _OnChange)
1715
{
1816
super.InitSettingsItem(_SettingName, eSettingType_Checkbox, _Label, _Tooltip);
1917

ModConfigMenu/ModConfigMenu/Src/ModConfigMenu/Classes/MCM_CheckboxFacade.uc

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,13 @@ var MCM_SettingGroup ParentGroup;
99

1010
var bool Checked;
1111

12-
var delegate<BoolSettingHandler> ChangeHandler;
13-
var delegate<BoolSettingHandler> SaveHandler;
12+
var delegate<MCM_API_SettingsGroup.BoolSettingHandler> ChangeHandler;
13+
var delegate<MCM_API_SettingsGroup.BoolSettingHandler> SaveHandler;
1414

1515
var MCM_Checkbox uiInstance;
1616

17-
delegate BoolSettingHandler(MCM_API_Setting _Setting, bool _SettingValue);
18-
1917
simulated function MCM_CheckboxFacade InitCheckboxFacade(name _Name, string _Label, string _Tooltip, bool _Checked,
20-
delegate<BoolSettingHandler> _OnChange, delegate<BoolSettingHandler> _OnSave,
18+
delegate<MCM_API_SettingsGroup.BoolSettingHandler> _OnChange, delegate<MCM_API_SettingsGroup.BoolSettingHandler> _OnSave,
2119
MCM_SettingGroup _ParentGroup)
2220
{
2321
SettingName = _Name;
@@ -43,7 +41,6 @@ simulated function UIMechaListItem InstantiateUI(UIList parent)
4341
{
4442
uiInstance = Spawn(class'MCM_Checkbox', parent.itemContainer).InitCheckbox(SettingName, self, Label, Tooltip, Checked, ChangeHandler);
4543
uiInstance.Show();
46-
uiInstance.EnableNavigation();
4744
uiInstance.SetEditable(Editable);
4845

4946
return uiInstance;

ModConfigMenu/ModConfigMenu/Src/ModConfigMenu/Classes/MCM_CustomPageTest.uc

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ class MCM_CustomPageTest extends Object config(ModConfigMenuTestHarness);
33

44
`include(ModConfigMenu/Src/ModConfigMenuAPI/MCM_API_Includes.uci)
55

6-
delegate CustomSettingsPageCallback(UIScreen ParentScreen, int PageID);
7-
86
//event OnInit(UIScreen Screen)
97
function OnInit(UIScreen Screen)
108
{
Lines changed: 24 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
class MCM_Dropdown extends MCM_SettingBase implements(MCM_API_Dropdown) config(ModConfigMenu);
22

3-
var delegate<StringSettingHandler> ChangeHandler;
3+
var delegate<MCM_API_SettingsGroup.StringSettingHandler> ChangeHandler;
44

55
var MCM_API_Setting ParentFacade;
66
var array<string> DropdownOptions;
7-
var int DropdownSelection;
87
var bool TmpSuppressEvent;
98

10-
delegate StringSettingHandler(MCM_API_Setting Setting, string _SettingValue);
11-
129
simulated function MCM_SettingBase InitSettingsItem(name _Name, eSettingType _Type, optional string _Label = "", optional string _Tooltip = "")
1310
{
1411
`log("Don't call InitSettingsItem directly in subclass of MCM_SettingBase.");
@@ -18,18 +15,20 @@ simulated function MCM_SettingBase InitSettingsItem(name _Name, eSettingType _Ty
1815

1916
// Fancy init process
2017
simulated function MCM_Dropdown InitDropdown(name _SettingName, MCM_API_Setting _ParentFacade, string _Label, string _Tooltip, array<string> _Options, string _Selection,
21-
delegate<StringSettingHandler> _OnChange)
18+
delegate<MCM_API_SettingsGroup.StringSettingHandler> _OnChange)
2219
{
2320
super.InitSettingsItem(_SettingName, eSettingType_Checkbox, _Label, _Tooltip);
2421

2522
ChangeHandler = _OnChange;
2623
ParentFacade = _ParentFacade;
2724

28-
CloneOptionsList(_Options);
29-
DropdownSelection = GetSelectionIndex(_Options, _Selection);
25+
DropdownOptions = _Options;
3026

3127
TmpSuppressEvent = true;
32-
UpdateDataDropdown(_Label, _Options, DropdownSelection, DropdownChangedCallback);
28+
UpdateDataDropdown(_Label, _Options, _Options.find(_Selection), DropdownChangedCallback);
29+
Dropdown.OnMouseEventDelegate = MouseSoundCheck;
30+
// Need to tweak text boundary limits
31+
Desc.SetWidth(width - 340);
3332
TmpSuppressEvent = false;
3433

3534
SetHoverTooltip(_Tooltip);
@@ -39,100 +38,29 @@ simulated function MCM_Dropdown InitDropdown(name _SettingName, MCM_API_Setting
3938

4039
// Helpers
4140

42-
function CloneOptionsList(array<string> OptionsList)
43-
{
44-
local int iter;
45-
DropdownOptions.Length = 0;
46-
for (iter = 0; iter < OptionsList.Length; iter++)
47-
{
48-
DropdownOptions.AddItem(OptionsList[iter]);
49-
}
50-
}
51-
52-
function int GetSelectionIndex(array<string> OptionsList, string SelectedOption)
53-
{
54-
local int iter;
55-
for (iter = 0; iter < OptionsList.Length; iter++)
56-
{
57-
if (SelectedOption == OptionsList[iter])
58-
return iter;
59-
}
60-
61-
return -1;
62-
}
63-
6441
function DropdownChangedCallback(UIDropdown DropdownControl)
6542
{
66-
DropdownSelection = DropdownControl.SelectedItem;
67-
6843
if (ChangeHandler != none && !TmpSuppressEvent)
6944
{
7045
ChangeHandler(ParentFacade, DropdownControl.GetSelectedItemText());
7146
}
7247
}
7348

74-
// Need to tweak text boundary limits
75-
76-
simulated function UIMechaListItem UpdateDataDropdown(string _Desc,
77-
array<String> Data,
78-
int SelectedIndex,
79-
delegate<OnDropdownSelectionChangedCallback> _OnSelectionChange,
80-
optional delegate<OnClickDelegate> _OnClickDelegate = none)
81-
{
82-
local int i;
83-
84-
SetWidgetType(EUILineItemType_Dropdown);
85-
if(Dropdown != none)
86-
{
87-
Dropdown.Remove();
88-
Dropdown = none;
89-
}
90-
91-
if( Dropdown == none )
92-
{
93-
Dropdown = Spawn(class'UIDropdown', self);
94-
Dropdown.bIsNavigable = false;
95-
Dropdown.InitDropdown('DropdownMC');
96-
Dropdown.SetPosition(width - 308, 24);
97-
}
98-
99-
Dropdown.Clear();
100-
101-
for(i = 0; i < Data.Length; ++i)
102-
{
103-
Dropdown.AddItem(Data[i]);
104-
}
105-
106-
Dropdown.SetLabel("");
107-
Dropdown.SetSelected(SelectedIndex);
108-
Dropdown.Show();
109-
110-
//Desc.SetWidth(width - 308);
111-
Desc.SetWidth(width - 340);
112-
Desc.SetHTMLText(_Desc);
113-
Desc.Show();
114-
115-
OnClickDelegate = _OnClickDelegate;
116-
Dropdown.OnItemSelectedDelegate = _OnSelectionChange;
117-
return self;
118-
}
119-
12049
// MCM_API_Dropdown implementation ===========================================================================
12150

12251
function string GetValue()
12352
{
124-
return DropdownOptions[DropdownSelection];
53+
return Dropdown.GetSelectedItemText();
12554
}
12655

12756
function SetValue(string Selection, bool SuppressEvent)
12857
{
12958
local int index;
13059

131-
index = GetSelectionIndex(DropdownOptions, Selection);
60+
index = DropdownOptions.find(Selection);
13261
// If found.
13362
if (index >= 0)
13463
{
135-
DropdownSelection = index;
13664
TmpSuppressEvent = SuppressEvent;
13765
Dropdown.SetSelected(index);
13866
TmpSuppressEvent = false;
@@ -141,11 +69,10 @@ function SetValue(string Selection, bool SuppressEvent)
14169

14270
function SetOptions(array<string> NewOptions, string InitialSelection, bool SuppressEvent)
14371
{
144-
CloneOptionsList(NewOptions);
145-
DropdownSelection = GetSelectionIndex(NewOptions, InitialSelection);
72+
DropdownOptions = NewOptions;
14673

14774
TmpSuppressEvent = SuppressEvent;
148-
UpdateDataDropdown(GetLabel(), NewOptions, DropdownSelection, DropdownChangedCallback);
75+
UpdateDataDropdown(GetLabel(), NewOptions, NewOptions.find(InitialSelection), DropdownChangedCallback);
14976
TmpSuppressEvent = false;
15077

15178
SetHoverTooltip(DisplayTooltip);
@@ -163,4 +90,17 @@ simulated function SetEditable(bool IsEditable)
16390
{
16491
Dropdown.Hide();
16592
}
93+
}
94+
95+
simulated function MouseSoundCheck(UIPanel Panel, int Cmd)
96+
{
97+
if(cmd == class'UIUtilities_Input'.const.FXS_L_MOUSE_UP)
98+
{
99+
Movie.Pres.PlayUISound(eSUISound_MenuSelect);
100+
}
101+
}
102+
103+
simulated function UIPanel ProcessMouseEvents(optional delegate<OnMouseEventDelegate> MouseEventDelegate = MouseSoundCheck)
104+
{
105+
return Super.ProcessMouseEvents(MouseEventDelegate);
166106
}

ModConfigMenu/ModConfigMenu/Src/ModConfigMenu/Classes/MCM_DropdownFacade.uc

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,14 @@ var MCM_SettingGroup ParentGroup;
1010
var array<string> Options;
1111
var int SelectionIndex;
1212

13-
var delegate<StringSettingHandler> ChangeHandler;
14-
var delegate<StringSettingHandler> SaveHandler;
13+
var delegate<MCM_API_SettingsGroup.StringSettingHandler> ChangeHandler;
14+
var delegate<MCM_API_SettingsGroup.StringSettingHandler> SaveHandler;
1515

1616
var MCM_Dropdown uiInstance;
1717

18-
delegate StringSettingHandler(MCM_API_Setting Setting, string _SettingValue);
19-
2018
simulated function MCM_DropdownFacade InitDropdownFacade(name _Name, string _Label, string _Tooltip,
2119
array<string> _Options, string _Selection,
22-
delegate<StringSettingHandler> _OnChange, delegate<StringSettingHandler> _OnSave,
20+
delegate<MCM_API_SettingsGroup.StringSettingHandler> _OnChange, delegate<MCM_API_SettingsGroup.StringSettingHandler> _OnSave,
2321
MCM_SettingGroup _ParentGroup)
2422
{
2523
SettingName = _Name;
@@ -77,7 +75,6 @@ function UIMechaListItem InstantiateUI(UIList Parent)
7775
{
7876
uiInstance = Spawn(class'MCM_Dropdown', parent.itemContainer).InitDropdown(SettingName, self, Label, Tooltip, Options, Options[SelectionIndex], ChangeHandler);
7977
uiInstance.Show();
80-
uiInstance.EnableNavigation();
8178
uiInstance.SetEditable(Editable);
8279

8380
return uiInstance;

0 commit comments

Comments
 (0)