Проектная работа - WIP
This commit is contained in:
@@ -1,90 +0,0 @@
|
|||||||
use bevy::{color::palettes::tailwind::*, prelude::*};
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
domain::{End, FIELD_SIZE, GRID_SIZE, Tail},
|
|
||||||
observers::schedule_set_velocity,
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Создать границу игрового поля
|
|
||||||
pub fn spawn_bounds(commands: &mut Commands) {
|
|
||||||
commands.spawn((
|
|
||||||
Sprite::from_color(AMBER_500, vec2((FIELD_SIZE as f32 + 1.0) * GRID_SIZE as f32, 5.0)), //
|
|
||||||
Transform {
|
|
||||||
translation: vec3(0.0, (FIELD_SIZE as f32 + 1.0) * GRID_SIZE as f32 / 2.0, 0.0),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
));
|
|
||||||
commands.spawn((
|
|
||||||
Sprite::from_color(AMBER_500, vec2((FIELD_SIZE as f32 + 1.0) * GRID_SIZE as f32, 5.0)), //
|
|
||||||
Transform {
|
|
||||||
translation: vec3(0.0, -(FIELD_SIZE as f32 + 1.0) * GRID_SIZE as f32 / 2.0, 0.0),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
));
|
|
||||||
commands.spawn((
|
|
||||||
Sprite::from_color(AMBER_500, vec2(5.0, (FIELD_SIZE as f32 + 1.0) * GRID_SIZE as f32)), //
|
|
||||||
Transform {
|
|
||||||
translation: vec3((FIELD_SIZE as f32 + 1.0) * GRID_SIZE as f32 / 2.0, 0.0, 0.0),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
));
|
|
||||||
commands.spawn((
|
|
||||||
Sprite::from_color(AMBER_500, vec2(5.0, (FIELD_SIZE as f32 + 1.0) * GRID_SIZE as f32)), //
|
|
||||||
Transform {
|
|
||||||
translation: vec3(-(FIELD_SIZE as f32 + 1.0) * GRID_SIZE as f32 / 2.0, 0.0, 0.0),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Создать змейку
|
|
||||||
pub fn spawn_snake(commands: &mut Commands) {
|
|
||||||
use crate::domain::{Direction, HEAD_SIZE, Head, SNAKE_VELOCITY, Velocity};
|
|
||||||
|
|
||||||
commands.spawn(Observer::new(crate::debug::trace_snake_moving));
|
|
||||||
commands.spawn(Observer::new(crate::observers::handle_collisions));
|
|
||||||
|
|
||||||
let head = commands
|
|
||||||
.spawn((
|
|
||||||
Head(Direction::default()),
|
|
||||||
Direction::default(),
|
|
||||||
Velocity(SNAKE_VELOCITY as f32),
|
|
||||||
Sprite::from_color(Color::srgb(1., 1., 1.), vec2(HEAD_SIZE as f32, HEAD_SIZE as f32)),
|
|
||||||
Transform {
|
|
||||||
translation: vec3(0.0, 0.0, 1.0),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
))
|
|
||||||
.id();
|
|
||||||
commands.spawn((
|
|
||||||
Sprite::from_color(Color::srgb(1., 0., 0.), vec2(HEAD_SIZE as f32 * 0.3, HEAD_SIZE as f32 * 0.3)),
|
|
||||||
Transform {
|
|
||||||
translation: vec3(HEAD_SIZE as f32 * -0.25, HEAD_SIZE as f32 * 0.25, 1.0),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
ChildOf(head),
|
|
||||||
));
|
|
||||||
commands.spawn((
|
|
||||||
Sprite::from_color(Color::srgb(0., 0., 1.), vec2(HEAD_SIZE as f32 * 0.2, HEAD_SIZE as f32 * 0.2)),
|
|
||||||
Transform {
|
|
||||||
translation: vec3(HEAD_SIZE as f32 * 0.25, HEAD_SIZE as f32 * 0.25, 1.0),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
ChildOf(head),
|
|
||||||
));
|
|
||||||
|
|
||||||
let tail = commands
|
|
||||||
.spawn((
|
|
||||||
Tail(head),
|
|
||||||
End,
|
|
||||||
Direction::default(),
|
|
||||||
Velocity(0.0),
|
|
||||||
Sprite::from_color(Color::srgb(0.7, 0.7, 0.7), vec2(HEAD_SIZE as f32 * 0.8, HEAD_SIZE as f32 * 0.8)),
|
|
||||||
Transform {
|
|
||||||
translation: vec3(0.0, 0.0, 0.0),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
))
|
|
||||||
.id();
|
|
||||||
commands.entity(head).observe(schedule_set_velocity(tail));
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user