use crate::imports::*;
+//---------- Table TOML file ----------
+
#[derive(Debug,Serialize,Deserialize)]
pub struct TableSpec {
pub players : Vec<PlayerSpec>,
pub access: Option<Box<dyn PlayerAccessSpec>>,
}
+#[derive(Debug,Serialize,Deserialize)]
+struct FixedToken { token: RawToken }
+
+#[derive(Debug,Serialize,Deserialize)]
+struct TokenOnStdout;
+
+//---------- Game TOML file ----------
+
#[derive(Debug,Serialize,Deserialize)]
pub struct GameSpec {
pub table_size : Option<Pos>,
pub info : Box<dyn PieceSpec>,
}
+//---------- Implementation ----------
+
#[typetag::serde(tag="access")]
pub trait PlayerAccessSpec : Debug {
fn token_mgi(&self, _player: PlayerId) -> Option<MgmtGameInstruction> {
-> Result<(),AE>;
}
-#[derive(Debug,Serialize,Deserialize)]
-struct FixedToken { token: RawToken }
-
#[typetag::serde]
impl PlayerAccessSpec for FixedToken {
fn token_mgi(&self, player: PlayerId) -> Option<MgmtGameInstruction> {
fn deliver_tokens(&self, _ps: &PlayerSpec, _tokens: &[RawToken]) { }
}
-#[derive(Debug,Serialize,Deserialize)]
-struct TokenOnStdout;
-
#[typetag::serde]
impl PlayerAccessSpec for TokenOnStdout {
#[throws(AE)]