bevy_yarnspinner 0.7.0

Bevy plugin for Yarn Spinner for Rust, friendly tool for writing game dialogue
Documentation
use crate::prelude::*;
use crate::project::YarnProjectConfigToLoad;
use bevy::prelude::*;

pub(crate) fn panic_on_err(In(result): In<SystemResult>) {
    if let Err(e) = result {
        panic!("Error in Yarn Spinner plugin: {e}");
    }
}

pub(crate) fn log_error(In(result): In<SystemResult>) {
    if let Err(e) = result {
        error!("Error in Yarn Spinner plugin: {e}");
    }
}

pub(crate) fn in_development(
    project: Option<Res<YarnProject>>,
    project_to_load: Option<Res<YarnProjectConfigToLoad>>,
) -> bool {
    if let Some(project) = project {
        return project.development_file_generation == DevelopmentFileGeneration::Full;
    }
    if let Some(project_to_load) = project_to_load {
        return project_to_load.development_file_generation == DevelopmentFileGeneration::Full;
    }
    false
}

pub(crate) fn has_localizations(
    project: Option<Res<YarnProject>>,
    project_to_load: Option<Res<YarnProjectConfigToLoad>>,
) -> bool {
    if let Some(project) = project {
        return project.localizations.is_some();
    }
    if let Some(project_to_load) = project_to_load {
        return matches!(project_to_load.localizations, Some(Some(_)));
    }
    false
}

pub(crate) fn events_in_queue<T: Message>() -> impl FnMut(MessageReader<T>) -> bool + Clone {
    move |reader: MessageReader<T>| !reader.is_empty()
}