Проектная работа - WIP

This commit is contained in:
3 changed files with 43 additions and 16 deletions
+25 -6
View File
@@ -1,13 +1,17 @@
//! модуль с инструментами отладки
use bevy::prelude::*; use bevy::prelude::*;
/// ДЛЯ ОТЛАДКИ - вывод всех сущностей мира use crate::domain::GridBarier;
/// вывод всех сущностей мира
pub fn print_all_entities(mut commands: Commands, query: Query<Entity>) { pub fn print_all_entities(mut commands: Commands, query: Query<Entity>) {
for entity in query { for entity in query {
commands.entity(entity).log_components(); commands.entity(entity).log_components();
} }
} }
/// ДЛЯ ОТЛАДКИ - вывод всех сущностей мира по нажатию Enter /// вывод всех сущностей мира по нажатию Enter
pub fn print_all_entities_by_press_enter(input: Res<ButtonInput<KeyCode>>, mut commands: Commands, query: Query<Entity>) { pub fn print_all_entities_by_press_enter(input: Res<ButtonInput<KeyCode>>, mut commands: Commands, query: Query<Entity>) {
if input.just_pressed(KeyCode::Enter) { if input.just_pressed(KeyCode::Enter) {
for entity in query { for entity in query {
@@ -16,7 +20,7 @@ pub fn print_all_entities_by_press_enter(input: Res<ButtonInput<KeyCode>>, mut c
} }
} }
/// ДЛЯ ОТЛАДКИ - регулировка скорости игры /// регулировка скорости игры
pub fn time_speed(input: Res<ButtonInput<KeyCode>>, mut time: ResMut<Time<Virtual>>) { pub fn time_speed(input: Res<ButtonInput<KeyCode>>, mut time: ResMut<Time<Virtual>>) {
if input.just_pressed(KeyCode::Equal) { if input.just_pressed(KeyCode::Equal) {
let mut speed = time.relative_speed(); let mut speed = time.relative_speed();
@@ -28,10 +32,10 @@ pub fn time_speed(input: Res<ButtonInput<KeyCode>>, mut time: ResMut<Time<Virtua
speed *= 0.5; speed *= 0.5;
time.set_relative_speed(speed); time.set_relative_speed(speed);
trace!("time speed set x0.5"); trace!("time speed set x0.5");
} else if input.just_pressed(KeyCode::Home) { } else if input.just_pressed(KeyCode::Backspace) {
time.set_relative_speed(1.0); time.set_relative_speed(1.0);
trace!("time speed reset"); trace!("time speed reset");
} else if input.just_pressed(KeyCode::Pause) { } else if input.just_pressed(KeyCode::Space) {
if time.is_paused() { if time.is_paused() {
time.unpause(); time.unpause();
trace!("unpause game"); trace!("unpause game");
@@ -42,7 +46,14 @@ pub fn time_speed(input: Res<ButtonInput<KeyCode>>, mut time: ResMut<Time<Virtua
} }
} }
fn _split_by_grid_tracing(src: f32, dst: f32, grid: f32) -> Vec<(f32, f32)> { /// Замедлить время и поставить на паузу
pub fn set_initial_time_speed_to_slow_and_pause(mut time: ResMut<Time<Virtual>>) {
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); let result = crate::tools::split_by_grid(src, dst, grid);
trace!("\tsplit_by_grid({:?}, {:?}, {:?}) -> {:?}", src, dst, grid, result); trace!("\tsplit_by_grid({:?}, {:?}, {:?}) -> {:?}", src, dst, grid, result);
result result
@@ -81,3 +92,11 @@ pub fn spawn_grid(commands: &mut Commands) {
)); ));
} }
} }
/// трассировка движения змеи
pub fn trace_snake_moving(e: On<GridBarier>) {
let entity = e.entity;
let position = e.position;
let direction = e.direction;
trace!("...<{entity:?}> is moving on {position} {direction:?}");
}
+16 -3
View File
@@ -17,14 +17,27 @@ fn main() {
}), }),
) )
.insert_resource(ClearColor(Color::srgb(0.3, 0.6, 0.8))) .insert_resource(ClearColor(Color::srgb(0.3, 0.6, 0.8)))
.add_systems(Startup, (startup,)) .add_systems(
// .add_systems(PostStartup, snake_game::debug::print_all_entities) 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(Update, (head_rotation,))
.add_systems(FixedUpdate, (snake_moving,)) .add_systems(FixedUpdate, (snake_moving,))
.add_systems( .add_systems(
PostUpdate, PostUpdate,
( (
// || {}, //
snake_game::debug::print_all_entities_by_press_enter, snake_game::debug::print_all_entities_by_press_enter,
snake_game::debug::time_speed, snake_game::debug::time_speed,
), ),
+2 -7
View File
@@ -1,7 +1,7 @@
use bevy::prelude::*; use bevy::prelude::*;
use crate::{ use crate::{
domain::{End, GridBarier, SnakePath, Tail}, domain::{End, SnakePath, Tail},
observers::schedule_set_velocity, observers::schedule_set_velocity,
}; };
@@ -19,12 +19,7 @@ fn spawn_snake(commands: &mut Commands) {
commands.insert_resource(SnakePath::default()); commands.insert_resource(SnakePath::default());
commands.spawn(Observer::new(|e: On<GridBarier>| { commands.spawn(Observer::new(crate::debug::trace_snake_moving));
let entity = e.entity;
let position = e.position;
let direction = e.direction;
trace!("...<{entity:?}> is moving on {position} {direction:?}");
}));
let head = commands let head = commands
.spawn(( .spawn((