basic UI with belly

This commit is contained in:
Emerald 2023-08-09 02:28:31 -04:00
parent 92b9d8f752
commit 07233e0e12
Signed by: emerald
GPG Key ID: 420C9E1863CCB30F
6 changed files with 459 additions and 132 deletions

359
Cargo.lock generated
View File

@ -2,6 +2,12 @@
# It is not intended for manual editing.
version = 3
[[package]]
name = "Inflector"
version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
[[package]]
name = "ab_glyph"
version = "0.2.21"
@ -176,6 +182,12 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
[[package]]
name = "android-tzdata"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_log-sys"
version = "0.2.0"
@ -316,6 +328,62 @@ version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
[[package]]
name = "belly"
version = "0.2.0"
source = "git+https://github.com/jkb0o/belly#bbc2bbb43071cae3a50d81bd9965e11dbaa1d353"
dependencies = [
"belly_core",
"belly_macro",
"belly_widgets",
"bevy",
"embed-doc-image",
"tagstr",
]
[[package]]
name = "belly_core"
version = "0.2.0"
source = "git+https://github.com/jkb0o/belly#bbc2bbb43071cae3a50d81bd9965e11dbaa1d353"
dependencies = [
"bevy",
"bevy_stylebox",
"cssparser",
"itertools",
"lazy_static",
"roxmltree",
"smallvec",
"tagstr",
]
[[package]]
name = "belly_macro"
version = "0.2.0"
source = "git+https://github.com/jkb0o/belly#bbc2bbb43071cae3a50d81bd9965e11dbaa1d353"
dependencies = [
"belly_core",
"bevy",
"proc-macro2",
"procout",
"quote",
"syn 1.0.109",
"syn-rsx",
"toml",
]
[[package]]
name = "belly_widgets"
version = "0.2.0"
source = "git+https://github.com/jkb0o/belly#bbc2bbb43071cae3a50d81bd9965e11dbaa1d353"
dependencies = [
"ab_glyph",
"belly_core",
"belly_macro",
"bevy",
"itertools",
"tagstr",
]
[[package]]
name = "bevy"
version = "0.10.1"
@ -979,6 +1047,14 @@ dependencies = [
"thiserror",
]
[[package]]
name = "bevy_stylebox"
version = "0.2.0"
source = "git+https://github.com/jkb0o/belly#bbc2bbb43071cae3a50d81bd9965e11dbaa1d353"
dependencies = [
"bevy",
]
[[package]]
name = "bevy_tasks"
version = "0.10.1"
@ -1093,7 +1169,7 @@ dependencies = [
"ahash 0.7.6",
"bevy_utils_proc_macros",
"getrandom",
"hashbrown",
"hashbrown 0.12.3",
"instant",
"petgraph",
"thiserror",
@ -1310,6 +1386,7 @@ name = "cathode"
version = "0.1.0"
dependencies = [
"anyhow",
"belly",
"bevy",
"bevy_eventlistener",
"bevy_framepace",
@ -1359,6 +1436,21 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
[[package]]
name = "chrono"
version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"time 0.1.45",
"wasm-bindgen",
"winapi",
]
[[package]]
name = "cipher"
version = "0.4.4"
@ -1635,6 +1727,33 @@ dependencies = [
"typenum",
]
[[package]]
name = "cssparser"
version = "0.29.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa"
dependencies = [
"cssparser-macros",
"dtoa-short",
"itoa",
"matches",
"phf",
"proc-macro2",
"quote",
"smallvec",
"syn 1.0.109",
]
[[package]]
name = "cssparser-macros"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
dependencies = [
"quote",
"syn 2.0.18",
]
[[package]]
name = "d3d12"
version = "0.6.0"
@ -1705,12 +1824,39 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
[[package]]
name = "dtoa"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653"
[[package]]
name = "dtoa-short"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74"
dependencies = [
"dtoa",
]
[[package]]
name = "either"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
[[package]]
name = "embed-doc-image"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af36f591236d9d822425cb6896595658fa558fcebf5ee8accac1d4b92c47166e"
dependencies = [
"base64",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "encase"
version = "0.5.0"
@ -1933,7 +2079,7 @@ dependencies = [
"cfg-if",
"js-sys",
"libc",
"wasi",
"wasi 0.11.0+wasi-snapshot-preview1",
"wasm-bindgen",
]
@ -2100,7 +2246,7 @@ checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a"
dependencies = [
"bitflags",
"gpu-descriptor-types",
"hashbrown",
"hashbrown 0.12.3",
]
[[package]]
@ -2141,6 +2287,15 @@ dependencies = [
"serde",
]
[[package]]
name = "hashbrown"
version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
dependencies = [
"ahash 0.8.3",
]
[[package]]
name = "hassle-rs"
version = "0.9.0"
@ -2196,6 +2351,29 @@ dependencies = [
"digest",
]
[[package]]
name = "iana-time-zone"
version = "0.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613"
dependencies = [
"android_system_properties",
"core-foundation-sys 0.8.4",
"iana-time-zone-haiku",
"js-sys",
"wasm-bindgen",
"windows 0.48.0",
]
[[package]]
name = "iana-time-zone-haiku"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
dependencies = [
"cc",
]
[[package]]
name = "image"
version = "0.24.6"
@ -2222,7 +2400,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown",
"hashbrown 0.12.3",
]
[[package]]
@ -2288,6 +2466,15 @@ dependencies = [
"mach2",
]
[[package]]
name = "itertools"
version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "1.0.6"
@ -2520,6 +2707,12 @@ dependencies = [
"regex-automata",
]
[[package]]
name = "matches"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
[[package]]
name = "memchr"
version = "2.5.0"
@ -2600,7 +2793,7 @@ checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
dependencies = [
"libc",
"log",
"wasi",
"wasi 0.11.0+wasi-snapshot-preview1",
"windows-sys 0.48.0",
]
@ -3022,6 +3215,50 @@ dependencies = [
"indexmap",
]
[[package]]
name = "phf"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
dependencies = [
"phf_macros",
"phf_shared",
"proc-macro-hack",
]
[[package]]
name = "phf_generator"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
dependencies = [
"phf_shared",
"rand",
]
[[package]]
name = "phf_macros"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
dependencies = [
"phf_generator",
"phf_shared",
"proc-macro-hack",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "phf_shared"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
dependencies = [
"siphasher",
]
[[package]]
name = "pin-project"
version = "1.1.0"
@ -3076,6 +3313,12 @@ dependencies = [
"unicode-xid",
]
[[package]]
name = "ppv-lite86"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "proc-macro-crate"
version = "1.3.1"
@ -3101,6 +3344,19 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "procout"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d710f595d4e0a6df3265e2fc65731ee564ada41400628563fe635905ab70418"
dependencies = [
"Inflector",
"chrono",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "profiling"
version = "1.0.8"
@ -3131,11 +3387,35 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b"
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha",
"rand_core",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core",
]
[[package]]
name = "rand_core"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom",
]
[[package]]
name = "range-alloc"
@ -3307,6 +3587,15 @@ dependencies = [
"serde",
]
[[package]]
name = "roxmltree"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb6d47b59770b0ae88c7f270c68502832ec14d8c7ab5f7a584f204bb76dbfd8e"
dependencies = [
"xmlparser",
]
[[package]]
name = "rustc-demangle"
version = "0.1.23"
@ -3440,6 +3729,12 @@ version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f"
[[package]]
name = "siphasher"
version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
[[package]]
name = "slab"
version = "0.4.8"
@ -3566,6 +3861,17 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "syn-rsx"
version = "0.9.0"
source = "git+https://github.com/stoically/syn-rsx.git#149109f1420df7a11f5a69e4a9fb90bf57ec4f02"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
"thiserror",
]
[[package]]
name = "sysinfo"
version = "0.28.4"
@ -3591,6 +3897,15 @@ dependencies = [
"slotmap",
]
[[package]]
name = "tagstr"
version = "0.1.0"
source = "git+https://github.com/jkb0o/belly#bbc2bbb43071cae3a50d81bd9965e11dbaa1d353"
dependencies = [
"hashbrown 0.13.2",
"lazy_static",
]
[[package]]
name = "termcolor"
version = "1.2.0"
@ -3641,6 +3956,17 @@ dependencies = [
"weezl",
]
[[package]]
name = "time"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
dependencies = [
"libc",
"wasi 0.10.0+wasi-snapshot-preview1",
"winapi",
]
[[package]]
name = "time"
version = "0.3.22"
@ -3716,6 +4042,15 @@ dependencies = [
"tokio-stream",
]
[[package]]
name = "toml"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
dependencies = [
"serde",
]
[[package]]
name = "toml_datetime"
version = "0.6.2"
@ -3913,6 +4248,12 @@ dependencies = [
"winapi-util",
]
[[package]]
name = "wasi"
version = "0.10.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
@ -4468,6 +4809,12 @@ version = "0.8.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52839dc911083a8ef63efa4d039d1f58b5e409f923e44c80828f206f66e5541c"
[[package]]
name = "xmlparser"
version = "0.13.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd"
[[package]]
name = "zip"
version = "0.6.6"
@ -4484,7 +4831,7 @@ dependencies = [
"hmac",
"pbkdf2",
"sha1",
"time",
"time 0.3.22",
"zstd",
]

