use bevy::prelude::*;
#[cfg(test)]
use mortar_compiler::Node;
#[macro_use]
mod debug;
mod asset;
mod audio;
mod binder;
mod dialogue;
mod dialogue_state;
mod eval;
mod events;
mod runtime;
mod system;
mod variable_state;
#[cfg(test)]
mod tests;
pub use asset::{MortarAsset, MortarAssetLoader};
pub use audio::MortarAudioSettings;
pub use bevy_mortar_bond_macros::{MortarFunctions, mortar_functions};
pub use binder::{
MortarBoolean, MortarFunctionRegistry, MortarNumber, MortarString, MortarValue, MortarVoid,
};
pub use dialogue::{
CachedCondition, MortarDialoguePlugin, MortarDialogueSystemSet, MortarDialogueText,
MortarDialogueVariables, MortarEventBinding, MortarGameEvent, MortarRunsExecuting,
MortarTextTarget, evaluate_condition_cached,
};
pub use dialogue_state::{
DialogueRunDescriptor, DialogueRunItem, DialogueRunKind, DialogueState, TextData,
};
pub use eval::{evaluate_condition, evaluate_if_condition, process_interpolated_text};
pub use events::{MortarDialogueFinished, MortarEvent, MortarEventAction, MortarEventTracker};
pub use runtime::{MortarRegistry, MortarRuntime};
pub use variable_state::{MortarVariableState, MortarVariableValue};
pub use mortar_compiler::Event as MortarTextEvent;
pub mod prelude {
pub use crate::{
MortarAudioSettings, MortarDialoguePlugin, MortarDialogueSystemSet, MortarDialogueText,
MortarDialogueVariables, MortarEventBinding, MortarFunctionRegistry, MortarGameEvent,
MortarPlugin, MortarRunsExecuting, MortarTextTarget, MortarValue,
};
}
pub struct MortarPlugin;
impl Plugin for MortarPlugin {
fn build(&self, app: &mut App) {
app.init_asset::<MortarAsset>()
.init_asset_loader::<MortarAssetLoader>()
.init_resource::<MortarRegistry>()
.init_resource::<MortarRuntime>()
.add_message::<MortarEvent>()
.add_message::<MortarDialogueFinished>()
.add_systems(
Update,
(
system::process_mortar_events_system,
system::check_pending_start_system,
system::handle_pending_jump_system,
)
.chain(),
);
}
}