diff --git a/game/main/src/phos.rs b/game/main/src/phos.rs index 9fbfd3c..1938143 100644 --- a/game/main/src/phos.rs +++ b/game/main/src/phos.rs @@ -1,6 +1,7 @@ use crate::camera_system::components::PhosCamera; use crate::map_rendering::map_init::MapInitPlugin; use crate::map_rendering::render_distance_system::RenderDistancePlugin; +use crate::ui::build_ui::BuildUIPlugin; use crate::utlis::editor_plugin::EditorPlugin; use crate::utlis::tile_selection_plugin::TileSelectionPlugin; use crate::{camera_system::camera_plugin::PhosCameraPlugin, utlis::debug_plugin::DebugPlugin}; @@ -38,6 +39,7 @@ impl Plugin for PhosGamePlugin { MapInitPlugin, RenderDistancePlugin, BuildingPugin, + BuildUIPlugin, SimpleAnimationPlugin, UnitsPlugin, DespawnPuglin, diff --git a/game/main/src/ui/build_ui.rs b/game/main/src/ui/build_ui.rs new file mode 100644 index 0000000..d883011 --- /dev/null +++ b/game/main/src/ui/build_ui.rs @@ -0,0 +1,38 @@ +use bevy::{ + prelude::*, + render::{camera::RenderTarget, view::RenderLayers}, +}; +use shared::{states::AssetLoadState, tags::MainCamera}; +pub struct BuildUIPlugin; + +impl Plugin for BuildUIPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Startup, setup_cameras); + app.add_systems(Update, spawn_ui.run_if(in_state(AssetLoadState::LoadComplete))); + } +} + +fn setup_cameras(mut commands: Commands) { + commands.spawn((Camera2d, IsDefaultUiCamera, UiBoxShadowSamples(6))); +} + +fn spawn_ui(mut commands: Commands) { + commands + .spawn((Node { + width: Val::Percent(100.), + height: Val::Percent(100.), + justify_content: JustifyContent::Center, + align_items: AlignItems::End, + ..default() + },)) + .insert(PickingBehavior::IGNORE) + .with_children(|parent| { + parent.spawn(( + Node { + width: Val::Px(500.), + ..Default::default() + }, + BackgroundColor(LinearRgba::GREEN.into()), + )); + }); +} diff --git a/game/main/src/ui/game/build_ui.rs b/game/main/src/ui/game/build_ui.rs deleted file mode 100644 index 444ff60..0000000 --- a/game/main/src/ui/game/build_ui.rs +++ /dev/null @@ -1,74 +0,0 @@ -// use bevy::{prelude::*, render::view::RenderLayers, sprite::Anchor}; -// use bevy_lunex::prelude::*; - -// pub struct BuildUiPlugin; - -// impl Plugin for BuildUiPlugin { -// fn build(&self, app: &mut App) { -// app.add_systems(PostStartup, setup_ui); -// } -// } - -// fn setup_ui(mut commands: Commands, assets: Res, mut material: ResMut>) { -// commands -// .spawn(( -// UiTreeBundle:: { -// tree: UiTree::new2d("BuildUi"), -// ..default() -// }, -// Name::new("Build UI"), -// SourceFromCamera, -// RenderLayers::layer(1), -// )) -// .with_children(|ui| { -// ui.spawn(( -// UiLink::::path("Root"), -// UiLayout::boundary() -// .pos1((Rl(0.), Rl(0.))) -// .pos2((Rl(100.), Rl(100.))) -// .pack::(), -// RenderLayers::layer(1), -// )); - -// ui.spawn(( -// UiLink::::path("Root/MainRect"), -// UiLayout::window() -// .anchor(Anchor::BottomCenter) -// .size((Ab(800.), Rl(100.))) -// .pos((Rl(50.), Rl(100.))) -// .pack::(), -// RenderLayers::layer(1), -// )); - -// ui.spawn(( -// UiLink::::path("Root/MainRect/Categories"), -// UiLayout::solid() -// .align_y(Align::END) -// .size((Rl(100.), Ab(30.))) -// .pack::(), -// RenderLayers::layer(1), -// )); - -// for i in 0..5 { -// let path = format!("Root/MainRect/Categories/Button{}", i); -// ui.spawn(( -// UiLink::::path(path), -// UiLayout::window() -// .size((Rl(100. / 5.), Ab(30.))) -// .x(Rl((100. / 5.) * i as f32)) -// .pack::(), -// UiLayout::window() -// .size((Rl(100. / 5.), Ab(20.))) -// .x(Rl((100. / 5.) * i as f32)) -// .pack::(), -// UiImage2dBundle::from(assets.load("textures/world/test2.png")), -// RenderLayers::layer(1), -// )); -// // ui.spawn(( -// // UiLink::::path(format!("{}/img", path)), -// // UiLayout::solid().size((Ab(30.), Ab(100.))).pack::(), -// // UiImage2dBundle::from(assets.load("textures/world/test2.png")), -// // )); -// } -// }); -// } diff --git a/game/main/src/ui/game/mod.rs b/game/main/src/ui/game/mod.rs deleted file mode 100644 index 791f966..0000000 --- a/game/main/src/ui/game/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod build_ui; \ No newline at end of file diff --git a/game/main/src/ui/lunex_setup_plugin.rs b/game/main/src/ui/lunex_setup_plugin.rs deleted file mode 100644 index 5a46bb2..0000000 --- a/game/main/src/ui/lunex_setup_plugin.rs +++ /dev/null @@ -1,94 +0,0 @@ -// use bevy::{ -// prelude::*, -// render::{ -// render_resource::{Extent3d, TextureDescriptor, TextureDimension, TextureFormat, TextureUsages}, -// view::RenderLayers, -// }, -// window::PrimaryWindow, -// }; -// use bevy_lunex::prelude::*; -// use shared::tags::MainCamera; - -// pub struct LunexSetupPlugin; - -// impl Plugin for LunexSetupPlugin { -// fn build(&self, app: &mut App) { -// app.add_plugins(UiDefaultPlugins); - -// #[cfg(debug_assertions)] -// app.add_plugins(UiDebugPlugin::::new()); -// app.add_systems(PostStartup, setup_cameras); -// } -// } - -// fn setup_cameras( -// mut commands: Commands, -// assets: Res, -// mut main_3d_camera_q: Query<&mut Camera, With>, -// window_query: Query<&Window, With>, -// ) { -// //Prepare Render Texture -// let win = window_query.single(); -// let size = Extent3d { -// width: win.physical_width(), -// height: win.physical_height(), -// ..default() -// }; - -// let mut image = Image { -// texture_descriptor: TextureDescriptor { -// label: None, -// size, -// dimension: TextureDimension::D2, -// format: TextureFormat::Bgra8UnormSrgb, -// mip_level_count: 1, -// sample_count: 1, -// usage: TextureUsages::TEXTURE_BINDING | TextureUsages::COPY_DST | TextureUsages::RENDER_ATTACHMENT, -// view_formats: &[], -// }, -// ..default() -// }; -// image.resize(size); - -// //Configure 3D Camera -// let mut cam = main_3d_camera_q.single_mut(); -// let render_image = assets.add(image); -// cam.target = render_image.clone().into(); -// cam.order = -1; -// cam.clear_color = ClearColorConfig::Custom(LinearRgba::NONE.into()); - -// //Add Render Texture image -// commands -// .spawn(( -// UiTreeBundle::::from(UiTree::new2d("Main UI")), -// SourceFromCamera, -// RenderLayers::layer(1), -// )) -// .with_children(|ui| { -// ui.spawn(( -// UiLink::::path("Root"), -// UiLayout::window_full().size((Rl(100.), Rl(100.))).pack::(), -// RenderLayers::layer(1), -// )); -// ui.spawn(( -// UiLink::::path("Root/Camera3D"), -// UiLayout::solid() -// .size((Rl(100.), Rl(100.))) -// .scaling(Scaling::Fill) -// .pack::(), -// UiImage2dBundle::from(render_image), -// PickingPortal, -// RenderLayers::layer(1), -// )); -// }); - -// //Spawn 2d UI Camera -// commands.spawn(( -// MainUi, -// Camera2dBundle { -// transform: Transform::from_xyz(0.0, 0.0, 1000.0), -// ..default() -// }, -// RenderLayers::from_layers(&[1]), -// )); -// } diff --git a/game/main/src/ui/mod.rs b/game/main/src/ui/mod.rs index 63a39c6..a598279 100644 --- a/game/main/src/ui/mod.rs +++ b/game/main/src/ui/mod.rs @@ -1,2 +1 @@ -pub mod game; -pub mod lunex_setup_plugin; +pub mod build_ui;