pub mod animation;
pub mod ecs;
pub mod entity_builder;
pub mod group;
pub mod key_code;
pub mod particles;
pub mod pathfinding;
pub mod run;
pub mod systems;
pub mod timer;
pub mod tween;
pub mod ui;

#[cfg(feature = "tui")]
pub mod backend;

#[cfg(feature = "terminal")]
pub mod terminal;

pub mod prelude {
    pub use crate::tui::animation::animation_system;
    pub use crate::tui::ecs::commands::{CommandQueue, WorldCommand};
    pub use crate::tui::ecs::components::*;
    pub use crate::tui::ecs::events::{EventBus, InputEvent, Message};
    pub use crate::tui::ecs::resources::*;
    pub use crate::tui::ecs::world::*;
    pub use crate::tui::entity_builder::EntityBuilder;
    pub use crate::tui::group::EntityGroup;
    pub use crate::tui::key_code::KeyCode;
    pub use crate::tui::particles::{ParticleConfig, ParticleEmitter};
    pub use crate::tui::pathfinding::astar;
    pub use crate::tui::run::State;
    #[cfg(feature = "tui")]
    pub use crate::tui::run::launch;
    pub use crate::tui::systems::{
        Contact, cascade_despawn, collision_pairs, movement_system, parent_transform_system,
        resolve_collision, resolve_collision_static,
    };
    #[cfg(all(feature = "terminal", not(feature = "tui")))]
    pub use crate::tui::terminal::run::launch;
    pub use crate::tui::timer::Timer;
    pub use crate::tui::tween::{Easing, Tween};
    pub use crate::tui::ui::{Menu, MenuColors, ProgressBar, ProgressBarColors, word_wrap};
    pub use freecs::Entity;
}
