diff --git a/snake-game/src/debug.rs b/snake-game/src/debug.rs index 8d72744..880b1b9 100644 --- a/snake-game/src/debug.rs +++ b/snake-game/src/debug.rs @@ -1,13 +1,17 @@ +//! модуль с инструментами отладки + use bevy::prelude::*; -/// ДЛЯ ОТЛАДКИ - вывод всех сущностей мира +use crate::domain::GridBarier; + +/// вывод всех сущностей мира pub fn print_all_entities(mut commands: Commands, query: Query) { for entity in query { commands.entity(entity).log_components(); } } -/// ДЛЯ ОТЛАДКИ - вывод всех сущностей мира по нажатию Enter +/// вывод всех сущностей мира по нажатию Enter pub fn print_all_entities_by_press_enter(input: Res>, mut commands: Commands, query: Query) { if input.just_pressed(KeyCode::Enter) { for entity in query { @@ -16,7 +20,7 @@ pub fn print_all_entities_by_press_enter(input: Res>, mut c } } -/// ДЛЯ ОТЛАДКИ - регулировка скорости игры +/// регулировка скорости игры pub fn time_speed(input: Res>, mut time: ResMut>) { if input.just_pressed(KeyCode::Equal) { let mut speed = time.relative_speed(); @@ -28,10 +32,10 @@ pub fn time_speed(input: Res>, mut time: ResMut>, mut time: ResMut Vec<(f32, f32)> { +/// Замедлить время и поставить на паузу +pub fn set_initial_time_speed_to_slow_and_pause(mut time: ResMut>) { + time.set_relative_speed(1.0 / 8.0); + time.pause(); +} + +/// обертка над функцией [crate::tools::split_by_grid] для ее отладки +pub fn _split_by_grid_tracing(src: f32, dst: f32, grid: f32) -> Vec<(f32, f32)> { let result = crate::tools::split_by_grid(src, dst, grid); trace!("\tsplit_by_grid({:?}, {:?}, {:?}) -> {:?}", src, dst, grid, result); result @@ -81,3 +92,11 @@ pub fn spawn_grid(commands: &mut Commands) { )); } } + +/// трассировка движения змеи +pub fn trace_snake_moving(e: On) { + let entity = e.entity; + let position = e.position; + let direction = e.direction; + trace!("...<{entity:?}> is moving on {position} {direction:?}"); +} diff --git a/snake-game/src/main.rs b/snake-game/src/main.rs index aa3d6f5..4fdefb5 100644 --- a/snake-game/src/main.rs +++ b/snake-game/src/main.rs @@ -17,14 +17,27 @@ fn main() { }), ) .insert_resource(ClearColor(Color::srgb(0.3, 0.6, 0.8))) - .add_systems(Startup, (startup,)) - // .add_systems(PostStartup, snake_game::debug::print_all_entities) + .add_systems( + Startup, + ( + || {}, // + startup, + snake_game::debug::set_initial_time_speed_to_slow_and_pause, + ), + ) + .add_systems( + PostStartup, + ( + || {}, + // snake_game::debug::print_all_entities, + ), + ) .add_systems(Update, (head_rotation,)) .add_systems(FixedUpdate, (snake_moving,)) .add_systems( PostUpdate, ( - // + || {}, // snake_game::debug::print_all_entities_by_press_enter, snake_game::debug::time_speed, ), diff --git a/snake-game/src/startup.rs b/snake-game/src/startup.rs index 901d0e1..5d7eb4c 100644 --- a/snake-game/src/startup.rs +++ b/snake-game/src/startup.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; use crate::{ - domain::{End, GridBarier, SnakePath, Tail}, + domain::{End, SnakePath, Tail}, observers::schedule_set_velocity, }; @@ -19,12 +19,7 @@ fn spawn_snake(commands: &mut Commands) { commands.insert_resource(SnakePath::default()); - commands.spawn(Observer::new(|e: On| { - let entity = e.entity; - let position = e.position; - let direction = e.direction; - trace!("...<{entity:?}> is moving on {position} {direction:?}"); - })); + commands.spawn(Observer::new(crate::debug::trace_snake_moving)); let head = commands .spawn((