z sorting attempt
This commit is contained in:
+29
-26
@@ -1,16 +1,16 @@
|
||||
use crate::item::Item;
|
||||
use crate::constants::*;
|
||||
use crate::{constants::*, game};
|
||||
use bevy::prelude::*;
|
||||
|
||||
#[derive(Component)]
|
||||
#[require(Sprite)]
|
||||
pub struct Tile {
|
||||
pub id: u32
|
||||
pub id: u32,
|
||||
}
|
||||
|
||||
impl Default for Tile {
|
||||
fn default() -> Self {
|
||||
Self {id:1}
|
||||
Self { id: 1 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,33 +51,39 @@ pub struct DoorTile {
|
||||
pub locked: bool,
|
||||
}
|
||||
|
||||
|
||||
|
||||
pub fn tile_sprite_visibility_update(
|
||||
mut query: Query<(&mut Visibility, &Transform, Entity), With<Tile>>,
|
||||
mut query: Query<(&mut Visibility, &Transform), With<Tile>>,
|
||||
tile_query: Query<(&Transform, &Tile)>,
|
||||
) {
|
||||
for (mut visibility, transform, entity) in query.iter_mut() {
|
||||
for (mut visibility, transform) in query.iter_mut() {
|
||||
*visibility = Visibility::Hidden;
|
||||
|
||||
if transform.translation.z > game::Z_INDEX {
|
||||
continue;
|
||||
}
|
||||
|
||||
for x_offset in -1..=1 {
|
||||
for y_offset in -1..=1 {
|
||||
if x_offset == 0 && y_offset == 0 {
|
||||
continue; // Skip the current tile
|
||||
}
|
||||
for z_offset in -1..=0 {
|
||||
if x_offset == 0 && y_offset == 0 && z_offset == 0 {
|
||||
continue; // Skip the current tile
|
||||
}
|
||||
let neighbor_position = transform.translation
|
||||
+ Vec3::new(
|
||||
x_offset as f32 * TILE_SIZE,
|
||||
y_offset as f32 * TILE_SIZE,
|
||||
z_offset as f32 * TILE_SIZE,
|
||||
);
|
||||
|
||||
let neighbor_position = transform.translation + Vec3::new(
|
||||
x_offset as f32 * TILE_SIZE,
|
||||
y_offset as f32 * TILE_SIZE,
|
||||
0.0,
|
||||
);
|
||||
|
||||
if let Some((neighbor_transform, neighbor_tile)) = tile_query.iter().find(|(neighbor_transform, _)| {
|
||||
neighbor_transform.translation == neighbor_position
|
||||
}) {
|
||||
if neighbor_tile.id == 0 {
|
||||
*visibility = Visibility::Visible;
|
||||
break;
|
||||
if let Some((neighbor_transform, neighbor_tile)) =
|
||||
tile_query.iter().find(|(neighbor_transform, _)| {
|
||||
neighbor_transform.translation == neighbor_position
|
||||
})
|
||||
{
|
||||
if neighbor_tile.id == 0 {
|
||||
*visibility = Visibility::Visible;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,8 +91,6 @@ pub fn tile_sprite_visibility_update(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
pub fn tile_item_sprite_update(
|
||||
time: Res<Time>,
|
||||
mut query_tile: Query<(Entity, &Children, &mut TileState), With<Tile>>,
|
||||
@@ -124,8 +128,7 @@ pub fn tile_item_sprite_update(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[derive(Component)]
|
||||
pub struct TileState {
|
||||
pub timer: Timer,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user