pub mod cards;
pub use cards::{
AddCard, Card, CardCollection, CardFaces, CardHand, Deck, Hand, Pile, Rank, Suit, TakeCard,
};
pub mod dice;
pub use dice::{Die, DieResult, Rolls};
pub mod dominos;
pub use dominos::{BonePile, Domino, DominoHand, MAX_PIPS, Train};
pub mod metered_resource;
pub use metered_resource::MeteredResource;
pub mod refilling_pool;
pub use refilling_pool::RefillingPool;
pub mod spinners;
pub use spinners::{Spinner, Wedge, wedges_from_tuples, wedges_from_values};
pub mod gameerror;
pub use gameerror::{
CardError, DiceError, DominoError, GameError, GridError, PathfindingError, RefillingPoolError,
SpinnerError, ValueError,
};
pub mod grid;
pub use grid::{Grid, GridSize, GridTopology, Point, PointDelta};
pub mod fov;
pub use fov::{
BlockingRect, FovMap, RectangleFov, perimeter_raycasting, perimeter_raycasting_into,
rectangle_based_fov, rectangle_based_fov_into, recursive_shadowcasting,
recursive_shadowcasting_into,
};
pub mod ordering;
pub use ordering::{
AscendingOrder, DescendingOrder, Max, MaxPriorityQ, Min, MinPriorityQ, PriorityQueue,
RankedOrder,
};
pub mod pathfinding;
pub use pathfinding::{
Cost, HeuristicWeight, MoveSet, Path, SearchMap, a_star, a_star_weighted,
a_star_weighted_with_topology, a_star_with_topology, dijkstra_map, dijkstra_map_with_topology,
path_from_search_map,
};
pub type GameResult<T> = Result<T, GameError>;
#[macro_export]
macro_rules! ensure {
($cond:expr, $err:expr) => {
if !$cond {
return Err($err.into());
}
};
}