z sorting attempt

This commit is contained in:
2024-12-14 01:04:52 +00:00
parent bf3ddd0e74
commit 8d89f86c69
4 changed files with 57 additions and 53 deletions
+29 -26
View File
@@ -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,
}
}