Merge branch 'master' of https://git.txmn.tk/tuxmain/bevyjam into nixon-main
This commit is contained in:
commit
b45f052e5a
15 changed files with 173 additions and 81 deletions
64
src/game.rs
64
src/game.rs
|
|
@ -54,7 +54,10 @@ 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),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -118,7 +121,7 @@ impl PlatformCount {
|
|||
}
|
||||
|
||||
fn is_landed(&self) -> bool {
|
||||
return self.0 != 0;
|
||||
self.0 != 0
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -280,7 +283,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"),
|
||||
|
|
@ -294,12 +297,7 @@ fn char_char_collision_event_system(
|
|||
mut commands: Commands,
|
||||
|
||||
mut collision_events: EventReader<CollisionEvent>,
|
||||
character_query: Query<(
|
||||
&mut CharacterColor,
|
||||
&Transform,
|
||||
&mut Handle<ColorMaterial>,
|
||||
Option<&Player>,
|
||||
)>,
|
||||
character_query: Query<(&CharacterColor, &Transform, Option<&Player>)>,
|
||||
|
||||
mut character_list: ResMut<CharacterList>,
|
||||
mut app_state: ResMut<State<AppState>>,
|
||||
|
|
@ -311,16 +309,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_material, c1_player)),
|
||||
Ok((c2_color, c2_transform, _c2_material, c2_player)),
|
||||
Ok((c1_color, c1_transform, c1_player)),
|
||||
Ok((c2_color, c2_transform, 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 {
|
||||
|
|
@ -359,36 +357,32 @@ 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
22
src/main.rs
22
src/main.rs
|
|
@ -13,7 +13,7 @@ mod audio_system;
|
|||
use bevy::{
|
||||
asset::{Asset, HandleId, LoadState},
|
||||
prelude::*,
|
||||
window::{WindowId, WindowMode},
|
||||
window::{WindowMode, WindowResizeConstraints},
|
||||
};
|
||||
use bevy_common_assets::json::JsonAssetPlugin;
|
||||
use bevy_rapier2d::prelude::*;
|
||||
|
|
@ -52,6 +52,19 @@ 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))
|
||||
|
|
@ -82,12 +95,7 @@ fn main() {
|
|||
.run();
|
||||
}
|
||||
|
||||
fn setup(mut commands: Commands, mut windows: ResMut<Windows>, asset_server: Res<AssetServer>) {
|
||||
windows
|
||||
.get_mut(WindowId::primary())
|
||||
.unwrap()
|
||||
.set_title(String::from("Bevyjam"));
|
||||
|
||||
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||
let mut assets = LoadingAssets(Vec::new());
|
||||
commands.insert_resource(
|
||||
assets.add(asset_server.load::<levels::StoredLevels, _>("game.levels.json")),
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
|||
commands
|
||||
.spawn_bundle(Text2dBundle {
|
||||
text: Text::from_section(
|
||||
"BEVYJAM",
|
||||
"Lux synthesĕ",
|
||||
TextStyle {
|
||||
font: font.clone(),
|
||||
font_size: 96.0,
|
||||
|
|
|
|||
|
|
@ -143,6 +143,6 @@ fn particle_effect_system(
|
|||
/ particle_effect.radius_squared,
|
||||
);
|
||||
}
|
||||
transform.translation.z = 0.005;
|
||||
transform.translation.z = 0.005;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue