diff --git a/src/states/linear/constants.rs b/src/states/linear/constants.rs index 248dac0..c1536a5 100644 --- a/src/states/linear/constants.rs +++ b/src/states/linear/constants.rs @@ -16,3 +16,4 @@ pub const ROUND_BALL_Z: f32 = 10.0; pub const PINK: Color = Color::srgb_u8(250, 0, 155); pub const BLUE: Color = Color::srgb_u8(0, 0, 255); pub const GREEN: Color = Color::srgb_u8(0, 255, 0); +pub const DARK_GREEN: Color = Color::srgb_u8(0, 88, 88); diff --git a/src/states/linear/plugin.rs b/src/states/linear/plugin.rs index b95b59e..68ccab7 100644 --- a/src/states/linear/plugin.rs +++ b/src/states/linear/plugin.rs @@ -25,6 +25,7 @@ impl Plugin for LinearPlayPlugin { Update, ( draw_track_gizmos, + draw_grid, spawn_round_ball, move_round_balls, ) diff --git a/src/states/linear/systems.rs b/src/states/linear/systems.rs index af95c8a..16d63b9 100644 --- a/src/states/linear/systems.rs +++ b/src/states/linear/systems.rs @@ -1,4 +1,4 @@ -use crate::states; +use crate::{HEIGHT, WIDTH, states, FACTOR}; use bevy::prelude::*; use states::linear::*; use std::f32::consts::FRAC_PI_2; @@ -22,7 +22,7 @@ pub fn draw_track_gizmos(track: Res, mut gizmos: Gizmos) { PathSegment::Turn { radius, left } => { // вычисляем нормаль, центр, угол поворота арки и знак let arc = helper_arc_calculator(current_pos, current_dir, *left, *radius); - + // арки никак не хотели вставать на свои места // gizmos.arc_2d( // Isometry2d::new(arc.center, Rot2::degrees(current_angle)), @@ -30,7 +30,7 @@ pub fn draw_track_gizmos(track: Res, mut gizmos: Gizmos) { // *radius, // GREEN, // ); - + // поэтому отрисовка поворота через линии let steps = 16; let mut prev_point = current_pos; @@ -43,7 +43,7 @@ pub fn draw_track_gizmos(track: Res, mut gizmos: Gizmos) { gizmos.line_2d(prev_point, point, GREEN); prev_point = point; } - + current_pos = arc.end_pos; current_dir = arc.normal; } @@ -51,4 +51,25 @@ pub fn draw_track_gizmos(track: Res, mut gizmos: Gizmos) { } // рисуем финиш gizmos.circle_2d(current_pos, 5.0, Color::WHITE); -} \ No newline at end of file +} + +pub fn draw_grid(mut gizmos: Gizmos) { + let half_x = WIDTH as f32 / 2.0 * FACTOR as f32; + let half_y = HEIGHT as f32 / 2.0 * FACTOR as f32; + + for i in 0..WIDTH { + gizmos.line_2d( + Vec2::new((i as f32 - 8.0) * FACTOR as f32, half_y), + Vec2::new((i as f32 - 8.0) * FACTOR as f32, -half_y), + DARK_GREEN, + ); + } + + for i in 0..HEIGHT { + gizmos.line_2d( + Vec2::new(-half_x, (i as f32 - 4.0) * FACTOR as f32), + Vec2::new(half_x, (i as f32 - 4.0) * FACTOR as f32), + DARK_GREEN, + ) + } +}