turnbase_simulator/lib.rs
1//! Interactive human client for [`turnbase`]: a fixed [`retroglyph`](retroglyph_core)
2//! terminal dashboard over a [`turnbase_match::Simulator`].
3//!
4//! The turn loop itself ([`Simulator`], [`PlayerAgent`]) lives in
5//! `turnbase-match` and has no rendering in its call path; this crate adds the
6//! human-facing layer. [`SimulationRunner`] binds straight to `retroglyph-core`
7//! primitives (`Terminal`, `Rect`, `print`) rather than introducing a layout
8//! engine or widget abstraction of its own; a game opts in by implementing
9//! [`PrintableGame`] and drawing into the rect it is handed.
10//!
11//! [`Simulator`] and [`PlayerAgent`] are re-exported so a dashboard user builds
12//! a match without depending on `turnbase-match` directly.
13
14mod dashboard;
15mod session;
16mod ui;
17
18#[cfg(feature = "crossterm")]
19pub use session::run_session;
20pub use session::{BotOption, SessionApp, ismcts_bot, mcts_bot, random_bot, standard_bots};
21pub use turnbase_match::{PlayerAgent, Simulator};
22#[cfg(feature = "crossterm")]
23pub use ui::run;
24pub use ui::{PrintableGame, SimulationRunner};