|
|
|
|
@ -1,7 +1,6 @@
|
|
|
|
|
// Bevy basically forces "complex types" with Querys
|
|
|
|
|
#![allow(clippy::type_complexity)]
|
|
|
|
|
|
|
|
|
|
use bevy::audio::PlaybackMode;
|
|
|
|
|
use bevy::image::{ImageLoaderSettings, ImageSampler};
|
|
|
|
|
use bevy::render::view::ColorGrading;
|
|
|
|
|
use games::physics2d::*;
|
|
|
|
|
@ -42,7 +41,7 @@ fn main() {
|
|
|
|
|
)
|
|
|
|
|
.add_systems(OnEnter(PlayerState::Alive), alive_bird)
|
|
|
|
|
.add_systems(OnEnter(PlayerState::Alive), reset_button::<FlapButton>)
|
|
|
|
|
.add_systems(OnEnter(PlayerState::Rewind), (start_rewinding, alive_bird))
|
|
|
|
|
.add_systems(OnEnter(PlayerState::Rewind), alive_bird)
|
|
|
|
|
.add_systems(OnEnter(PlayerState::Pause), pause_bird)
|
|
|
|
|
.add_systems(OnEnter(PlayerState::Stasis), pause_bird)
|
|
|
|
|
.add_systems(OnExit(PlayerState::Stasis), reset_button::<RewindButton>)
|
|
|
|
|
@ -494,18 +493,9 @@ fn init_assets(
|
|
|
|
|
bird_assets.mesh = Mesh2d(meshes.add(Rectangle::new(1.0, 1.2)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Component)]
|
|
|
|
|
struct FlapSfx;
|
|
|
|
|
|
|
|
|
|
#[derive(Component)]
|
|
|
|
|
struct FlapButton;
|
|
|
|
|
|
|
|
|
|
#[derive(Component)]
|
|
|
|
|
struct BonkSfx;
|
|
|
|
|
|
|
|
|
|
#[derive(Component)]
|
|
|
|
|
struct RewindSfx;
|
|
|
|
|
|
|
|
|
|
#[derive(Component)]
|
|
|
|
|
struct RewindButton;
|
|
|
|
|
|
|
|
|
|
@ -816,8 +806,6 @@ fn flap(
|
|
|
|
|
trigger: Trigger<Flap>,
|
|
|
|
|
mut bird: Query<&mut ExternalImpulse, With<Bird>>,
|
|
|
|
|
mut flaps: ResMut<Flaps>,
|
|
|
|
|
server: ResMut<AssetServer>,
|
|
|
|
|
mut commands: Commands,
|
|
|
|
|
) {
|
|
|
|
|
debug!("real flap for {:?}", trigger.target());
|
|
|
|
|
// Increment flap stat
|
|
|
|
|
@ -826,16 +814,6 @@ fn flap(
|
|
|
|
|
// Flap birds wings
|
|
|
|
|
if let Ok(mut f) = bird.get_mut(trigger.target()) {
|
|
|
|
|
f.apply_impulse(Vec2::Y * 5000.0 + Vec2::X * 1000.0);
|
|
|
|
|
|
|
|
|
|
// Play flap sfx
|
|
|
|
|
commands.spawn((
|
|
|
|
|
AudioPlayer::new(server.load("flappy/bonk.ogg")),
|
|
|
|
|
PlaybackSettings {
|
|
|
|
|
mode: PlaybackMode::Despawn,
|
|
|
|
|
..default()
|
|
|
|
|
},
|
|
|
|
|
BonkSfx,
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -947,8 +925,6 @@ fn detect_dead(
|
|
|
|
|
bird: Single<&ColliderAabb, With<Bird>>,
|
|
|
|
|
obstacles: Query<&ColliderAabb, Or<(With<Ground>, With<Pipe>, With<Ceiling>)>>,
|
|
|
|
|
mut next: ResMut<NextState<PlayerState>>,
|
|
|
|
|
server: ResMut<AssetServer>,
|
|
|
|
|
mut commands: Commands,
|
|
|
|
|
) {
|
|
|
|
|
#[cfg(debug_assertions)]
|
|
|
|
|
debug_assert!(
|
|
|
|
|
@ -958,16 +934,6 @@ fn detect_dead(
|
|
|
|
|
|
|
|
|
|
if obstacles.iter().any(|obstacle| bird.intersects(obstacle)) {
|
|
|
|
|
next.set(PlayerState::Stasis);
|
|
|
|
|
|
|
|
|
|
// Play bonk sfx
|
|
|
|
|
commands.spawn((
|
|
|
|
|
AudioPlayer::new(server.load("flappy/flap.ogg")),
|
|
|
|
|
PlaybackSettings {
|
|
|
|
|
mode: PlaybackMode::Despawn,
|
|
|
|
|
..default()
|
|
|
|
|
},
|
|
|
|
|
FlapSfx,
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -1173,17 +1139,6 @@ fn debug_trail(
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn start_rewinding(server: ResMut<AssetServer>, mut commands: Commands) {
|
|
|
|
|
commands.spawn((
|
|
|
|
|
AudioPlayer::new(server.load("flappy/rewind-start.ogg")),
|
|
|
|
|
PlaybackSettings {
|
|
|
|
|
mode: PlaybackMode::Despawn,
|
|
|
|
|
..default()
|
|
|
|
|
},
|
|
|
|
|
RewindSfx,
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn shimmer_button<T: Component>(mut bg: Single<&mut BackgroundColor, With<T>>, time: Res<Time>) {
|
|
|
|
|
let t = time.elapsed_secs();
|
|
|
|
|
let period = 3.0;
|
|
|
|
|
|