impl PieceBaseTrait for Clock {
fn nfaces(&self) -> RawFaceId { 1 }
+
+ fn itemname(&self) -> &str { "chess-clock" }
}
#[typetag::serde(name="ChessClock")]
let state = gpc.xdata_mut(|| State::new(&self.spec))?;
state.do_start_or_stop(piece, None, None, held, &self.spec, ig)?;
}
-
- fn itemname(&self) -> &str { "chess-clock" }
}
impl PieceBaseTrait for Deck {
fn nfaces(&self) -> RawFaceId { 1 }
+
+ delegate!{
+ to self.shape {
+ fn itemname(&self) -> &str;
+ }
+ }
}
#[typetag::serde]
}.into()
}
- delegate!{
- to self.shape {
- fn itemname(&self) -> &str;
- }
- }
-
#[throws(InternalError)]
fn add_ui_operations(&self, _: ShowUnocculted, upd: &mut Vec<UoDescription>,
gs: &GameState, gpc: &GPiece) {
pub trait PieceBaseTrait: OutlineTrait + Send + Debug + 'static {
/// By convention, occult face is nfaces-1
fn nfaces(&self) -> RawFaceId;
+
+ fn itemname(&self) -> &str;
}
#[typetag::serde] // usual variable: p
ExecuteGameChangeUpdates{ pcs: vec![], log: vec![], raw: None }
}
- fn itemname(&self) -> &str;
fn sortkey(&self) -> Option<&str> { None }
fn occultation_notify_hook(&self, _piece: PieceId) -> UnpreparedUpdates {
impl PieceBaseTrait for Hand {
fn nfaces(&self) -> RawFaceId { 1 }
+
+ delegate!{
+ to self.shape {
+ fn itemname(&self) -> &str;
+ }
+ }
}
#[typetag::serde]
self.behaviour.describe_html_inner(xdata)
}
- delegate!{
- to self.shape {
- fn itemname(&self) -> &str;
- }
- }
-
#[throws(InternalError)]
fn add_ui_operations(&self, _: ShowUnocculted, upd: &mut Vec<UoDescription>,
_gs: &GameState, gpc: &GPiece) {
impl PieceBaseTrait for SimpleShape {
fn nfaces(&self) -> RawFaceId { self.count_faces() }
+
+ fn itemname(&self) -> &str { self.itemname() }
}
#[typetag::serde]
};
r
}
-
- fn itemname(&self) -> &str { self.itemname() }
}
#[typetag::serde]
#[derive(Debug,Serialize,Deserialize)]
struct ItemInertForOcculted {
+ itemname: Arc<GoodItemName>,
desc: Html,
svgd: Arc<Html>,
xform: FaceTransform,
}}}
impl PieceBaseTrait for ItemInertForOcculted {
fn nfaces(&self) -> RawFaceId { 1 }
+ fn itemname(&self) -> &str { &self.itemname.as_str() }
}
#[typetag::serde(name="Lib")]
impl InertPieceTrait for ItemInertForOcculted {
+ self.back.iter().count())
.try_into().unwrap()
}
+
+ fn itemname(&self) -> &str { &self.itemname }
}
#[typetag::serde(name="Lib")]
self.describe_face(gpc.face)?
}
- fn itemname(&self) -> &str { &self.itemname }
fn sortkey(&self) -> Option<&str> { self.sort.as_ref().map(AsRef::as_ref) }
}
}).clone()?;
let it = Arc::new(ItemInertForOcculted {
svgd,
+ itemname: occ_name.clone().into_inner(),
xform: occ.xform.clone(),
desc: occ.desc.clone(),
outline: occ.outline.clone(),