more ui testing
Some checks failed
Rust / build (push) Failing after 4s

This commit is contained in:
2026-03-17 17:57:41 -04:00
parent f342970228
commit 8bf58bb04c
3 changed files with 98 additions and 10 deletions

View File

@@ -12,13 +12,9 @@ use bevy_asset_loader::prelude::*;
use bevy_rapier3d::dynamics::{Ccd, RigidBody, Velocity}; use bevy_rapier3d::dynamics::{Ccd, RigidBody, Velocity};
use bevy_rapier3d::geometry::Collider; use bevy_rapier3d::geometry::Collider;
use bevy_rapier3d::plugin::{NoUserData, RapierPhysicsPlugin}; use bevy_rapier3d::plugin::{NoUserData, RapierPhysicsPlugin};
// use buildings::BuildingPugin;
// use iyes_perf_ui::prelude::*;
// use shared::animation_plugin::SimpleAnimationPlugin;
use shared::sets::GameplaySet; use shared::sets::GameplaySet;
use shared::states::{GameplayState, MenuState}; use shared::states::{GameplayState, MenuState};
use shared::{despawn::DespawnPuglin, states::AssetLoadState}; use shared::{despawn::DespawnPuglin, states::AssetLoadState};
// use units::units_plugin::UnitsPlugin;
use world_generation::states::GeneratorState; use world_generation::states::GeneratorState;
pub struct PhosGamePlugin; pub struct PhosGamePlugin;

View File

@@ -7,18 +7,44 @@ use shared::states::AssetLoadState;
use crate::ui::states::BuildUIState; use crate::ui::states::BuildUIState;
pub struct BuildUIPlugin; pub struct BuildUIPlugin;
#[derive(Component)]
pub struct BuildUIItem; #[derive(Component, Default)]
struct BuildUIItem;
#[derive(Component, Default)]
#[require(BuildUIItem)]
struct BuildUIMenuItem;
#[derive(Component, Default)]
struct BuildMenuRoot;
#[derive(Resource, Reflect, Debug, Default)]
struct BuildUIInfo
{
menu: BuildUIMenu,
}
#[derive(Default, Reflect, Debug)]
enum BuildUIMenu
{
#[default]
Structure,
Defense,
}
impl Plugin for BuildUIPlugin impl Plugin for BuildUIPlugin
{ {
fn build(&self, app: &mut App) fn build(&self, app: &mut App)
{ {
app.add_systems(Startup, setup_cameras); app.add_systems(Startup, setup_cameras);
app.init_resource::<BuildUIInfo>();
app.insert_state(BuildUIState::Init); app.insert_state(BuildUIState::Init);
app.add_systems( app.add_systems(
Update, Update,
spawn_ui.run_if(in_state(AssetLoadState::LoadComplete).and(in_state(BuildUIState::Init))), (
spawn_ui.run_if(in_state(AssetLoadState::LoadComplete).and(in_state(BuildUIState::Init))),
draw_menu_ui.run_if(in_state(AssetLoadState::LoadComplete).and(in_state(BuildUIState::DrawMenu))),
),
); );
app.add_systems(PostUpdate, cleanup_ui.run_if(in_state(BuildUIState::Cleanup))); app.add_systems(PostUpdate, cleanup_ui.run_if(in_state(BuildUIState::Cleanup)));
} }
@@ -69,11 +95,25 @@ fn spawn_ui(mut commands: Commands, mut next_state: ResMut<NextState<BuildUIStat
width: Val::Px(500.), width: Val::Px(500.),
height: Val::Px(100.), height: Val::Px(100.),
justify_content: JustifyContent::Stretch, justify_content: JustifyContent::Stretch,
flex_direction: FlexDirection::Column,
..default() ..default()
}, },
BackgroundColor(LinearRgba::GREEN.into()), BackgroundColor(LinearRgba::GREEN.into()),
)) ))
.with_children(|build_ui| { .with_children(|build_ui| {
build_ui.spawn((
Name::new("Menu Root"),
BuildMenuRoot,
Node {
width: Val::Percent(100.),
height: Val::Px(70.),
column_gap: Val::Px(5.),
padding: UiRect::all(Val::Px(2.)),
flex_direction: FlexDirection::Row,
overflow: Overflow::scroll_x(),
..default()
},
));
build_ui build_ui
.spawn(( .spawn((
Name::new("Toolbar"), Name::new("Toolbar"),
@@ -120,13 +160,64 @@ fn spawn_ui(mut commands: Commands, mut next_state: ResMut<NextState<BuildUIStat
}); });
}); });
next_state.set(BuildUIState::Update); next_state.set(BuildUIState::DrawMenu);
}
fn draw_menu_ui(
mut commands: Commands,
menu_root: Single<Entity, With<BuildMenuRoot>>,
menu_items: Query<Entity, With<BuildUIMenuItem>>,
menu_info: Res<BuildUIInfo>,
mut next: ResMut<NextState<BuildUIState>>,
)
{
for entity in menu_items.iter()
{
commands.entity(entity).despawn();
}
info!("Draw Menu");
match menu_info.menu
{
BuildUIMenu::Structure => draw_structure_ui(commands, menu_root.into_inner()),
BuildUIMenu::Defense => (),
}
next.set(BuildUIState::Update);
}
fn draw_structure_ui(mut commands: Commands, root: Entity)
{
commands.entity(root).with_children(|root| {
for i in 0..10
{
root.spawn((
BuildUIMenuItem,
Node {
height: Val::Percent(100.),
width: Val::Px(100.),
display: Display::Grid,
grid_template_rows: vec![RepeatedGridTrack::px(1, 100.), RepeatedGridTrack::fr(1, 1.)],
..default()
},
children![
(
Node {
height: Val::Px(100.),
width: Val::Px(100.),
..default()
},
BackgroundColor(LinearRgba::RED.into())
),
(Text::new(format!("Icon {}", i))),
],
));
}
});
} }
fn cleanup_ui(mut commands: Commands, ui_items: Query<Entity, With<BuildUIItem>>) fn cleanup_ui(mut commands: Commands, ui_items: Query<Entity, With<BuildUIItem>>)
{ {
for item in ui_items.iter() for entity in ui_items.iter()
{ {
commands.entity(item).despawn(); commands.entity(entity).despawn();
} }
} }

View File

@@ -4,6 +4,7 @@ use bevy::prelude::*;
pub enum BuildUIState pub enum BuildUIState
{ {
Init, Init,
DrawMenu,
Update, Update,
Cleanup, Cleanup,
} }