bevy_mistUI 0.1.3

Procedural mist and smoke-ring borders for Bevy UI.
use crate::{
    mist_panel, spawn_mist_button, spawn_mist_dialog, spawn_mist_dropdown, spawn_mist_input_field,
    spawn_mist_trigger, MistInputField,
};
use bevy::prelude::*;

pub trait MistUiFactory {
    fn spawn_button<S: Into<String>>(
        &self,
        commands: &mut Commands,
        font: &Handle<Font>,
        label: S,
        width: f32,
    ) -> Entity {
        spawn_mist_button(commands, font, label, width)
    }

    fn spawn_trigger<S: Into<String>>(
        &self,
        commands: &mut Commands,
        font: &Handle<Font>,
        label: S,
        width: f32,
    ) -> Entity {
        spawn_mist_trigger(commands, font, label, width)
    }

    fn spawn_dropdown<I, S>(
        &self,
        commands: &mut Commands,
        font: &Handle<Font>,
        width: f32,
        options: I,
    ) -> Entity
    where
        I: IntoIterator<Item = S>,
        S: Into<String>,
    {
        spawn_mist_dropdown(commands, font, width, options)
    }

    fn spawn_input_field(
        &self,
        commands: &mut Commands,
        font: &Handle<Font>,
        width: f32,
        field: MistInputField,
    ) -> Entity {
        spawn_mist_input_field(commands, font, width, field)
    }

    fn spawn_dialog<S1: Into<String>, S2: Into<String>>(
        &self,
        commands: &mut Commands,
        font: &Handle<Font>,
        title: S1,
        body: S2,
        width: f32,
    ) -> Entity {
        spawn_mist_dialog(commands, font, title, body, width)
    }

    fn spawn_panel(&self, commands: &mut Commands) -> Entity {
        commands.spawn(mist_panel()).id()
    }
}

#[derive(Clone, Copy, Debug, Default)]
pub struct StandardMistUiFactory;

impl MistUiFactory for StandardMistUiFactory {}