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::geometry::Collider;
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::states::{GameplayState, MenuState};
use shared::{despawn::DespawnPuglin, states::AssetLoadState};
// use units::units_plugin::UnitsPlugin;
use world_generation::states::GeneratorState;
pub struct PhosGamePlugin;

View File

@@ -7,18 +7,44 @@ use shared::states::AssetLoadState;
use crate::ui::states::BuildUIState;
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
{
fn build(&self, app: &mut App)
{
app.add_systems(Startup, setup_cameras);
app.init_resource::<BuildUIInfo>();
app.insert_state(BuildUIState::Init);
app.add_systems(
Update,
(
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)));
}
@@ -69,11 +95,25 @@ fn spawn_ui(mut commands: Commands, mut next_state: ResMut<NextState<BuildUIStat
width: Val::Px(500.),
height: Val::Px(100.),
justify_content: JustifyContent::Stretch,
flex_direction: FlexDirection::Column,
..default()
},
BackgroundColor(LinearRgba::GREEN.into()),
))
.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
.spawn((
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>>)
{
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
{
Init,
DrawMenu,
Update,
Cleanup,
}