Skip to content

Commit

Permalink
Slapping a grid on it
Browse files Browse the repository at this point in the history
  • Loading branch information
marcusbuffett committed Nov 9, 2020
1 parent 6eba1ee commit d1f4225
Showing 1 changed file with 52 additions and 1 deletion.
53 changes: 52 additions & 1 deletion src/main.rs
@@ -1,6 +1,28 @@
#![warn(clippy::complexity)]
use bevy::prelude::*;

const ARENA_HEIGHT: u32 = 10;
const ARENA_WIDTH: u32 = 10;

#[derive(Default, Copy, Clone, Eq, PartialEq, Hash)]
struct Position {
x: i32,
y: i32,
}

struct Size {
width: f32,
height: f32,
}
impl Size {
pub fn square(x: f32) -> Self {
Self {
width: x,
height: x,
}
}
}

struct SnakeHead;
struct Materials {
head_material: Handle<ColorMaterial>,
Expand All @@ -20,7 +42,9 @@ fn spawn_snake(mut commands: Commands, materials: Res<Materials>) {
sprite: Sprite::new(Vec2::new(10.0, 10.0)),
..Default::default()
})
.with(SnakeHead);
.with(SnakeHead)
.with(Position { x: 3, y: 3 })
.with(Size::square(0.8));
}

fn snake_movement(
Expand All @@ -43,12 +67,39 @@ fn snake_movement(
}
}

fn size_scaling(windows: Res<Windows>, mut q: Query<(&Size, &mut Sprite)>) {
let window = windows.get_primary().unwrap();
for (sprite_size, mut sprite) in q.iter_mut() {
sprite.size = Vec2::new(
sprite_size.width / ARENA_WIDTH as f32 * window.width() as f32,
sprite_size.height / ARENA_HEIGHT as f32 * window.height() as f32,
);
}
}

fn position_translation(windows: Res<Windows>, mut q: Query<(&Position, &mut Transform)>) {
fn convert(pos: f32, bound_window: f32, bound_game: f32) -> f32 {
let tile_size = bound_window / bound_game;
pos / bound_game * bound_window - (bound_window / 2.) + (tile_size / 2.)
}
let window = windows.get_primary().unwrap();
for (pos, mut transform) in q.iter_mut() {
transform.translation = Vec3::new(
convert(pos.x as f32, window.width() as f32, ARENA_WIDTH as f32),
convert(pos.y as f32, window.height() as f32, ARENA_HEIGHT as f32),
0.0,
);
}
}

fn main() {
App::build()
.add_startup_system(setup.system())
.add_startup_stage("game_setup")
.add_startup_system_to_stage("game_setup", spawn_snake.system())
.add_system(snake_movement.system())
.add_system(position_translation.system())
.add_system(size_scaling.system())
.add_plugins(DefaultPlugins)
.run();
}

0 comments on commit d1f4225

Please sign in to comment.