save
Some checks failed
Rust Checks / checks (push) Failing after 5s

This commit is contained in:
CoCo_Sol 2024-03-11 08:03:37 +01:00
parent a0e98de6bb
commit ae43b8093f
3 changed files with 77 additions and 42 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,014 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,3 +1,26 @@
//! TODO //! TODO
use bevy::ecs::component::Component;
use bevy::ecs::system::Commands;
use bevy::render::color::Color;
use bevy::ui::node_bundles::NodeBundle;
use bevy::ui::{Node, Style, UiRect, Val};
pub mod tiles_info; pub mod tiles_info;
#[derive(Component)]
pub struct MainNode;
fn create_main_uui_node(mut commands: Commands) {
commands
.spawn(NodeBundle {
style: Style {
margin: UiRect::all(bevy::ui::Val::Auto),
width: Val::Px(1280.),
height: Val::Px(720.),
..Default::default()
},
..Default::default()
})
.insert(MainNode);
}

View file

@ -2,6 +2,7 @@
use bevy::prelude::*; use bevy::prelude::*;
use super::{create_main_uui_node, MainNode};
use crate::map::click_tile::TileJustClicked; use crate::map::click_tile::TileJustClicked;
use crate::map::Tile; use crate::map::Tile;
@ -13,7 +14,8 @@ impl Plugin for TilesInfoPlugin {
app.add_systems(Update, handle_tile_click) app.add_systems(Update, handle_tile_click)
.init_resource::<SelectedTile>() .init_resource::<SelectedTile>()
.add_systems(Update, update_tile_info_text) .add_systems(Update, update_tile_info_text)
.add_systems(OnEnter(crate::CurrentScene::Game), init_text_zone); .add_systems(OnEnter(crate::CurrentScene::Game), init_text_zone)
.add_systems(Startup, create_main_uui_node);
} }
} }
@ -68,48 +70,70 @@ fn handle_tile_click(
} }
} }
fn init_text_zone(mut commands: Commands, asset_server: Res<AssetServer>) { fn init_text_zone(
commands mut commands: Commands,
.spawn(ImageBundle { asset_server: Res<AssetServer>,
style: Style { main_nodes: Query<Entity, With<MainNode>>,
position_type: PositionType::Absolute, ) {
height: Val::Percent(50.), let main_node = main_nodes.single();
width: Val::Percent(50.),
bottom: Val::ZERO,
..Default::default()
},
image: UiImage { commands.entity(main_node).with_children(|parent| {
texture: asset_server.load("temp.png"), parent
..default() .spawn(ImageBundle {
}, style: Style {
..default() position_type: PositionType::Absolute,
})
.with_children(|builder| { bottom: Val::ZERO,
builder margin: UiRect {
.spawn(TextBundle { left: Val::Auto,
style: Style { right: Val::Auto,
height:Val::Percent(100.),
position_type: PositionType::Absolute,
..default() ..default()
}, },
width: Val::Percent(50.0),
height: Val::Px(100.),
..Default::default()
},
image: UiImage {
texture: asset_server.load("temp.png"),
..default() ..default()
}) },
.insert(TileInfoText); ..default()
}); }).insert(TileInfoBox)
.with_children(|builder| {
builder
.spawn(TextBundle {
style: Style {
height: Val::Percent(100.),
position_type: PositionType::Absolute,
..default()
},
..default()
})
.insert(TileInfoText);
});
});
} }
/// TODO /// TODO
#[derive(Component)] #[derive(Component)]
pub struct TileInfoText; pub struct TileInfoText;
/// TODO
#[derive(Component)]
pub struct TileInfoBox;
fn update_tile_info_text( fn update_tile_info_text(
mut query: Query<(&mut Transform, &mut Text, &mut Visibility), With<TileInfoText>>, mut query: Query<(&mut Transform, &mut Text), With<TileInfoText>>,
selected: Res<SelectedTile>, selected: Res<SelectedTile>,
mut main_nodes: Query<&mut Transform, With<TileInfoBox>>,
) { ) {
for (mut transform, mut text, mut visibility) in query.iter_mut() { let mut info_box = main_nodes.single_mut();
for (mut transform, mut text) in query.iter_mut() {
if selected.index().is_none() { if selected.index().is_none() {
*visibility = Visibility::Hidden; info_box.translation.y = -100.0;
text.sections = vec![];
return; return;
} }
if let SelectedTile::Tile(tile, _) = *selected { if let SelectedTile::Tile(tile, _) = *selected {
@ -121,19 +145,7 @@ fn update_tile_info_text(
..default() ..default()
}, },
}]; }];
*visibility = Visibility::Visible;
transform.translation.z = 1.0; transform.translation.z = 1.0;
} }
} }
} }
// .spawn(TextBundle {
// style: Style {
// position_type: PositionType::Absolute,
//
// ..default()
// },
//
// ..default()
// })
// .insert(TileInfoText);