From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Date: Wed, 19 Apr 2023 05:44:37 +0000 (-0700)
Subject: add search to marking editors (#15526)
X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=078963127bfa7b62924f2b2c480aba4cfddd5f86;p=space-station-14.git
add search to marking editors (#15526)
---
diff --git a/Content.Client/Humanoid/MarkingPicker.xaml b/Content.Client/Humanoid/MarkingPicker.xaml
index 193a8796cd..1928dd8716 100644
--- a/Content.Client/Humanoid/MarkingPicker.xaml
+++ b/Content.Client/Humanoid/MarkingPicker.xaml
@@ -5,23 +5,32 @@
-
-
+
+
+
+
+
+
+
+
-
-
+
+
+
-
-
-
+
+
+
+
-
+
+
diff --git a/Content.Client/Humanoid/MarkingPicker.xaml.cs b/Content.Client/Humanoid/MarkingPicker.xaml.cs
index 74f02128e5..9df4e28655 100644
--- a/Content.Client/Humanoid/MarkingPicker.xaml.cs
+++ b/Content.Client/Humanoid/MarkingPicker.xaml.cs
@@ -73,7 +73,7 @@ public sealed partial class MarkingPicker : Control
set
{
_ignoreSpecies = value;
- Populate();
+ Populate(CMarkingSearch.Text);
}
}
@@ -92,7 +92,7 @@ public sealed partial class MarkingPicker : Control
CurrentSkinColor = skinColor;
CurrentEyeColor = eyeColor;
- Populate();
+ Populate(CMarkingSearch.Text);
PopulateUsed();
}
@@ -109,7 +109,7 @@ public sealed partial class MarkingPicker : Control
CurrentSkinColor = skinColor;
CurrentEyeColor = eyeColor;
- Populate();
+ Populate(CMarkingSearch.Text);
PopulateUsed();
}
@@ -136,6 +136,8 @@ public sealed partial class MarkingPicker : Control
CMarkingRankUp.OnPressed += _ => SwapMarkingUp();
CMarkingRankDown.OnPressed += _ => SwapMarkingDown();
+
+ CMarkingSearch.OnTextChanged += args => Populate(args.Text);
}
private void SetupCategoryButtons()
@@ -174,7 +176,7 @@ public sealed partial class MarkingPicker : Control
return result;
}
- public void Populate()
+ public void Populate(string filter)
{
CMarkingsUnused.Clear();
_selectedUnusedMarking = null;
@@ -183,8 +185,12 @@ public sealed partial class MarkingPicker : Control
? _markingManager.MarkingsByCategory(_selectedMarkingCategory)
: _markingManager.MarkingsByCategoryAndSpecies(_selectedMarkingCategory, _currentSpecies);
- var sortedMarkings = markings.OrderBy(p => Loc.GetString(GetMarkingName(p.Value)));
- foreach (var (_, marking) in sortedMarkings)
+ var sortedMarkings = markings.Values.Where(m =>
+ m.ID.ToLower().Contains(filter.ToLower()) ||
+ GetMarkingName(m).ToLower().Contains(filter.ToLower())
+ ).OrderBy(p => Loc.GetString(GetMarkingName(p)));
+
+ foreach (var marking in sortedMarkings)
{
if (_currentMarkings.TryGetMarking(_selectedMarkingCategory, marking.ID, out _))
{
@@ -314,7 +320,7 @@ public sealed partial class MarkingPicker : Control
_currentMarkings = new(markingList, speciesPrototype.MarkingPoints, _markingManager, _prototypeManager);
_currentMarkings.EnsureSpecies(species, null, _markingManager);
- Populate();
+ Populate(CMarkingSearch.Text);
PopulateUsed();
}
@@ -331,7 +337,7 @@ public sealed partial class MarkingPicker : Control
{
CMarkingCategoryButton.SelectId(category.Id);
_selectedMarkingCategory = _markingCategories[category.Id];
- Populate();
+ Populate(CMarkingSearch.Text);
PopulateUsed();
UpdatePoints();
}
diff --git a/Content.Client/Humanoid/SingleMarkingPicker.xaml b/Content.Client/Humanoid/SingleMarkingPicker.xaml
index 2dfa661f58..c816c52e9c 100644
--- a/Content.Client/Humanoid/SingleMarkingPicker.xaml
+++ b/Content.Client/Humanoid/SingleMarkingPicker.xaml
@@ -5,15 +5,18 @@
-
-
-
+
+
+
+
+
+
diff --git a/Content.Client/Humanoid/SingleMarkingPicker.xaml.cs b/Content.Client/Humanoid/SingleMarkingPicker.xaml.cs
index d5603a9b70..be3130a58b 100644
--- a/Content.Client/Humanoid/SingleMarkingPicker.xaml.cs
+++ b/Content.Client/Humanoid/SingleMarkingPicker.xaml.cs
@@ -10,7 +10,7 @@ namespace Content.Client.Humanoid;
[GenerateTypedNameReferences]
public sealed partial class SingleMarkingPicker : BoxContainer
{
- [Dependency] private MarkingManager _markingManager = default!;
+ [Dependency] private readonly MarkingManager _markingManager = default!;
///
/// What happens if a marking is selected.
@@ -89,7 +89,7 @@ public sealed partial class SingleMarkingPicker : BoxContainer
if (!string.IsNullOrEmpty(_species))
{
- PopulateList();
+ PopulateList(Search.Text);
}
}
}
@@ -138,6 +138,11 @@ public sealed partial class SingleMarkingPicker : BoxContainer
{
OnSlotRemove!(_slot);
};
+
+ Search.OnTextChanged += args =>
+ {
+ PopulateList(args.Text);
+ };
}
public void UpdateData(List markings, string species, int totalPoints)
@@ -154,12 +159,12 @@ public sealed partial class SingleMarkingPicker : BoxContainer
return;
}
- PopulateList();
+ PopulateList(Search.Text);
PopulateColors();
PopulateSlotSelector();
}
- public void PopulateList()
+ public void PopulateList(string filter)
{
if (string.IsNullOrEmpty(_species))
{
@@ -176,7 +181,11 @@ public sealed partial class SingleMarkingPicker : BoxContainer
MarkingList.Clear();
- var sortedMarkings = _markingPrototypeCache.OrderBy(p => Loc.GetString($"marking-{p.Key}"));
+ var sortedMarkings = _markingPrototypeCache.Where(m =>
+ m.Key.ToLower().Contains(filter.ToLower()) ||
+ GetMarkingName(m.Value).ToLower().Contains(filter.ToLower())
+ ).OrderBy(p => Loc.GetString($"marking-{p.Key}"));
+
foreach (var (id, marking) in sortedMarkings)
{
var item = MarkingList.AddItem(Loc.GetString($"marking-{id}"), marking.Sprites[0].Frame0());
@@ -260,6 +269,7 @@ public sealed partial class SingleMarkingPicker : BoxContainer
private void PopulateSlotSelector()
{
SlotSelector.Visible = Slot >= 0;
+ Search.Visible = Slot >= 0;
AddButton.HorizontalExpand = Slot < 0;
RemoveButton.HorizontalExpand = Slot < 0;
AddButton.Disabled = PointsLeft == 0 && _totalPoints > -1 ;
@@ -281,4 +291,9 @@ public sealed partial class SingleMarkingPicker : BoxContainer
}
}
}
+
+ private string GetMarkingName(MarkingPrototype marking)
+ {
+ return Loc.GetString($"marking-{marking.ID}");
+ }
}
diff --git a/Resources/Locale/en-US/preferences/ui/markings-picker.ftl b/Resources/Locale/en-US/preferences/ui/markings-picker.ftl
index 53fee9dd74..ae7f401a4b 100644
--- a/Resources/Locale/en-US/preferences/ui/markings-picker.ftl
+++ b/Resources/Locale/en-US/preferences/ui/markings-picker.ftl
@@ -4,6 +4,7 @@ markings-add = Add Marking
markings-remove = Remove Marking
markings-rank-up = Up
markings-rank-down = Down
+markings-search = Search
marking-points-remaining = Markings left: {$points}
marking-used = {$marking-name}
marking-used-forced = {$marking-name} (Forced)