diff --git a/README.md b/README.md index 17112e6..65737f5 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,6 @@ * (?) multiplayer * more audio * "jumpable" component to avoid jumping on sensors -* bug: in level2, move the blue character to win, then reset. The characters are lighter than expected. ## Build diff --git a/src/game.rs b/src/game.rs index eba3d44..6cdd7cd 100644 --- a/src/game.rs +++ b/src/game.rs @@ -21,8 +21,6 @@ pub enum AudioMsg { Switch, } -pub struct FirstLevel(pub LevelId); - #[derive(Clone, Copy, Eq, Hash, PartialEq)] pub struct LevelId(pub u32); @@ -101,13 +99,12 @@ pub struct CollisionCount(usize); // Systems fn setup( - first_level: Res, mut current_level: ResMut, mut level_startup_event: EventWriter, mut camera_query: Query<&mut Transform, With>, ) { if current_level.0.is_none() { - current_level.0 = Some(first_level.0); + current_level.0 = Some(LevelId(0)); } crate::levels::setup_level(&mut level_startup_event, &mut camera_query); @@ -284,25 +281,6 @@ fn collision_event_system( c_color.0 = filter.apply(c_color.0); *c_material = materials.add(ColorMaterial::from(c_color.0)); - if c_player.is_some() { - audio - .send(AudioMsg::Color([ - c_color.0.r(), - c_color.0.g(), - c_color.0.b(), - ])) - .ok(); - } - } else if let ( - Ok((mut c_color, _c_transform, mut c_material, c_player)), - Ok(filter), - ) = ( - character_query.get_mut(*e2), - pass_through_filter_query.get(*e1), - ) { - c_color.0 = filter.apply(c_color.0); - *c_material = materials.add(ColorMaterial::from(c_color.0)); - if c_player.is_some() { audio .send(AudioMsg::Color([ @@ -447,7 +425,7 @@ fn win_setup( "Press ENTER to level up", TextStyle { font, - font_size: 36.0, + font_size: 32.0, color: Color::WHITE, }, ) diff --git a/src/levels.rs b/src/levels.rs index ad217e1..ef9557f 100644 --- a/src/levels.rs +++ b/src/levels.rs @@ -3,8 +3,6 @@ mod game_over; mod level0; mod level1; -mod level2; -mod level3; use crate::game::*; @@ -55,22 +53,6 @@ pub fn post_setup_level( &audio, &asset_server, ), - 2 => level2::setup( - &mut commands, - &mut meshes, - &character_meshes, - &mut materials, - &audio, - &asset_server, - ), - 3 => level3::setup( - &mut commands, - &mut meshes, - &character_meshes, - &mut materials, - &audio, - &asset_server, - ), _ => game_over::setup( &mut commands, &mut meshes, diff --git a/src/levels/game_over.rs b/src/levels/game_over.rs index d513383..5fa3372 100644 --- a/src/levels/game_over.rs +++ b/src/levels/game_over.rs @@ -54,7 +54,7 @@ pub fn setup( character_meshes, materials, audio, - Transform::from_xyz(0., -64., 0.), + Transform::from_xyz(-128., -64., 0.), Color::RED, true, ); diff --git a/src/levels/level0.rs b/src/levels/level0.rs index d6789d8..3679121 100644 --- a/src/levels/level0.rs +++ b/src/levels/level0.rs @@ -1,5 +1,3 @@ -// Movement tutorial - use crate::game::*; use bevy::prelude::*; @@ -16,7 +14,7 @@ pub fn setup( commands .spawn_bundle(Text2dBundle { text: Text::from_section( - "Combine the colors to synthetize a white light.\nUse arrows to move.", + "Combine the colors to synthetize a white light.\nTab to switch; Arrows to move.", TextStyle { font, font_size: 32.0, @@ -42,9 +40,9 @@ pub fn setup( materials, audio, [ - (Transform::from_xyz(0., -192., 0.), Color::RED), - (Transform::from_xyz(-128., -192., 0.), Color::GREEN), - (Transform::from_xyz(128., -192., 0.), Color::BLUE), + (Transform::from_xyz(-128., -64., 0.), Color::RED), + (Transform::from_xyz(0., -64., 0.), Color::GREEN), + (Transform::from_xyz(128., -64., 0.), Color::BLUE), ], ); } diff --git a/src/levels/level1.rs b/src/levels/level1.rs index 1d92187..ce3906b 100644 --- a/src/levels/level1.rs +++ b/src/levels/level1.rs @@ -1,5 +1,3 @@ -// Switch tutorial - use crate::game::*; use bevy::prelude::*; @@ -12,22 +10,6 @@ pub fn setup( audio: &Res>, asset_server: &Res, ) { - let font = asset_server.get_handle("UacariLegacy-Thin.ttf"); - commands - .spawn_bundle(Text2dBundle { - text: Text::from_section( - "Press Tab to switch.", - TextStyle { - font, - font_size: 32.0, - color: Color::WHITE, - }, - ) - .with_alignment(TextAlignment::CENTER), - ..Default::default() - }) - .insert(Level); - spawn_platforms( commands, meshes, @@ -38,8 +20,8 @@ pub fn setup( Vec2 { x: 800.0, y: 16.0 }, ), ( - Transform::from_xyz(128.0, 256.0, 0.0), - Vec2 { x: 96.0, y: 16.0 }, + Transform::from_xyz(256.0, -128.0, 0.0), + Vec2 { x: 400.0, y: 16.0 }, ), ], ); @@ -50,9 +32,25 @@ pub fn setup( materials, audio, [ - (Transform::from_xyz(0., -192., 0.), Color::GREEN), - (Transform::from_xyz(-128., -192., 0.), Color::RED), - (Transform::from_xyz(128., 320., 0.), Color::BLUE), + (Transform::from_xyz(128., 64., 0.), Color::BLUE), + (Transform::from_xyz(-128., -128., 0.), Color::RED), + (Transform::from_xyz(0., -128., 0.), Color::GREEN), ], ); + + spawn_absorbing_filter( + commands, + meshes, + materials, + Transform::from_xyz(0., 0., 2.), + Vec2 { x: 128.0, y: 16.0 }, + Color::RED, + ); + + spawn_rotating_filter( + commands, + asset_server, + Transform::from_xyz(256., -224., 2.), + 45., + ); } diff --git a/src/levels/level2.rs b/src/levels/level2.rs deleted file mode 100644 index 91606d5..0000000 --- a/src/levels/level2.rs +++ /dev/null @@ -1,72 +0,0 @@ -// Absorbing filter tutorial - -use crate::game::*; - -use bevy::prelude::*; - -pub fn setup( - commands: &mut Commands, - meshes: &mut ResMut>, - character_meshes: &Res, - materials: &mut ResMut>, - audio: &Res>, - asset_server: &Res, -) { - let font = asset_server.get_handle("UacariLegacy-Thin.ttf"); - commands - .spawn_bundle(Text2dBundle { - text: Text::from_section( - "Press R to reset.", - TextStyle { - font, - font_size: 32.0, - color: Color::WHITE, - }, - ) - .with_alignment(TextAlignment::CENTER), - ..Default::default() - }) - .insert(Level); - - spawn_platforms( - commands, - meshes, - materials, - [ - ( - Transform::from_xyz(0.0, -256.0, 0.0), - Vec2 { x: 800.0, y: 16.0 }, - ), - ( - Transform::from_xyz(0.0, -128.0, 0.0), - Vec2 { x: 800.0, y: 16.0 }, - ), - ], - ); - - spawn_characters( - commands, - character_meshes, - materials, - audio, - [ - ( - Transform::from_xyz(-128., -192., 0.), - Color::rgba(1., 0.64, 0., 1.), - ), - ( - Transform::from_xyz(128., -192., 0.), - Color::rgba(0., 0.37, 1., 1.), - ), - ], - ); - - spawn_absorbing_filter( - commands, - meshes, - materials, - Transform::from_xyz(0., -192., 2.), - Vec2 { x: 16.0, y: 112.0 }, - Color::RED, - ); -} diff --git a/src/levels/level3.rs b/src/levels/level3.rs deleted file mode 100644 index 5fa2607..0000000 --- a/src/levels/level3.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Rotating filter tutorial - -use crate::game::*; - -use bevy::prelude::*; - -pub fn setup( - commands: &mut Commands, - meshes: &mut ResMut>, - character_meshes: &Res, - materials: &mut ResMut>, - audio: &Res>, - asset_server: &Res, -) { - let font = asset_server.get_handle("UacariLegacy-Thin.ttf"); - commands - .spawn_bundle(Text2dBundle { - text: Text::from_section( - "Let's rotate the hue!", - TextStyle { - font, - font_size: 32.0, - color: Color::WHITE, - }, - ) - .with_alignment(TextAlignment::CENTER), - ..Default::default() - }) - .insert(Level); - - spawn_platforms( - commands, - meshes, - materials, - [( - Transform::from_xyz(0.0, -256.0, 0.0), - Vec2 { x: 800.0, y: 16.0 }, - )], - ); - - spawn_characters( - commands, - character_meshes, - materials, - audio, - [ - (Transform::from_xyz(0., -192., 0.), Color::RED), - (Transform::from_xyz(-128., -192., 0.), Color::RED), - (Transform::from_xyz(128., -192., 0.), Color::RED), - ], - ); - - spawn_rotating_filter( - commands, - asset_server, - Transform::from_xyz(0., -64., 2.), - 45., - ); -} diff --git a/src/main.rs b/src/main.rs index 6cb80d7..08b60fa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,20 +26,10 @@ fn main() { #[cfg(not(target_arch = "wasm32"))] std::thread::spawn(move || audio::setup(audio_event_receiver)); - #[cfg(not(target_arch = "wasm32"))] - let first_level = game::LevelId( - std::env::args() - .nth(1) - .map_or(0, |s| s.parse().unwrap_or(0)), - ); - #[cfg(target_arch = "wasm32")] - let first_level = game::LevelId(0); - App::new() .insert_resource(Msaa { samples: 4 }) .insert_resource(audio_event_sender) .add_state(AppState::Menu) - .insert_resource(game::FirstLevel(first_level)) .insert_resource(ClearColor(Color::BLACK)) .add_plugins(DefaultPlugins) .add_plugin(RapierPhysicsPlugin::::pixels_per_meter(64.0)) diff --git a/src/menu.rs b/src/menu.rs index fff9778..52bcdb9 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -26,7 +26,7 @@ fn setup(mut commands: Commands, asset_server: Res) { "BEVYJAM", TextStyle { font: font.clone(), - font_size: 96.0, + font_size: 48.0, color: Color::WHITE, }, )