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

This commit is contained in:
7 changed files with 1465 additions and 38 deletions
+18 -3
View File
@@ -1,7 +1,7 @@
use bevy::prelude::*;
use crate::{
domain::{Collision, Direction, FIELD_SIZE, GRID_SIZE, GridBarier, Head, Position, SnakePath, Tail, Velocity},
domain::{Collision, Direction, FIELD_SIZE, GRID_SIZE, GridBarier, Head, Meal, Position, SnakePath, Tail, Velocity},
tools::split_by_grid,
};
@@ -111,7 +111,10 @@ pub fn snake_moving(
}
/// Система отслеживания столкновений с границей
pub fn check_bounds_colisions(head: Single<(&Transform,), (With<Head>,)>, mut commands: Commands) {
pub fn check_bounds_colisions(
head: Single<(&Transform,), (With<Head>,)>,
mut commands: Commands, //
) {
let (head_transform,) = head.into_inner();
let (x, y) = (head_transform.translation.x, head_transform.translation.y);
const SIDE: f32 = (FIELD_SIZE as f32 / 2.0) * GRID_SIZE as f32;
@@ -139,4 +142,16 @@ pub fn check_tail_colisions(
}
/// Система отслеживания столкновений с едой
pub fn check_meal_collisions() {}
pub fn check_meal_collisions(
head: Single<(&Transform,), (With<Head>,)>,
query: Query<(&Transform, Entity), (With<Meal>,)>,
mut commands: Commands, //
) {
let (head_transform,) = head.into_inner();
for (meal_transform, meal_entity) in query.into_iter() {
let distance = head_transform.translation.distance(meal_transform.translation);
if distance < GRID_SIZE as f32 {
commands.trigger(Collision::Meal(meal_entity));
}
}
}