diff --git a/src/debug/systems/game_scene.rs b/src/debug/systems/game_scene.rs index 3efa92c..6b1978c 100644 --- a/src/debug/systems/game_scene.rs +++ b/src/debug/systems/game_scene.rs @@ -9,7 +9,7 @@ pub fn game_area_gizmos(mut gizmos: Gizmos, game_area_query: Query<(&GameArea, & Isometry2d::new(game_area.center() * grid.tile_size, Rot2::IDENTITY), UVec2::new( (game_area.right_boundary - game_area.left_boundary) as u32 + 1, - (game_area.top_boundary - game_area.bottom_boundary) as u32 + 1, + (game_area.kill_height - game_area.bottom_boundary) as u32 + 1, ), grid.tile_size, Color::srgba(0.4, 0.1, 0.1, 0.6), diff --git a/src/game.rs b/src/game.rs index cd2039c..f6fb94b 100644 --- a/src/game.rs +++ b/src/game.rs @@ -28,8 +28,5 @@ pub fn init(app: &mut App) { .add_systems(Startup, systems::setup_game_scene) .add_systems(PreUpdate, (systems::block_control, systems::apply_gravity)) .add_systems(Update, (systems::demo_2d, systems::apply_piece_movement)) - .add_systems( - PostUpdate, - (systems::handle_piece_placed, systems::grid_positioning).chain(), - ); + .add_systems(PostUpdate, systems::grid_positioning); } diff --git a/src/game/systems/game_scene.rs b/src/game/systems/game_scene.rs index 0b527bb..0530c0f 100644 --- a/src/game/systems/game_scene.rs +++ b/src/game/systems/game_scene.rs @@ -1,3 +1,5 @@ +use std::collections::{HashMap, HashSet}; + use bevy::prelude::*; use crate::game::{ @@ -10,23 +12,26 @@ pub fn setup_game_scene(world: &mut World) { let game_area = GameArea::default(); let mut next_piece = NextPiece::default(); let starting_piece = next_piece.take_and_generate(); - world.spawn(( - Name::from("Game scene"), - GameGravity::default(), - game_area.clone(), - next_piece, - children![ - (Transform::from_xyz(-16.0, 88.0, 10.0), DemoCamera2d,), - // Create first piece - ( - GridTransform { - translation: game_area.block_spawn_point() - }, - ControllablePiece, - create_piece(starting_piece), - ), - ], - )); + world + .spawn(( + Name::from("Game scene"), + GameGravity::default(), + game_area.clone(), + next_piece, + children![ + (Transform::from_xyz(-16.0, 88.0, 10.0), DemoCamera2d,), + // Create first piece + ( + GridTransform { + translation: game_area.block_spawn_point() + }, + ControllablePiece, + create_piece(starting_piece), + ), + ], + )) + .observe(handle_placed_piece) + .observe(handle_line_clear); world.flush(); } @@ -85,8 +90,9 @@ pub fn apply_piece_movement( mut piece_query: Query<(&mut PieceControls, Entity, &ChildOf, &Children)>, mut transform_query: Query<(&mut GridTransform, Has)>, mut input_repeat: Local>, - mut on_piece_placed: EventWriter, + // mut on_piece_placed: EventWriter, time: Res