1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
use std::error::Error; use serde_json::Value; use serde::Serialize; use serde::de::DeserializeOwned; use state::*; use bot::*; pub trait UserFlow<T: Default + Clone + Serialize + DeserializeOwned> { fn initial_state(&self, seed: Option<u128>) -> T; fn list_moves(&self) -> Vec<&'static str> { vec![] } fn end_turn_if(&self, _: &UserState<T>) -> bool { false } fn end_game_if(&self, _: &UserState<T>) -> Option<(Option<Score>, Value)> { None } fn on_turn_begin(&self, state: &mut UserState<T>) -> Result<(), Box<Error>> { Ok(()) } fn on_turn_end(&self, state: &mut UserState<T>) -> Result<(), Box<Error>> { Ok(()) } fn on_move(&self, state: &mut UserState<T>, _: &Move) -> Result<(), Box<Error>> { Ok(()) } fn get_current_players(&self, _: &UserState<T>) -> Option<Vec<u16>> { None } fn allowed_moves(&self, _: &UserState<T>, _: u16) -> Option<Vec<&str>> { None } fn optimistic_update(&self, _: &UserState<T>, _: &Move) -> bool { true } fn player_filter(&self) -> Option<fn(&T, u16) -> T> { None } fn make_move(&self, state: &mut UserState<T>, game_move: &Move) -> Result<(), Box<Error>>; }