From a648c68233f2e101473b474bfd21b42ef8aa382c Mon Sep 17 00:00:00 2001 From: Hugo Famechon <15042998-Fengo@users.noreply.gitlab.com> Date: Wed, 5 Jul 2023 19:07:16 +0000 Subject: [PATCH] Sort items in inventory by quantity --- CHANGELOG.md | 1 + assets/voxygen/i18n/en/hud/bag.ftl | 1 + assets/voxygen/i18n/fr/hud/bag.ftl | 1 + common/src/comp/inventory/mod.rs | 6 +++++- voxygen/src/hud/bag.rs | 1 + 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b730c512a2..d26f0feb75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Esperanto translation +- Item quantity sort in player inventory. ### Changed diff --git a/assets/voxygen/i18n/en/hud/bag.ftl b/assets/voxygen/i18n/en/hud/bag.ftl index 4c218addc9..2504109630 100644 --- a/assets/voxygen/i18n/en/hud/bag.ftl +++ b/assets/voxygen/i18n/en/hud/bag.ftl @@ -40,3 +40,4 @@ hud-bag-sort_by_name = Sort by Name hud-bag-sort_by_quality = Sort by Quality hud-bag-sort_by_category = Sort by Category hud-bag-sort_by_tag = Sort by Tag +hud-bag-sort_by_quantity = Sort by Quantity diff --git a/assets/voxygen/i18n/fr/hud/bag.ftl b/assets/voxygen/i18n/fr/hud/bag.ftl index ed05e87989..d631db4456 100644 --- a/assets/voxygen/i18n/fr/hud/bag.ftl +++ b/assets/voxygen/i18n/fr/hud/bag.ftl @@ -40,3 +40,4 @@ hud-bag-sort_by_name = Trier par Nom hud-bag-sort_by_quality = Trier par Qualité hud-bag-sort_by_category = Trier par Catégorie hud-bag-sort_by_tag = Trier par Tag +hud-bag-sort_by_quantity = Trier par Quantité diff --git a/common/src/comp/inventory/mod.rs b/common/src/comp/inventory/mod.rs index 53b3ddfffb..f39f3d0faf 100644 --- a/common/src/comp/inventory/mod.rs +++ b/common/src/comp/inventory/mod.rs @@ -61,6 +61,7 @@ pub enum InventorySortOrder { Quality, Category, Tag, + Amount, } impl InventorySortOrder { @@ -69,7 +70,8 @@ impl InventorySortOrder { InventorySortOrder::Name => InventorySortOrder::Quality, InventorySortOrder::Quality => InventorySortOrder::Tag, InventorySortOrder::Tag => InventorySortOrder::Category, - InventorySortOrder::Category => InventorySortOrder::Name, + InventorySortOrder::Category => InventorySortOrder::Amount, + InventorySortOrder::Amount => InventorySortOrder::Name, } } } @@ -217,6 +219,8 @@ impl Inventory { &a.tags().first().map_or("", |tag| tag.name()), &b.tags().first().map_or("", |tag| tag.name()), ), + // Amount is sorted in reverse since we want high amounts items first + InventorySortOrder::Amount => Ord::cmp(&b.amount(), &a.amount()), }); self.push_all(items.into_iter()).expect( diff --git a/voxygen/src/hud/bag.rs b/voxygen/src/hud/bag.rs index 369ad1a933..10db81c644 100644 --- a/voxygen/src/hud/bag.rs +++ b/voxygen/src/hud/bag.rs @@ -915,6 +915,7 @@ impl<'a> Widget for Bag<'a> { InventorySortOrder::Quality => i18n.get_msg("hud-bag-sort_by_quality"), InventorySortOrder::Category => i18n.get_msg("hud-bag-sort_by_category"), InventorySortOrder::Tag => i18n.get_msg("hud-bag-sort_by_tag"), + InventorySortOrder::Amount => i18n.get_msg("hud-bag-sort_by_quantity"), }), "", &tooltip,