View File

@ -9,6 +9,7 @@ members = ["ray_format"]
[dependencies]
anyhow = "1.0.71"
belly = { git = "https://github.com/jkb0o/belly", version = "0.2.0" }
bevy = { version = "0.10.1" }
bevy_eventlistener = "0.2.2"
bevy_framepace = "0.12.1"
@ -27,8 +28,8 @@ default = ["wayland"]
jack = ["cpal/jack"]
wayland = ["bevy/wayland"]
[profile.dev.package."*"]
opt-level = 3
# [profile.dev.package."*"]
# opt-level = 2
[profile.dev]
opt-level = 1

35
assets/style.ess Normal file
View File

@ -0,0 +1,35 @@
.left {
position-type: absolute;
left: 0px;
}
.frames-container {
width: 150px;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.frame {
height: 25%;
max-height: 25%;
margin: 5px;
padding: 5px;
stylebox: "square-small.png";
aspect-ratio: 1.0;
display: flex;
justify-content: center;
align-items: center;
}
.frame:hover {
stylebox-modulate: red;
}
.frame img {
width: 75%;
height: auto;
max-height: 75%;
}

View File

@ -21,23 +21,30 @@ mod utils;
fn main() {
App::new()
.add_plugins(DefaultPlugins.set(WindowPlugin {
primary_window: Some(Window {
present_mode: bevy::window::PresentMode::AutoNoVsync,
title: "Cathode".into(),
transparent: true,
resolution: WindowResolution::new(800., 600.),
resizable: false,
resize_constraints: WindowResizeConstraints {
min_width: 400.,
min_height: 300.,
max_width: 1920.,
max_height: 1080.,
},
..default()
}),
..default()
}))
.add_plugins(
DefaultPlugins
.set(WindowPlugin {
primary_window: Some(Window {
present_mode: bevy::window::PresentMode::AutoNoVsync,
title: "Cathode".into(),
transparent: true,
resolution: WindowResolution::new(800., 600.),
resizable: false,
resize_constraints: WindowResizeConstraints {
min_width: 400.,
min_height: 300.,
max_width: 1920.,
max_height: 1080.,
},
..default()
}),
..default()
})
.set(AssetPlugin {
watch_for_changes: true,
..default()
}),
)
.add_plugins(DefaultPickingPlugins)
.add_plugin(RayPlugin)
.add_plugin(TweeningPlugin)

View File

@ -1,31 +1,15 @@
use std::time::Duration;
use belly::prelude::*;
use bevy::prelude::*;
use bevy_tweening::{
lens::{TransformPositionLens, UiPositionLens},
Animator, EaseFunction, Tween,
};
// use bevy_iced::iced::widget::{container, image as iced_image, space, Space};
// use bevy_iced::iced::{theme, Length};
// use bevy_iced::{iced::widget::Column, IcedContext};
use crate::tube::TuberFrames;
// use super::UiMessage;
// type IcedHandle = bevy_iced::iced::image::Handle;
// fn to_iced_handle(bevy_handle: &Handle<Image>, images: &Res<Assets<Image>>) -> Option<IcedHandle> {
// let img = images.get(bevy_handle)?;
// let size = img.size();
// Some(IcedHandle::from_pixels(
// size.x as u32,
// size.y as u32,
// img.data.clone(),
// ))
// }
#[derive(Component)]
#[derive(Component, Default)]
pub struct FrameCards;
#[derive(Component, Clone, Copy, Deref)]
@ -35,108 +19,43 @@ pub struct FrameIndex(usize);
pub struct CardImages([Option<Handle<Image>>; 4]);
pub(super) fn update_card_images(
mut elements: Elements,
tuber_q: Query<(&TuberFrames, Ref<TuberFrames>)>,
frame_q: Query<(Entity, &FrameIndex)>,
mut image_q: Query<(&mut UiImage, &mut Visibility)>,
) {
for (frames, changed) in tuber_q.iter() {
if !changed.is_changed() {
continue;
}
for (ent, index) in frame_q.iter() {
let Ok((mut img, mut vis)) = image_q.get_mut(ent) else { continue };
if let Some(new_image) = frames[**index].clone() {
img.texture = new_image.clone();
*vis = Visibility::Inherited;
} else {
img.texture = Handle::default();
*vis = Visibility::Hidden;
for (i, frame) in frames.iter().enumerate() {
//remove any old children
// elements.select(format!("#frame-{i} > *").as_str()).remove();
if let Some(img) = frame {
let handle = img.clone();
elements
.select(format!("#frame-{i}").as_str())
.add_child(eml! {
<img src=handle />
});
}
}
}
}
const RESTING_POS: f32 = 2.;
pub(super) fn render_cards(mut commands: Commands, images: Res<CardImages>, ass: Res<AssetServer>) {
commands
.spawn(NodeBundle {
style: Style {
display: Display::Flex,
flex_direction: FlexDirection::Column,
justify_content: JustifyContent::SpaceBetween,
position_type: PositionType::Absolute,
position: UiRect::left(Val::Px(RESTING_POS)),
size: Size::height(Val::Percent(100.)),
..default()
},
..default()
})
.insert(FrameCards)
.with_children(|parent| {
for i in 0..4 {
parent
.spawn(NodeBundle {
style: Style {
justify_content: JustifyContent::Center,
align_items: AlignItems::Center,
padding: UiRect::all(Val::Px(10.)),
..default()
},
..default()
})
.with_children(|parent| {
parent
.spawn(ImageBundle {
style: Style {
padding: UiRect::all(Val::Px(10.)),
margin: UiRect::all(Val::Px(5.)),
..default()
},
background_color: Color::CYAN.into(),
image: UiImage::new(ass.load("plain-square.png")),
..default()
})
.with_children(|parent| {
let mut child = if let Some(image) = &images[i] {
parent.spawn(ImageBundle {
style: Style {
size: Size::new(Val::Px(100.), Val::Auto),
aspect_ratio: Some(1.),
..default()
},
image: UiImage::new(image.clone()),
..default()
})
} else {
parent.spawn(ImageBundle {
style: Style {
size: Size::new(Val::Px(100.), Val::Auto),
aspect_ratio: Some(1.),
..default()
},
..default()
})
};
child.insert(FrameIndex(i));
});
});
}
});
}
const RESTING_POS: f32 = 0.0;
pub(super) fn hide(commands: &mut Commands, current_pos: UiRect, entity: Entity) {
let anim = Tween::new(
EaseFunction::BackInOut,
Duration::from_millis(500),
UiPositionLens {
start: current_pos,
start: UiRect::left(Val::Px(0.0)),
end: UiRect::left(Val::Px(-200.)),
},
)
.with_repeat_count(1);
dbg!(current_pos);
commands.entity(entity).insert(Animator::new(anim));
}

View File

@ -2,6 +2,7 @@ mod frames;
mod levels;
mod widgets;
use belly::prelude::*;
use bevy::prelude::*;
use bevy_ninepatch::NinePatchPlugin;
@ -20,17 +21,34 @@ pub struct UiPlugin;
impl Plugin for UiPlugin {
fn build(&self, app: &mut App) {
app.add_plugin(NinePatchPlugin::<()>::default())
.add_plugin(levels::LevelsPlugin)
.init_resource::<CardImages>()
app.add_plugin(BellyPlugin)
.add_event::<UiMessage>()
.add_startup_system(frames::update_card_images)
.add_startup_system(setup_ui)
.add_system(handle_msg)
.add_system(frames::update_card_images.before(frames::render_cards))
.add_startup_system(frames::render_cards);
.add_system(frames::update_card_images);
// app.add_plugin(NinePatchPlugin::<()>::default())
// .add_plugin(levels::LevelsPlugin)
// .init_resource::<CardImages>()
// .add_startup_system(frames::update_card_images)
// .add_system(frames::update_card_images.before(frames::render_cards))
// .add_startup_system(frames::render_cards);
}
}
fn setup_ui(mut commands: Commands) {
commands.add(StyleSheet::load("style.ess"));
commands.add(eml! {
<body>
<div c:left c:frames-container with=FrameCards s:left="0px" s:left=managed()>
<for i in=0..4>
<div c:frame id=format!("frame-{i}")>
</div>
</for>
</div>
</body>
});
}
fn handle_msg(
mut commands: Commands,
mut events: EventReader<UiMessage>,
@ -39,17 +57,17 @@ fn handle_msg(
) {
for event in events.iter() {
let Ok((frames, frame_style)) = frame_q.get_single() else { return };
let Ok((bars, bar_style)) = levels_q.get_single() else { return };
// let Ok((bars, bar_style)) = levels_q.get_single() else { return };
match event {
UiMessage::Hide => {
info!("Hide UI");
frames::hide(&mut commands, frame_style.position, frames);
levels::hide(&mut commands, bar_style.position, bars);
// levels::hide(&mut commands, bar_style.position, bars);
}
UiMessage::Show => {
info!("Show UI");
frames::show(&mut commands, frame_style.position, frames);
levels::show(&mut commands, bar_style.position, bars);
// levels::show(&mut commands, bar_style.position, bars);
}
}
}