diff --git a/Cargo.lock b/Cargo.lock index 2f5ad98..4a6c522 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -923,6 +923,24 @@ dependencies = [ "winit", ] +[[package]] +name = "bevyjam" +version = "0.1.0" +dependencies = [ + "bevy", + "bevy-inspector-egui", + "bevy_common_assets", + "bevy_mod_picking", + "bevy_rapier2d", + "crossbeam-channel", + "rand", + "rand_distr", + "rapier2d", + "serde", + "serde_json", + "ticktock", +] + [[package]] name = "bindgen" version = "0.59.2" @@ -2164,9 +2182,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.8" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" dependencies = [ "autocfg", "scopeguard", @@ -2181,24 +2199,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "lux-synthese" -version = "0.1.0" -dependencies = [ - "bevy", - "bevy-inspector-egui", - "bevy_common_assets", - "bevy_mod_picking", - "bevy_rapier2d", - "crossbeam-channel", - "rand", - "rand_distr", - "rapier2d", - "serde", - "serde_json", - "ticktock", -] - [[package]] name = "mach" version = "0.3.2" @@ -3654,7 +3654,7 @@ dependencies = [ "js-sys", "log", "naga", - "parking_lot 0.12.1", + "parking_lot 0.11.2", "raw-window-handle", "smallvec", "wasm-bindgen", @@ -3679,7 +3679,7 @@ dependencies = [ "fxhash", "log", "naga", - "parking_lot 0.12.1", + "parking_lot 0.11.2", "profiling", "raw-window-handle", "smallvec", @@ -3715,7 +3715,7 @@ dependencies = [ "metal", "naga", "objc", - "parking_lot 0.12.1", + "parking_lot 0.11.2", "profiling", "range-alloc", "raw-window-handle", diff --git a/Cargo.toml b/Cargo.toml index 1b41cff..e30f7ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "lux-synthese" +name = "bevyjam" version = "0.1.0" authors = ["tuxmain "] license = "AGPL-3.0-only" diff --git a/README.md b/README.md index 3aaeb14..b53f02d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ -# Lux synthesĕ - -[Play in browser](https://txmn.tk/projects/lux-synthese/) +# Bevyjam ## Controls @@ -8,19 +6,20 @@ * **Switch character**: Tab * **Level up**: Enter (when character is white) * **Reset**: R -* **Fullscreen**: F11 -* **Exit**: Escape ## TODO +* name * more filters * despawn black characters * despawn character when too far * more levels * (?) 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. (also level 4) * redshift warning +* itchio test ## Build @@ -67,6 +66,6 @@ Edit the level `N: u32` with the command `bevyjam e`. GNU AGPL v3, CopyLeft 2022 Pascal Engélibert, Nixon Cheng -_Lux synthesĕ_ is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License. -_Lux synthesĕ_ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. -You should have received a copy of the GNU Affero General Public License along with _Lux synthesĕ_. If not, see https://www.gnu.org/licenses/. +This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License. +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. +You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/. diff --git a/assets/UacariLegacy-Bold.ttf b/assets/UacariLegacy-Bold.ttf deleted file mode 100644 index 7309e66..0000000 Binary files a/assets/UacariLegacy-Bold.ttf and /dev/null differ diff --git a/assets/UacariLegacy-Regular.ttf b/assets/UacariLegacy-Regular.ttf deleted file mode 100644 index 7eb6474..0000000 Binary files a/assets/UacariLegacy-Regular.ttf and /dev/null differ diff --git a/assets/game.levels.json b/assets/game.levels.json index 632dd99..bd87468 100644 --- a/assets/game.levels.json +++ b/assets/game.levels.json @@ -59,10 +59,10 @@ { "pos": [ 0.0, - 64.0 + 0.0 ], "font_size": 32.0, - "text": "Combine the colors\nto synthetize a white light.\nUse arrows to move." + "text": "Combine the colors to synthetize a white light.\nUse arrows to move." } ] }, @@ -374,11 +374,11 @@ "texts": [ { "pos": [ - -304.0, + 0.0, -64.0 ], "font_size": 32.0, - "text": "Too much light\ncauses some platforms to melt." + "text": "Too much light\ncause some platforms to melt." } ] }, diff --git a/build-itchio.sh b/build-itchio.sh deleted file mode 100644 index 2657220..0000000 --- a/build-itchio.sh +++ /dev/null @@ -1,13 +0,0 @@ -sh build-wasm.sh || exit 1 - -mkdir -p target/itchio/wasm/target -mkdir -p target/itchio/wasm/assets - -cp assets/* target/itchio/wasm/assets/ -cp index.html target/itchio/wasm/ -cp target/lux-synthese.js target/itchio/wasm/target/ -cp target/lux-synthese_bg.wasm target/itchio/wasm/target/ -jq -c < assets/game.levels.json > target/itchio/wasm/assets/game.levels.json - -cd target/itchio/wasm -zip -r ../wasm.zip . diff --git a/build-wasm.sh b/build-wasm.sh index 793798d..0a2d039 100644 --- a/build-wasm.sh +++ b/build-wasm.sh @@ -1,3 +1,3 @@ cargo build --release --target wasm32-unknown-unknown || exit 1 echo "==> wasm-bindgen..." -wasm-bindgen --out-name lux-synthese --out-dir target --target web target/wasm32-unknown-unknown/release/lux-synthese.wasm || exit 1 +wasm-bindgen --out-name bevyjam --out-dir target --target web target/wasm32-unknown-unknown/release/bevyjam.wasm || exit 1 diff --git a/cover.png b/cover.png deleted file mode 100644 index 282923f..0000000 Binary files a/cover.png and /dev/null differ diff --git a/cover.xcf b/cover.xcf deleted file mode 100644 index 9a7f4b5..0000000 Binary files a/cover.xcf and /dev/null differ diff --git a/index.html b/index.html index 6498daa..4674d60 100644 --- a/index.html +++ b/index.html @@ -2,88 +2,12 @@ - Lux synthesĕ - + Bevyjam -
-

Lux synthesĕ

-

- Note: audio does not work in the WASM build. -

-

Controls

-
    -
  • Move: Arrows
  • -
  • Switch: Tab
  • -
  • Level up: Enter
  • -
  • Reset: R
  • -
-

Source

-

- The source code of this free software is available in our Git repository. -

-

- GNU AGPL v3: CopyLeft 2022 Pascal Engélibert, Nixon Cheng
- Lux synthesĕ is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License.
- Lux synthesĕ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License along with Lux synthesĕ. If not, see https://www.gnu.org/licenses/. -

-
diff --git a/src/game.rs b/src/game.rs index 09e87a2..349e127 100644 --- a/src/game.rs +++ b/src/game.rs @@ -54,10 +54,7 @@ impl Plugin for GamePlugin { .add_system_to_stage(CoreStage::PostUpdate, char_char_collision_event_system) .add_system_to_stage(CoreStage::PostUpdate, char_platform_collision_event_system) // collision event system might remove items, therefore, we should detect platforms first before removing them - .add_system_to_stage( - CoreStage::PostUpdate, - collision_event_system.after(char_platform_collision_event_system), - ); + .add_system_to_stage(CoreStage::PostUpdate, collision_event_system.after(char_platform_collision_event_system)); } } @@ -121,7 +118,7 @@ impl PlatformCount { } fn is_landed(&self) -> bool { - self.0 != 0 + return self.0 != 0; } } @@ -283,7 +280,7 @@ pub fn spawn_melty_platform( .insert(Collider::cuboid(48., 8.)) .insert(Melty(color)) .insert(Level) - .insert(Platform) + .insert(Platform) .with_children(|c| { c.spawn_bundle(SpriteBundle { texture: asset_server.get_handle("melty.png"), @@ -297,7 +294,12 @@ fn char_char_collision_event_system( mut commands: Commands, mut collision_events: EventReader, - character_query: Query<(&CharacterColor, &Transform, Option<&Player>)>, + character_query: Query<( + &mut CharacterColor, + &Transform, + &mut Handle, + Option<&Player>, + )>, mut character_list: ResMut, mut app_state: ResMut>, @@ -309,16 +311,16 @@ fn char_char_collision_event_system( for collision_event in collision_events.iter() { if let CollisionEvent::Started(e1, e2, _flags) = collision_event { if let ( - Ok((c1_color, c1_transform, c1_player)), - Ok((c2_color, c2_transform, c2_player)), + Ok((c1_color, c1_transform, _c1_material, c1_player)), + Ok((c2_color, c2_transform, _c2_material, c2_player)), ) = (character_query.get(*e1), character_query.get(*e2)) { character_list.0.remove(e1); character_list.0.remove(e2); commands.entity(*e1).despawn_recursive(); commands.entity(*e2).despawn_recursive(); - let new_color = - (Vec4::from(c1_color.0) + Vec4::from(c2_color.0)).clamp(Vec4::ZERO, Vec4::ONE); + let new_color = (Vec4::from(c1_color.0) + Vec4::from(c2_color.0)) + .clamp(Vec4::ZERO, Vec4::ONE); // If color approximately white if app_state.current() == &AppState::Game && new_color.min_element() >= 0.9 { @@ -357,32 +359,36 @@ fn char_platform_collision_event_system( ) { // detect platform + player collisions only for collision_event in collision_events.iter() { - match collision_event { + match collision_event { CollisionEvent::Started(e1, e2, flags) => { if *flags == CollisionEventFlags::SENSOR { - if let (Ok(mut platform_count), Ok(_)) = - (platform_count_query.get_mut(*e1), platform_query.get(*e2)) - { + if let (Ok(mut platform_count), Ok(_)) = ( + platform_count_query.get_mut(*e1), + platform_query.get(*e2), + ) { platform_count.increment(); - } else if let (Ok(mut platform_count), Ok(_)) = - (platform_count_query.get_mut(*e2), platform_query.get(*e1)) - { + } else if let (Ok(mut platform_count), Ok(_)) = ( + platform_count_query.get_mut(*e2), + platform_query.get(*e1), + ) { platform_count.increment(); - } + } } } - + CollisionEvent::Stopped(e1, e2, flags) => { if *flags == CollisionEventFlags::SENSOR { - if let (Ok(mut platform_count), Ok(_)) = - (platform_count_query.get_mut(*e1), platform_query.get(*e2)) - { - platform_count.decrement(); - } else if let (Ok(mut platform_count), Ok(_)) = - (platform_count_query.get_mut(*e2), platform_query.get(*e1)) - { - platform_count.decrement(); - } + if let (Ok(mut platform_count), Ok(_)) = ( + platform_count_query.get_mut(*e1), + platform_query.get(*e2), + ) { + platform_count.decrement(); + } else if let (Ok(mut platform_count), Ok(_)) = ( + platform_count_query.get_mut(*e2), + platform_query.get(*e1), + ) { + platform_count.decrement(); + } } } } diff --git a/src/main.rs b/src/main.rs index dafcd9e..65d8dae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,7 @@ mod audio_system; use bevy::{ asset::{Asset, HandleId, LoadState}, prelude::*, - window::{WindowMode, WindowResizeConstraints}, + window::{WindowId, WindowMode}, }; use bevy_common_assets::json::JsonAssetPlugin; use bevy_rapier2d::prelude::*; @@ -52,19 +52,6 @@ fn main() { let mut app = App::new(); app.insert_resource(Msaa { samples: 4 }) - .insert_resource(WindowDescriptor { - width: 640.0, - height: 480.0, - resize_constraints: WindowResizeConstraints { - min_width: 256., - min_height: 256., - max_width: f32::INFINITY, - max_height: f32::INFINITY, - }, - resizable: true, - title: "Lux synthesĕ".into(), - ..Default::default() - }) .insert_resource(UseEditor(use_editor)) .add_state(AppState::Loading) .insert_resource(game::FirstLevel(first_level)) @@ -95,7 +82,12 @@ fn main() { .run(); } -fn setup(mut commands: Commands, asset_server: Res) { +fn setup(mut commands: Commands, mut windows: ResMut, asset_server: Res) { + windows + .get_mut(WindowId::primary()) + .unwrap() + .set_title(String::from("Bevyjam")); + let mut assets = LoadingAssets(Vec::new()); commands.insert_resource( assets.add(asset_server.load::("game.levels.json")), diff --git a/src/menu.rs b/src/menu.rs index 0fd8a8f..f35f024 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -39,7 +39,7 @@ fn setup(mut commands: Commands, asset_server: Res) { commands .spawn_bundle(Text2dBundle { text: Text::from_section( - "Lux synthesĕ", + "BEVYJAM", TextStyle { font: font.clone(), font_size: 96.0, diff --git a/src/particle_effect.rs b/src/particle_effect.rs index 146ac73..4912d46 100644 --- a/src/particle_effect.rs +++ b/src/particle_effect.rs @@ -143,6 +143,6 @@ fn particle_effect_system( / particle_effect.radius_squared, ); } - transform.translation.z = 0.005; + transform.translation.z = 0.005; } }