op: O,
}
-struct ApiPieceOpArgs<'a> {
- gs: &'a mut GameState,
- ipieces: &'a PiecesLoaded,
- player: PlayerId,
- piece: PieceId,
- p: &'a dyn Piece,
-}
-
trait ApiPieceOp: Debug {
#[throws(ApiPieceOpError)]
fn op(&self, a: ApiPieceOpArgs) -> PieceUpdate;
wrc: WhatResponseToClientOp,
}
#[throws(ApiPieceOpError)]
- fn op(&self, a: ApiPieceOpArgs) -> PieceUpdate {
- let ApiPieceOpArgs { gs,player,piece,p,ipieces, .. } = a;
+ fn op(&self, mut a: ApiPieceOpArgs) -> PieceUpdate {
+ let ApiPieceOpArgs { player,piece,p, .. } = a;
+ let gs = &mut a.gs;
'_normal_global_ops__not_loop: loop {
let pc = gs.pieces.byid_mut(piece)?;
let gpl = gs.players.byid_mut(player)?;
};
}
- p.ui_operation(gs, ipieces, player, piece, &self.opname, self.wrc)?
+ p.ui_operation(a, &self.opname, self.wrc)?
}
}
fn add_ui_operations(&self, _upd: &mut Vec<UoDescription>,
_gpc: &PieceState) { }
- fn ui_operation(&self,
- _gs: &mut GameState, _ipieces: &PiecesLoaded,
- _player: PlayerId, _piece: PieceId,
+ fn ui_operation(&self, _a: ApiPieceOpArgs<'_>,
_opname: &str, _wrc: WhatResponseToClientOp)
-> PieceUpdateResult {
throw!(OE::BadOperation)
fn itemname(&self) -> &str;
}
+#[derive(Debug)]
+pub struct ApiPieceOpArgs<'a> {
+ pub gs: &'a mut GameState,
+ pub ipieces: &'a PiecesLoaded,
+ pub player: PlayerId,
+ pub piece: PieceId,
+ pub p: &'a dyn Piece,
+}
+
#[derive(Debug,Clone)]
pub struct PieceRenderInstructions {
pub id: VisiblePieceId,
})
}
- fn ui_operation(&self, gs: &mut GameState, _ipieces: &PiecesLoaded,
- player: PlayerId, piece: PieceId,
+ fn ui_operation(&self, a: ApiPieceOpArgs<'_>,
opname: &str, wrc: WhatResponseToClientOp)
-> PieceUpdateResult {
+ let ApiPieceOpArgs { gs, player, piece, ..} = a;
let gplayers = &mut gs.players;
let gpc = gs.pieces.byid_mut(piece)?;
let xdata = gpc.xdata.get_mut::<HandState>()