chiark / gitweb /
Plumb sortkey through PieceTrait to otterlib
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 6 Apr 2021 19:07:10 +0000 (20:07 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 6 Apr 2021 19:22:04 +0000 (20:22 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/gamestate.rs
src/shapelib.rs

index cb611ca3a08a9c959bd2da875095529fd6418cc5..544a84e70a3aa71bc8afeadfb217f7015201c445 100644 (file)
@@ -210,6 +210,7 @@ pub trait PieceTrait: OutlineTrait + Send + Debug + 'static {
   }
 
   fn itemname(&self) -> &str;
+  fn sortkey(&self) -> Option<&str> { None }
 
   fn occultation_notify_hook(&self, _piece: PieceId) -> UnpreparedUpdates {
     None
index ce7abd87d1f8fc61a43a9618323052672433744e..8e792fd67327fa50d81c72e320f81da52df039fb 100644 (file)
@@ -201,6 +201,7 @@ impl OccultedPieceTrait for ItemOccultable {
 #[derive(Debug,Clone,Serialize,Deserialize,Eq,PartialEq,Ord,PartialOrd)]
 pub struct ItemEnquiryData {
   pub itemname: GoodItemName,
+  pub sortkey: Option<String>,
   pub f0desc: Html,
   pub f0bbox: Rect,
 }
@@ -304,6 +305,7 @@ impl PieceTrait for Item {
   }
 
   fn itemname(&self) -> &str { &self.itemname }
+  fn sortkey(&self) -> Option<&str> { self.sort.as_ref().map(AsRef::as_ref) }
 }
 
 #[typetag::serde(name="LibItem")]
@@ -474,6 +476,7 @@ impl Contents {
       let f0bbox = loaded.bbox_approx()?;
       let ier = ItemEnquiryData {
         itemname: k.to_owned(),
+        sortkey: v.sort.to_owned(),
         f0bbox,
         f0desc: loaded.describe_face(default())?,
       };