Skip to content

Commit 80e3d2f

Browse files
committed
Beta 2 - Feature Complete(?)
1 parent 4cc3bed commit 80e3d2f

24 files changed

Lines changed: 555 additions & 465 deletions

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: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,9 @@ For full details on using this mod, troubleshooting, or even building your own m
154154
<Content Include="Src\ModConfigMenu\Classes\MCM_UIButton.uc">
155155
<SubType>Content</SubType>
156156
</Content>
157+
<Content Include="Src\ModConfigMenu\Classes\MCM_UIListItemSpinner.uc">
158+
<SubType>Content</SubType>
159+
</Content>
157160
<Content Include="Src\ModConfigMenu\Classes\MCM_UISettingSeparator.uc">
158161
<SubType>Content</SubType>
159162
</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 & 3 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;

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 & 5 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;

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 & 5 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;

ModConfigMenu/ModConfigMenu/Src/ModConfigMenu/Classes/MCM_GroupLabelSeparator.uc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,5 @@ defaultproperties
5454
DESC_Y = 0;
5555

5656
bProcessesMouseEvents = true;
57+
bShouldPlayGenericUIAudioEvents = false;
5758
}

0 commit comments

Comments
 (0)