diff --git a/scenes/map_browser.tscn b/scenes/map_browser.tscn index 7081f55e..609bb9fa 100644 --- a/scenes/map_browser.tscn +++ b/scenes/map_browser.tscn @@ -246,7 +246,7 @@ popup/item_0/text = "Recently added" popup/item_0/id = 0 popup/item_1/text = "Length" popup/item_1/id = 2 -popup/item_2/text = "Notes" +popup/item_2/text = "Difficulty" popup/item_2/id = 2 [node name="Direction" type="Button" parent="Holder/Background/Layout/TopBarBackground/Margin/TopBar/SearchBar" unique_id=1884251797] @@ -275,29 +275,33 @@ layout_mode = 2 size_flags_horizontal = 3 text = "Difficulties" flat = false -item_count = 5 -popup/item_0/text = "Easy" +item_count = 6 +popup/item_0/text = "N/A" popup/item_0/checkable = 1 popup/item_0/checked = true popup/item_0/id = 0 -popup/item_1/text = "Medium" +popup/item_1/text = "Easy" popup/item_1/checkable = 1 popup/item_1/checked = true popup/item_1/id = 1 -popup/item_2/text = "Hard" +popup/item_2/text = "Medium" popup/item_2/checkable = 1 popup/item_2/checked = true popup/item_2/id = 2 -popup/item_3/text = "Insane" +popup/item_3/text = "Hard" popup/item_3/checkable = 1 popup/item_3/checked = true popup/item_3/id = 3 -popup/item_4/text = "Illogical" +popup/item_4/text = "Insane" popup/item_4/checkable = 1 popup/item_4/checked = true popup/item_4/id = 4 +popup/item_5/text = "Illogical" +popup/item_5/checkable = 1 +popup/item_5/checked = true +popup/item_5/id = 5 -[node name="Ranking" type="OptionButton" parent="Holder/Background/Layout/TopBarBackground/Margin/TopBar/Filters" unique_id=330241703] +[node name="Status" type="OptionButton" parent="Holder/Background/Layout/TopBarBackground/Margin/TopBar/Filters" unique_id=330241703] layout_mode = 2 size_flags_horizontal = 3 alignment = 1 @@ -314,7 +318,7 @@ popup/item_2/id = 2 layout_mode = 2 size_flags_horizontal = 3 alignment = 1 -selected = 0 +selected = 2 item_count = 3 popup/item_0/text = "Online" popup/item_0/id = 1 @@ -527,12 +531,12 @@ label_settings = SubResource("LabelSettings_vr0hc") layout_mode = 2 mouse_filter = 2 -[node name="RankingPill" type="PanelContainer" parent="Holder/Background/Layout/Results/RowsMargin/Rows/MapCardTemplate/Row/Map/Content/Info/Bottom" unique_id=359816098] +[node name="StatusPill" type="PanelContainer" parent="Holder/Background/Layout/Results/RowsMargin/Rows/MapCardTemplate/Row/Map/Content/Info/Bottom" unique_id=359816098] layout_mode = 2 mouse_filter = 2 theme_override_styles/panel = SubResource("StyleBoxFlat_ikspe") -[node name="Ranking" type="Label" parent="Holder/Background/Layout/Results/RowsMargin/Rows/MapCardTemplate/Row/Map/Content/Info/Bottom/RankingPill" unique_id=1500989616] +[node name="Status" type="Label" parent="Holder/Background/Layout/Results/RowsMargin/Rows/MapCardTemplate/Row/Map/Content/Info/Bottom/StatusPill" unique_id=1500989616] layout_mode = 2 text = "RANKED" label_settings = SubResource("LabelSettings_10mjv") diff --git a/scripts/api/QueryParameters.cs b/scripts/api/QueryParameters.cs index 04828d9d..947fac27 100644 --- a/scripts/api/QueryParameters.cs +++ b/scripts/api/QueryParameters.cs @@ -11,4 +11,6 @@ public class MapQueryParameters : QueryParameters public string Query { get; set; } public string Mapper { get; set; } public string Artist { get; set; } + public int[] Difficulties { get; set; } = []; + public string[] Status { get; set; } = []; } diff --git a/scripts/api/endpoints/Maps.cs b/scripts/api/endpoints/Maps.cs index 8b3d8b53..46a3010a 100644 --- a/scripts/api/endpoints/Maps.cs +++ b/scripts/api/endpoints/Maps.cs @@ -19,6 +19,10 @@ public static async Task Search(MapQueryParameters queryParameters query["mapper"] = queryParameters.Mapper; if (!string.IsNullOrEmpty(queryParameters.Artist)) query["artist"] = queryParameters.Artist; + if (queryParameters.Difficulties.Length > 0) + query["difficulty"] = string.Join(",", queryParameters.Difficulties); + if (queryParameters.Status.Length > 0) + query["status"] = string.Join(",", queryParameters.Status); string url = $"/maps?{query}"; diff --git a/scripts/scenes/MapBrowser.cs b/scripts/scenes/MapBrowser.cs index 72cd26a3..96bb4609 100644 --- a/scripts/scenes/MapBrowser.cs +++ b/scripts/scenes/MapBrowser.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; @@ -16,6 +17,12 @@ public partial class MapBrowser : Control private VBoxContainer topBar; private HBoxContainer searchBar; private LineEdit search; + private OptionButton sort; + private Button direction; + private Button refresh; + private MenuButton difficulty; + private OptionButton status; + private OptionButton installed; private Timer searchTimer; private HBoxContainer filters; private ScrollContainer results; @@ -32,6 +39,12 @@ public override void _Ready() topBar = holder.GetNode("Background/Layout/TopBarBackground/Margin/TopBar"); searchBar = topBar.GetNode("SearchBar"); search = searchBar.GetNode("Search"); + sort = searchBar.GetNode("Sort"); + direction = searchBar.GetNode