diff --git a/snake-game/src/domain.rs b/snake-game/src/domain.rs index 678291a..df5f17b 100644 --- a/snake-game/src/domain.rs +++ b/snake-game/src/domain.rs @@ -19,6 +19,7 @@ pub enum Direction { } impl Direction { + /// Поворот налево pub fn rotate_left(&mut self) { *self = match self { Direction::Up => Direction::Left, @@ -28,6 +29,7 @@ impl Direction { }; } + /// Поворот направо pub fn rotate_right(&mut self) { *self = match self { Direction::Up => Direction::Right, @@ -37,12 +39,27 @@ impl Direction { }; } - pub fn vector(&self) -> Vec2 { + /// Получить значение кооринаты соответствующей направлению движения + pub fn get_coord(&self, vec: &Transform) -> f32 { match self { - Direction::Up => vec2(0., 1.), - Direction::Right => vec2(1., 0.), - Direction::Down => vec2(0., -1.), - Direction::Left => vec2(-1., 0.), + Direction::Up | Direction::Down => vec.translation.y, + Direction::Left | Direction::Right => vec.translation.x, + } + } + + /// Получить знак изменения соответствующий направлению движения + pub fn get_change_sign(&self) -> f32 { + match self { + Direction::Up | Direction::Right => 1.0, + Direction::Down | Direction::Left => -1.0, + } + } + + /// Установить значение кооринаты соответствующей направлению движения + pub fn set_coord(&self, vec: &mut Transform, value: f32) { + match self { + Direction::Up | Direction::Down => vec.translation.y = value, + Direction::Left | Direction::Right => vec.translation.x = value, } } } diff --git a/snake-game/src/gameplay.rs b/snake-game/src/gameplay.rs index 186abf5..d89d85a 100644 --- a/snake-game/src/gameplay.rs +++ b/snake-game/src/gameplay.rs @@ -23,26 +23,19 @@ pub fn head_rotation( pub fn moving(time: Res