Implementing search feature in map choosers
This commit is contained in:
1
AUTHORS
1
AUTHORS
@@ -63,6 +63,7 @@ Also thanks to:
|
|||||||
* Matthew Uzzell (MUzzell)
|
* Matthew Uzzell (MUzzell)
|
||||||
* Max621
|
* Max621
|
||||||
* Max Ugrumov (katzsmile)
|
* Max Ugrumov (katzsmile)
|
||||||
|
* Michael Sztolcman (s1w_)
|
||||||
* Mustafa Alperen Seki (MustaphaTR)
|
* Mustafa Alperen Seki (MustaphaTR)
|
||||||
* Neil Shivkar (havok13888)
|
* Neil Shivkar (havok13888)
|
||||||
* Nukem
|
* Nukem
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
|
|
||||||
ScrollPanelWidget scrollpanel;
|
ScrollPanelWidget scrollpanel;
|
||||||
ScrollItemWidget itemTemplate;
|
ScrollItemWidget itemTemplate;
|
||||||
|
string mapFilter;
|
||||||
string gameMode;
|
string gameMode;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
@@ -32,8 +33,11 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
{
|
{
|
||||||
selectedUid = WidgetUtils.ChooseInitialMap(initialMap);
|
selectedUid = WidgetUtils.ChooseInitialMap(initialMap);
|
||||||
|
|
||||||
widget.Get<ButtonWidget>("BUTTON_OK").OnClick = () => { Ui.CloseWindow(); onSelect(selectedUid); };
|
var approving = new Action(() => { Ui.CloseWindow(); onSelect(selectedUid); });
|
||||||
widget.Get<ButtonWidget>("BUTTON_CANCEL").OnClick = () => { Ui.CloseWindow(); onExit(); };
|
var canceling = new Action(() => { Ui.CloseWindow(); onExit(); });
|
||||||
|
|
||||||
|
widget.Get<ButtonWidget>("BUTTON_OK").OnClick = approving;
|
||||||
|
widget.Get<ButtonWidget>("BUTTON_CANCEL").OnClick = canceling;
|
||||||
|
|
||||||
scrollpanel = widget.Get<ScrollPanelWidget>("MAP_LIST");
|
scrollpanel = widget.Get<ScrollPanelWidget>("MAP_LIST");
|
||||||
scrollpanel.Layout = new GridLayout(scrollpanel);
|
scrollpanel.Layout = new GridLayout(scrollpanel);
|
||||||
@@ -69,6 +73,26 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
gameModeDropdown.GetText = () => showItem(gameModes.First(m => m.First == gameMode));
|
gameModeDropdown.GetText = () => showItem(gameModes.First(m => m.First == gameMode));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var mapfilterInput = widget.GetOrNull<TextFieldWidget>("MAPFILTER_INPUT");
|
||||||
|
if (mapfilterInput != null)
|
||||||
|
{
|
||||||
|
mapfilterInput.TakeKeyboardFocus();
|
||||||
|
mapfilterInput.OnEscKey = () =>
|
||||||
|
{
|
||||||
|
if (mapfilterInput.Text.Length == 0)
|
||||||
|
canceling();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mapFilter = mapfilterInput.Text = null;
|
||||||
|
EnumerateMaps(onSelect);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
mapfilterInput.OnEnterKey = () => { approving(); return true; };
|
||||||
|
mapfilterInput.OnTextEdited = () =>
|
||||||
|
{ mapFilter = mapfilterInput.Text; EnumerateMaps(onSelect); };
|
||||||
|
}
|
||||||
|
|
||||||
var randomMapButton = widget.GetOrNull<ButtonWidget>("RANDOMMAP_BUTTON");
|
var randomMapButton = widget.GetOrNull<ButtonWidget>("RANDOMMAP_BUTTON");
|
||||||
if (randomMapButton != null)
|
if (randomMapButton != null)
|
||||||
{
|
{
|
||||||
@@ -88,7 +112,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
{
|
{
|
||||||
var maps = Game.modData.MapCache
|
var maps = Game.modData.MapCache
|
||||||
.Where(m => m.Status == MapStatus.Available && m.Map.Selectable)
|
.Where(m => m.Status == MapStatus.Available && m.Map.Selectable)
|
||||||
.Where(m => m.Type == gameMode || gameMode == null)
|
.Where(m => gameMode == null || m.Type == gameMode)
|
||||||
|
.Where(m => mapFilter == null || m.Title.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0 || m.Author.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0)
|
||||||
.OrderBy(m => m.PlayerCount)
|
.OrderBy(m => m.PlayerCount)
|
||||||
.ThenBy(m => m.Title);
|
.ThenBy(m => m.Title);
|
||||||
|
|
||||||
|
|||||||
@@ -17,14 +17,27 @@ Container@MAPCHOOSER_PANEL:
|
|||||||
Height: 500
|
Height: 500
|
||||||
Background: panel-black
|
Background: panel-black
|
||||||
Children:
|
Children:
|
||||||
Label@GAMEMODE_DESC:
|
Label@FILTER_DESC:
|
||||||
X: PARENT_RIGHT - WIDTH - 220
|
X: PARENT_RIGHT - WIDTH - 401
|
||||||
Y: 10
|
Y: 10
|
||||||
Width: 200
|
Width: 60
|
||||||
Height: 25
|
Height: 25
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Align: Right
|
Align: Right
|
||||||
Text: Filter:
|
Text: Filter:
|
||||||
|
TextField@MAPFILTER_INPUT:
|
||||||
|
X: PARENT_RIGHT - WIDTH - 245
|
||||||
|
Y: 10
|
||||||
|
Width: 150
|
||||||
|
Height: 25
|
||||||
|
Label@FILTER_DESC_JOINER:
|
||||||
|
X: PARENT_RIGHT - WIDTH - 215
|
||||||
|
Y: 10
|
||||||
|
Width: 30
|
||||||
|
Height: 25
|
||||||
|
Font: Bold
|
||||||
|
Align: Center
|
||||||
|
Text: in
|
||||||
DropDownButton@GAMEMODE_FILTER:
|
DropDownButton@GAMEMODE_FILTER:
|
||||||
X: PARENT_RIGHT - WIDTH - 15
|
X: PARENT_RIGHT - WIDTH - 15
|
||||||
Y: 10
|
Y: 10
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ Background@MAPCHOOSER_PANEL:
|
|||||||
Y: (WINDOW_BOTTOM - HEIGHT)/2
|
Y: (WINDOW_BOTTOM - HEIGHT)/2
|
||||||
Logic: MapChooserLogic
|
Logic: MapChooserLogic
|
||||||
Width: 858
|
Width: 858
|
||||||
Height: 600
|
Height: 618
|
||||||
Children:
|
Children:
|
||||||
Label@MAPCHOOSER_TITLE:
|
Label@MAPCHOOSER_TITLE:
|
||||||
X: 0
|
X: 0
|
||||||
Y: 17
|
Y: 15
|
||||||
Align: Center
|
Align: Center
|
||||||
Width: 858
|
Width: 858
|
||||||
Height: 20
|
Height: 20
|
||||||
@@ -15,7 +15,7 @@ Background@MAPCHOOSER_PANEL:
|
|||||||
Font: Bold
|
Font: Bold
|
||||||
ScrollPanel@MAP_LIST:
|
ScrollPanel@MAP_LIST:
|
||||||
X: 20
|
X: 20
|
||||||
Y: 47
|
Y: 76
|
||||||
Width: PARENT_RIGHT - 40
|
Width: PARENT_RIGHT - 40
|
||||||
Height: 474
|
Height: 474
|
||||||
Children:
|
Children:
|
||||||
@@ -56,9 +56,30 @@ Background@MAPCHOOSER_PANEL:
|
|||||||
Y: PARENT_BOTTOM-10
|
Y: PARENT_BOTTOM-10
|
||||||
Align: Center
|
Align: Center
|
||||||
Font: Tiny
|
Font: Tiny
|
||||||
|
Label@FILTER_DESC:
|
||||||
|
X: PARENT_RIGHT - 467
|
||||||
|
Y: 48
|
||||||
|
Width: 60
|
||||||
|
Height: 24
|
||||||
|
Font: Bold
|
||||||
|
Align: Right
|
||||||
|
Text: Filter:
|
||||||
|
TextField@MAPFILTER_INPUT:
|
||||||
|
X: PARENT_RIGHT - 401
|
||||||
|
Y: 48
|
||||||
|
Width: 150
|
||||||
|
Height: 25
|
||||||
|
Label@FILTER_DESC_JOINER:
|
||||||
|
X: PARENT_RIGHT - 250
|
||||||
|
Y: 48
|
||||||
|
Width: 30
|
||||||
|
Height: 24
|
||||||
|
Font: Bold
|
||||||
|
Align: Center
|
||||||
|
Text: in
|
||||||
DropDownButton@GAMEMODE_FILTER:
|
DropDownButton@GAMEMODE_FILTER:
|
||||||
X: PARENT_RIGHT - 220
|
X: PARENT_RIGHT - 220
|
||||||
Y: 17
|
Y: 48
|
||||||
Width: 200
|
Width: 200
|
||||||
Height: 25
|
Height: 25
|
||||||
Button@RANDOMMAP_BUTTON:
|
Button@RANDOMMAP_BUTTON:
|
||||||
|
|||||||
Reference in New Issue
Block a user