diff --git a/Cargo.lock b/Cargo.lock index 724c1c8..41ace85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", ] diff --git a/Cargo.toml b/Cargo.toml index b4fb2b2..bb814cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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 diff --git a/assets/style.ess b/assets/style.ess new file mode 100644 index 0000000..3716a8f --- /dev/null +++ b/assets/style.ess @@ -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%; +} diff --git a/src/main.rs b/src/main.rs index b123de3..8dbf18f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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) diff --git a/src/ui/frames.rs b/src/ui/frames.rs index 5537bbd..f941f0c 100644 --- a/src/ui/frames.rs +++ b/src/ui/frames.rs @@ -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, images: &Res>) -> Option { -// 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>; 4]); pub(super) fn update_card_images( + mut elements: Elements, tuber_q: Query<(&TuberFrames, Ref)>, - 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! { + + }); } } } } -const RESTING_POS: f32 = 2.; - -pub(super) fn render_cards(mut commands: Commands, images: Res, ass: Res) { - 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)); } diff --git a/src/ui/mod.rs b/src/ui/mod.rs index c228f90..c74da90 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -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::() + app.add_plugin(BellyPlugin) .add_event::() - .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::() + // .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! { + +
+ +
+
+
+
+ + }); +} + fn handle_msg( mut commands: Commands, mut events: EventReader, @@ -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); } } }