generated from tipragot/rust
parent
a0e98de6bb
commit
ae43b8093f
Binary file not shown.
Before Width: | Height: | Size: 1,014 B After Width: | Height: | Size: 1.1 KiB |
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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,14 +70,28 @@ fn handle_tile_click(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init_text_zone(mut commands: Commands, asset_server: Res<AssetServer>) {
|
fn init_text_zone(
|
||||||
commands
|
mut commands: Commands,
|
||||||
|
asset_server: Res<AssetServer>,
|
||||||
|
main_nodes: Query<Entity, With<MainNode>>,
|
||||||
|
) {
|
||||||
|
let main_node = main_nodes.single();
|
||||||
|
|
||||||
|
commands.entity(main_node).with_children(|parent| {
|
||||||
|
parent
|
||||||
.spawn(ImageBundle {
|
.spawn(ImageBundle {
|
||||||
style: Style {
|
style: Style {
|
||||||
position_type: PositionType::Absolute,
|
position_type: PositionType::Absolute,
|
||||||
height: Val::Percent(50.),
|
|
||||||
width: Val::Percent(50.),
|
|
||||||
bottom: Val::ZERO,
|
bottom: Val::ZERO,
|
||||||
|
margin: UiRect {
|
||||||
|
left: Val::Auto,
|
||||||
|
right: Val::Auto,
|
||||||
|
..default()
|
||||||
|
},
|
||||||
|
|
||||||
|
width: Val::Percent(50.0),
|
||||||
|
height: Val::Px(100.),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -84,7 +100,7 @@ fn init_text_zone(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
..default()
|
..default()
|
||||||
})
|
}).insert(TileInfoBox)
|
||||||
.with_children(|builder| {
|
.with_children(|builder| {
|
||||||
builder
|
builder
|
||||||
.spawn(TextBundle {
|
.spawn(TextBundle {
|
||||||
|
@ -97,19 +113,27 @@ fn init_text_zone(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||||
})
|
})
|
||||||
.insert(TileInfoText);
|
.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);
|
|
||||||
|
|
Loading…
Reference in a new issue