chiark / gitweb /
deck, hand: Do not move unless Wresting
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 7 Apr 2021 16:39:12 +0000 (17:39 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 7 Apr 2021 16:39:12 +0000 (17:39 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/deck.rs
src/hand.rs

index 8009f7e0efcd732f735246df44f013f572adb847..80b233f0dcfa12512e0357d7e8ed74d995b05e03 100644 (file)
@@ -37,7 +37,7 @@ impl OutlineTrait for Deck {
 #[typetag::serde(name="PickupDeck")]
 impl PieceSpec for piece_specs::Deck {
   #[throws(SpecError)]
-  fn load(&self, _: usize, _: &mut GPiece,
+  fn load(&self, _: usize, gpc: &mut GPiece,
           _pcaliases: &PieceAliases, _ir: &InstanceRef)
           -> PieceSpecLoaded {
     let common = SimpleCommon {
@@ -58,6 +58,7 @@ impl PieceSpec for piece_specs::Deck {
     if shape.count_faces() != 2 {
       throw!(SpE::WrongNumberOfFaces);
     }
+    gpc.moveable = PieceMoveable::IfWresting;
     let p = Box::new(Deck {
       shape,
       label: self.label.load()?,
index e9de19eb2dcb75ab78c02010c303631a0efc7f19..b94cf138866179e3cb372aebfa6654d2cc6c2a54 100644 (file)
@@ -119,9 +119,10 @@ impl piece_specs::OwnedCommon {
 #[typetag::serde]
 impl PieceSpec for piece_specs::Hand {
   #[throws(SpecError)]
-  fn load(&self, _: usize, _: &mut GPiece,
+  fn load(&self, _: usize, gpc: &mut GPiece,
           _pcaliases: &PieceAliases, _ir: &InstanceRef)
           -> PieceSpecLoaded {
+    gpc.moveable = PieceMoveable::IfWresting;
     self.c.load(Behaviour::Hand)?
   }
 }