Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
ServerFailure(_) => Status::InternalServerError,
NoClient | NoPlayer(_) | GameBeingDestroyed
=> Status::NotFound,
- OE::PieceHeld |
+ OE::PieceHeld | OE::PieceImmoveable |
OE::OverlappingOccultation | OE::Occultation |
OE::BadPieceStateForOperation
=> Status::Conflict,
// again
if gpc.held != Some(player) { throw!(OnlineError::PieceHeld) }
if gpc.occult.is_active() { throw!(OE::Occultation) }
+ if matches_doesnot!(
+ gpc.moveable(),
+ = PieceMoveable::No,
+ ! PieceMoveable::Yes | PieceMoveable::IfWresting,
+ ) { throw!(OE::PieceImmoveable) }
}
}
#[error("referenced piece is gone (maybe race)")]
PieceHeld,
#[error("improper UI operation")]
+ PieceImmoveable,
+ #[error("improper UI operation")]
BadOperation,
#[error("overlapping occultation")]
OverlappingOccultation,