pub mod action;
pub mod agent;
pub mod color;
pub mod direction;
pub mod dynamics;
pub mod entity;
pub mod grid;
pub mod observation;
pub mod render;
pub mod reward;
pub mod state;
pub use action::GridAction;
pub use agent::AgentState;
pub use color::Color;
pub use direction::Direction;
pub use dynamics::{StepOutcome, apply_action};
pub use entity::{DoorState, Entity};
pub use grid::{Grid, egocentric_view};
pub use observation::{GridObservation, OBS_CHANNELS, VIEW_SIZE};
pub use render::render_ascii;
pub use reward::success_reward;
pub use state::GridState;
use rlevo_core::environment::SnapshotBase;
use rlevo_core::reward::ScalarReward;
pub type GridSnapshot = SnapshotBase<3, GridObservation, ScalarReward>;
#[must_use]
pub fn build_snapshot(state: &GridState, reward: f32, done: bool) -> GridSnapshot {
use rlevo_core::base::State as _;
if done {
SnapshotBase::terminated(state.observe(), ScalarReward::new(reward))
} else {
SnapshotBase::running(state.observe(), ScalarReward::new(reward))
}
}