diff options
-rw-r--r-- | assets/tileset.png | bin | 18168 -> 21614 bytes | |||
-rw-r--r-- | src/main.rs | 44 |
2 files changed, 37 insertions, 7 deletions
diff --git a/assets/tileset.png b/assets/tileset.png Binary files differindex 1d190d8..55e6f9a 100644 --- a/assets/tileset.png +++ b/assets/tileset.png diff --git a/src/main.rs b/src/main.rs index 5577a11..bab21a0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use bevy::prelude::*; use gems::constants; use rand::{ distributions::{Distribution, Standard}, - Rng, + thread_rng, Rng, }; #[derive(Debug, PartialEq, Clone, Copy)] @@ -177,6 +177,33 @@ fn cell_check_system(mut cell_query: Query<(&mut Cell, &mut TextureAtlasSprite)> } } +fn star_spawning_system(commands: &mut Commands, time: Res<Time>, mut q: Query<&mut Timer>) { + for mut timer in q.iter_mut() { + if !timer.repeating() { + timer.tick(time.delta_seconds()); + if timer.just_finished() { + timer.set_duration(thread_rng().gen_range(2..5) as f32); + timer.reset(); + commands + .spawn(SpriteSheetBundle { + sprite: TextureAtlasSprite::new(16), + transform: Transform { + translation: Vec3 { + x: thread_rng().gen_range(-300..300) as f32, + y: thread_rng().gen_range(-200..300) as f32, + z: 0.0, + }, + scale: Vec3::splat(thread_rng().gen_range(1..3) as f32), + ..Default::default() + }, + ..Default::default() + }) + .with(Timer::from_seconds(0.25, true)); + } + } + } +} + fn cell_falling_system(mut cell_query: Query<(&mut Cell, &mut TextureAtlasSprite)>) { let mut have_gems = Vec::new(); for (cell, _sprite) in cell_query.iter_mut() { @@ -216,7 +243,7 @@ pub fn setup( let background = asset_server.load("background.png"); let tileset = asset_server.load("tileset.png"); - let atlas = TextureAtlas::from_grid(tileset, Vec2::new(16.0, 16.0), 4, 4); + let atlas = TextureAtlas::from_grid(tileset, Vec2::new(16.0, 16.0), 4, 5); let atlas_handle = texture_atlases.add(atlas); commands @@ -248,6 +275,7 @@ pub fn setup( }, ..Default::default() }) + .spawn((Timer::from_seconds(1.0, false),)) .spawn(SpriteSheetBundle { sprite: TextureAtlasSprite::new(12), texture_atlas: atlas_handle.clone(), @@ -273,7 +301,7 @@ pub fn setup( translation: Vec3 { x: ((i as f32) * 16.0 * 3.5) - 320.0, y: ((j as f32) * 16.0 * 3.5) - 160.0, - z: 0.0, + z: 1.0, }, scale: Vec3::splat(3.5), ..Default::default() @@ -285,7 +313,7 @@ pub fn setup( } } -fn cosmonaut_animation_system( +fn animation_system( commands: &mut Commands, time: Res<Time>, mut cell_query: Query<(Entity, &mut Timer, &mut TextureAtlasSprite), Without<Cell>>, @@ -298,12 +326,13 @@ fn cosmonaut_animation_system( 10 => 13, 13 => 14, 11 => 12, + 16 => 17, + 17 => 18, _ => 11, }; sprite.index = index; if index == 12 { - commands.remove_one::<Timer>(entity); - commands.remove_one::<TextureAtlasSprite>(entity); + commands.despawn(entity); } } } @@ -421,7 +450,8 @@ impl Plugin for GemsPlugin { app.add_system(explosion_animation_system.system()); app.add_system(mouse_system.system()); app.add_system(cosmonaut_detect_system.system()); - app.add_system(cosmonaut_animation_system.system()); + app.add_system(animation_system.system()); + app.add_system(star_spawning_system.system()); } } |