That was much easier than I expected it to be. I'm still going to alter how the `machine_ui_base` function works so that I don't have to remember to attach a button all the time.
91 lines
2.6 KiB
Rust
91 lines
2.6 KiB
Rust
use bevy::{color::palettes::css::*, prelude::*, ui::Val::*};
|
|
|
|
use crate::{
|
|
game::machines::*,
|
|
widgets::{CloseButton, machine_ui_base, spawn_big_red_button},
|
|
};
|
|
|
|
impl CuttingMachine {
|
|
pub fn spawn_cutter_machine_ui(mut commands: Commands) {
|
|
commands
|
|
.spawn((machine_ui_base("Cutting Machine"),))
|
|
.with_children(|commands| {
|
|
// Left panel. For fuel or machine stats or whatever.
|
|
commands.spawn((
|
|
Node {
|
|
padding: UiRect::all(Px(10.0)),
|
|
..default()
|
|
},
|
|
BackgroundColor(GREEN.into()),
|
|
Pickable::default(),
|
|
children![(Text::new("Uses: <n>"), TextColor(BLACK.into()),)],
|
|
));
|
|
|
|
// Center panel (placeholder for the Card view)
|
|
commands.spawn((
|
|
Node::default(),
|
|
BackgroundColor(BLUE.into()),
|
|
Pickable::default(),
|
|
children![(
|
|
Text::new("Card cut view placeholder"),
|
|
TextColor(MAGENTA.into()),
|
|
TextShadow::default(),
|
|
),],
|
|
));
|
|
// Right panel for the "CUT" button
|
|
commands
|
|
.spawn((
|
|
Node {
|
|
align_items: AlignItems::End,
|
|
..Default::default()
|
|
},
|
|
BackgroundColor(DARK_GRAY.into()),
|
|
Pickable::default(),
|
|
))
|
|
.with_children(|cmds| spawn_big_red_button(cmds, "CUT"));
|
|
});
|
|
}
|
|
}
|
|
|
|
impl RotatingMachine {
|
|
pub fn spawn_rotator_machine_ui(mut commands: Commands) {
|
|
commands
|
|
.spawn((machine_ui_base("Rotating Machine"),))
|
|
.with_children(|commands| {
|
|
commands.spawn(CloseButton::bundle(commands.target_entity()));
|
|
commands.spawn((
|
|
Node {
|
|
padding: UiRect::all(Px(10.0)),
|
|
..Default::default()
|
|
},
|
|
BackgroundColor(GREEN.into()),
|
|
Pickable::default(),
|
|
children![(Text::new("Uses: <n>"), TextColor(BLACK.into()))],
|
|
));
|
|
|
|
// Center panel (placeholder for input-output rotation)
|
|
commands.spawn((
|
|
Node::default(),
|
|
BackgroundColor(BLUE.into()),
|
|
Pickable::default(),
|
|
children![
|
|
Text::new("Card rotation side-by-side placeholder"),
|
|
TextColor(MAGENTA.into()),
|
|
],
|
|
));
|
|
|
|
// Right panel for the rotation controls
|
|
commands
|
|
.spawn((
|
|
Node {
|
|
align_items: AlignItems::End,
|
|
..Default::default()
|
|
},
|
|
BackgroundColor(DARK_GRAY.into()),
|
|
Pickable::default(),
|
|
))
|
|
.with_children(|cmds| spawn_big_red_button(cmds, "TURN"));
|
|
});
|
|
}
|
|
}
|