From d43e57eeeb1e3f351523e494b4bdab3a8d85853b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Fri, 8 Nov 2024 16:39:21 +0100 Subject: [PATCH] remove flag and spawn --- assets/level.bw | 18 +++++------- src/game/mod.rs | 72 +++++++++------------------------------------ src/game/player.rs | 19 +----------- src/level_loader.rs | 5 +--- src/main.rs | 2 -- src/splash.rs | 8 ----- 6 files changed, 24 insertions(+), 100 deletions(-) diff --git a/assets/level.bw b/assets/level.bw index 4c80861..fad6d1f 100644 --- a/assets/level.bw +++ b/assets/level.bw @@ -1,12 +1,10 @@ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ -⬜⬜⬜⬜⬜🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜ -⬜⬜⬜⬜⬜🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ -⬜⬜⬜⬜⬜🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ -⬜🙂🟩⬜⬜🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ -⬜🟩🟩⬜⬜🟩⬜⬜🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜ -⬜⬜⬜⬜⬜🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟩⬜ -⬜⬜⬜⬜⬜🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟩⬜ -⬜⬜⬜⬜⬜🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟩⬜ -⬜⬜⬜⬜⬜🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🏁🟩⬜ -⬜⬜⬜⬜⬜🟩🟩🟩🟩🟩⬜⬜⬜⬜🟩🟩🟩🟩⬜ +⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ +⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ +⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ +⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ +⬜⬜⬜⬜⬜⬜🙂⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ +⬜⬜⬜⬜⬜🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜ +⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ +⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ diff --git a/src/game/mod.rs b/src/game/mod.rs index 8f9f812..fadd676 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -1,6 +1,4 @@ -use std::time::Duration; - -use bevy::{prelude::*, time::common_conditions::on_timer}; +use bevy::prelude::*; use crate::{ level_loader::{Level, LoadedLevel, Tile}, @@ -13,11 +11,7 @@ const SCALE: f32 = 0.5; pub fn game_plugin(app: &mut App) { app.add_plugins(player::player_plugin) - .add_systems(OnEnter(GameState::Game), display_level) - .add_systems( - Update, - animate_level.run_if(on_timer(Duration::from_secs_f32(0.25))), - ); + .add_systems(OnEnter(GameState::Game), display_level); } #[derive(Component)] @@ -40,12 +34,6 @@ struct Velocity { #[derive(Component)] struct Ground; -#[derive(Component)] -struct Flag; - -#[derive(Event)] -struct ReachedFlag; - fn ground_tile_index(line: &[Tile], i: usize) -> usize { match ( i == 0 || !matches!(line.get(i - 1).unwrap_or(&Tile::Empty), Tile::Ground), @@ -83,36 +71,6 @@ fn display_tile( StateScoped(GameState::Game), )); } - Tile::Spawn => { - commands.spawn(( - Sprite::from_atlas_image( - assets.player_image.clone(), - TextureAtlas { - layout: assets.player_layout.clone(), - index: 0, - }, - ), - Transform::from_xyz(x, y + 256.0 / 4.0 * SCALE, 2.0).with_scale(Vec3::splat(SCALE)), - StateScoped(GameState::Game), - Player, - )); - } - Tile::Flag => { - commands - .spawn(( - Sprite::from_atlas_image( - assets.items_image.clone(), - TextureAtlas { - layout: assets.items_layout.clone(), - index: 6, - }, - ), - Transform::from_xyz(x, y, 1.0).with_scale(Vec3::splat(SCALE)), - StateScoped(GameState::Game), - Flag, - )) - .observe(reached_flag); - } Tile::Empty => {} } } @@ -134,19 +92,17 @@ fn display_level( display_tile(&mut commands, tile, i, x, y, line, &assets); } } -} - -fn animate_level(mut flags: Query<&mut Sprite, With>) { - for mut flag in &mut flags { - let atlas = flag.texture_atlas.as_mut().unwrap(); - if atlas.index == 6 { - atlas.index = 12; - } else { - atlas.index = 6; - } - } -} -fn reached_flag(_trigger: Trigger, mut next: ResMut>) { - next.set(GameState::Menu); + commands.spawn(( + Sprite::from_atlas_image( + assets.player_image.clone(), + TextureAtlas { + layout: assets.player_layout.clone(), + index: 0, + }, + ), + Transform::from_xyz(0.0, 200.0, 0.0).with_scale(Vec3::splat(0.5)), + StateScoped(GameState::Game), + Player, + )); } diff --git a/src/game/player.rs b/src/game/player.rs index 7ef3526..de8712b 100644 --- a/src/game/player.rs +++ b/src/game/player.rs @@ -5,7 +5,7 @@ use bevy::{ use crate::GameState; -use super::{AgainstWall, Flag, Ground, IsOnGround, Player, ReachedFlag, Velocity}; +use super::{AgainstWall, Ground, IsOnGround, Player, Velocity}; pub fn player_plugin(app: &mut App) { app.add_systems( @@ -17,7 +17,6 @@ pub fn player_plugin(app: &mut App) { player_animation, death_by_fall, gravity.after(on_ground), - near_flag, ) .run_if(in_state(GameState::Game)), ); @@ -180,19 +179,3 @@ fn death_by_fall( next.set(GameState::Menu); } } - -fn near_flag( - mut commands: Commands, - player_transform: Query<&Transform, With>, - flags: Query<(Entity, &Transform), With>, -) { - let player_transform = player_transform.single(); - for (flag, flag_transform) in &flags { - let distance = player_transform - .translation - .distance(flag_transform.translation); - if distance < 50.0 { - commands.entity(flag).trigger(ReachedFlag); - } - } -} diff --git a/src/level_loader.rs b/src/level_loader.rs index 67b984a..2b7a3af 100644 --- a/src/level_loader.rs +++ b/src/level_loader.rs @@ -22,8 +22,6 @@ pub struct Level { pub enum Tile { Empty, Ground, - Spawn, - Flag, } #[derive(Default)] @@ -56,8 +54,7 @@ impl AssetLoader for LevelLoader { match char { '⬜' => line.push(Tile::Empty), '🟩' => line.push(Tile::Ground), - '🙂' => line.push(Tile::Spawn), - '🏁' => line.push(Tile::Flag), + '🙂' => (), '\n' => { tiles.push(line); line = vec![]; diff --git a/src/main.rs b/src/main.rs index 819b1fc..053758f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,6 +40,4 @@ struct GameAssets { player_layout: Handle, ground_image: Handle, ground_layout: Handle, - items_image: Handle, - items_layout: Handle, } diff --git a/src/splash.rs b/src/splash.rs index fe00d98..13e2a94 100644 --- a/src/splash.rs +++ b/src/splash.rs @@ -73,13 +73,5 @@ fn load_assets( None, None, )), - items_image: asset_server.load("spritesheet_items.png"), - items_layout: texture_atlas_layouts.add(TextureAtlasLayout::from_grid( - UVec2::new(128, 128), - 6, - 4, - None, - None, - )), }); }