nightshade-editor 0.13.1

An interactive editor for the Nightshade game engine
#[cfg(not(target_arch = "wasm32"))]
use crate::mosaic::ToastKind;
#[cfg(not(target_arch = "wasm32"))]
use nightshade::prelude::*;

#[cfg(not(target_arch = "wasm32"))]
pub fn set_as_startup_project(
    project_edit: &crate::app_context::ProjectEditState,
    settings: &mut crate::mosaic::Settings<crate::settings::EditorSettingsData>,
    toasts: &mut crate::mosaic::Toasts,
) {
    if let Some(path) = &project_edit.current_path {
        let path_str = path
            .canonicalize()
            .ok()
            .and_then(|canonical| canonical.to_str().map(|str| str.to_string()))
            .unwrap_or_else(|| path.display().to_string());
        settings.data.startup_project = Some(path_str.clone());
        if let Err(error) = settings.save() {
            tracing::error!("Failed to save settings: {error}");
        }
        toasts.push(ToastKind::Success, "Set as startup project", 3.0);
    }
}

#[cfg(not(target_arch = "wasm32"))]
pub fn unset_startup_project(
    settings: &mut crate::mosaic::Settings<crate::settings::EditorSettingsData>,
    toasts: &mut crate::mosaic::Toasts,
) {
    settings.data.startup_project = None;
    if let Err(error) = settings.save() {
        tracing::error!("Failed to save settings: {error}");
    }
    toasts.push(ToastKind::Success, "Unset startup project", 3.0);
}