Skip to content

Commit 7ffa4f0

Browse files
committed
Make it possible to scroll selectors in TeamTypes and AITriggerTypes windows
1 parent fba1a36 commit 7ffa4f0

File tree

3 files changed

+97
-1
lines changed

3 files changed

+97
-1
lines changed

src/TSMapEditor/UI/UIHelpers.cs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using Rampastring.XNAUI.XNAControls;
1+
using Rampastring.XNAUI.Input;
2+
using Rampastring.XNAUI.XNAControls;
3+
using System.Collections.Generic;
24
using TSMapEditor.UI.Controls;
35

46
namespace TSMapEditor.UI
@@ -16,5 +18,38 @@ public static void AddSearchTipsBoxToControl(XNAControl control)
1618
var tooltip = new ToolTip(control.WindowManager, lblSearchTips);
1719
tooltip.Text = Translate("UIHelpers.AddSearchTipsBoxToControl.SearchTip", "Search Tips\r\n\r\nWith the text box activated:\r\n- Press ENTER to move to next match in list\r\n- Press ESC to clear search query");
1820
}
21+
22+
public static T GetScrollItem<T>(List<T> list, T current, Cursor cursor, bool allowSelectionIfNull)
23+
{
24+
if (current == null)
25+
{
26+
if (list.Count > 0 && allowSelectionIfNull)
27+
{
28+
return current;
29+
}
30+
31+
return default(T);
32+
}
33+
34+
int index = list.IndexOf(current);
35+
36+
// Check for possible error condition
37+
if (index < 0)
38+
{
39+
return default(T);
40+
}
41+
42+
if (index > 0 && cursor.ScrollWheelValue > 0)
43+
{
44+
return list[index - 1];
45+
}
46+
47+
if (index < list.Count - 1 && cursor.ScrollWheelValue < 0)
48+
{
49+
return list[index + 1];
50+
}
51+
52+
return current;
53+
}
1954
}
2055
}

src/TSMapEditor/UI/Windows/AITriggersWindow.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ public override void Initialize()
104104
tbFilter = FindChild<EditorSuggestionTextBox>(nameof(tbFilter));
105105
tbFilter.TextChanged += TbFilter_TextChanged;
106106

107+
selPrimaryTeam.MouseScrolled += SelPrimaryTeam_MouseScrolled;
108+
selSecondaryTeam.MouseScrolled += SelSecondaryTeam_MouseScrolled;
109+
107110
FindChild<EditorButton>("btnNew").LeftClick += BtnNew_LeftClick;
108111
FindChild<EditorButton>("btnDelete").LeftClick += BtnDelete_LeftClick;
109112
FindChild<EditorButton>("btnClone").LeftClick += BtnClone_LeftClick;
@@ -140,6 +143,28 @@ public override void Initialize()
140143
lbAITriggers.SelectedIndexChanged += LbAITriggers_SelectedIndexChanged;
141144
}
142145

146+
private void SelSecondaryTeam_MouseScrolled(object sender, InputEventArgs e)
147+
{
148+
e.Handled = true;
149+
150+
if (editedAITrigger == null)
151+
return;
152+
153+
editedAITrigger.SecondaryTeam = UIHelpers.GetScrollItem(map.TeamTypes, editedAITrigger.SecondaryTeam, Cursor, false);
154+
EditAITrigger(editedAITrigger);
155+
}
156+
157+
private void SelPrimaryTeam_MouseScrolled(object sender, InputEventArgs e)
158+
{
159+
e.Handled = true;
160+
161+
if (editedAITrigger == null)
162+
return;
163+
164+
editedAITrigger.PrimaryTeam = UIHelpers.GetScrollItem(map.TeamTypes, editedAITrigger.PrimaryTeam, Cursor, false);
165+
EditAITrigger(editedAITrigger);
166+
}
167+
143168
private void CloneForEasierDifficulties()
144169
{
145170
if (editedAITrigger == null)

src/TSMapEditor/UI/Windows/TeamTypesWindow.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ public override void Initialize()
141141
var tagDarkeningPanel = DarkeningPanel.InitializeAndAddToParentControlWithChild(WindowManager, Parent, selectTagWindow);
142142
tagDarkeningPanel.Hidden += (s, e) => SelectionWindow_ApplyEffect(w => editedTeamType.Tag = w.SelectedObject, selectTagWindow);
143143

144+
selTaskForce.MouseScrolled += SelTaskForce_MouseScrolled;
144145
selTaskForce.LeftClick += (s, e) =>
145146
{
146147
if (editedTeamType == null)
@@ -156,6 +157,7 @@ public override void Initialize()
156157
}
157158
};
158159

160+
selScript.MouseScrolled += SelScript_MouseScrolled;
159161
selScript.LeftClick += (s, e) =>
160162
{
161163
if (editedTeamType == null)
@@ -175,6 +177,7 @@ public override void Initialize()
175177
FindChild<EditorButton>("btnOpenScript").LeftClick += (s, e) => OpenScript();
176178
FindChild<EditorButton>("btnOpenTag").LeftClick += (s, e) => OpenTag();
177179

180+
selTag.MouseScrolled += SelTag_MouseScrolled;
178181
selTag.LeftClick += (s, e) => { if (editedTeamType != null) selectTagWindow.Open(editedTeamType.Tag); };
179182

180183
var sortContextMenu = new EditorContextMenu(WindowManager);
@@ -205,6 +208,39 @@ public override void Initialize()
205208
map.TeamTypesChanged += Map_TeamTypesChanged;
206209
}
207210

211+
private void SelTag_MouseScrolled(object sender, InputEventArgs e)
212+
{
213+
e.Handled = true;
214+
215+
if (editedTeamType == null)
216+
return;
217+
218+
editedTeamType.Tag = UIHelpers.GetScrollItem(map.Tags, editedTeamType.Tag, Cursor, false);
219+
EditTeamType(editedTeamType);
220+
}
221+
222+
private void SelScript_MouseScrolled(object sender, InputEventArgs e)
223+
{
224+
e.Handled = true;
225+
226+
if (editedTeamType == null)
227+
return;
228+
229+
editedTeamType.Script = UIHelpers.GetScrollItem(map.Scripts, editedTeamType.Script, Cursor, true);
230+
EditTeamType(editedTeamType);
231+
}
232+
233+
private void SelTaskForce_MouseScrolled(object sender, InputEventArgs e)
234+
{
235+
e.Handled = true;
236+
237+
if (editedTeamType == null)
238+
return;
239+
240+
editedTeamType.TaskForce = UIHelpers.GetScrollItem(map.TaskForces, editedTeamType.TaskForce, Cursor, true);
241+
EditTeamType(editedTeamType);
242+
}
243+
208244
private void Map_TeamTypesChanged(object sender, EventArgs e)
209245
{
210246
if (Visible)

0 commit comments

Comments
 (0)