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 {}