Skip to content

Commit

Permalink
debounce
Browse files Browse the repository at this point in the history
  • Loading branch information
fabienjuif committed Dec 10, 2023
1 parent 3bf66e7 commit 0b9de85
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 7 deletions.
7 changes: 5 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ mod castles;
mod common;
mod health;
mod minions;
mod pause;
mod physics;
mod player;
mod racks;
Expand All @@ -21,6 +22,7 @@ use bevy_turborand::prelude::*;
use castles::CastlesPlugin;
use health::HealthPlugin;
use minions::MinionsPlugin;
use pause::PausePlugin;
use physics::PhysicsPlugin;
use player::LocalPlayerPlugin;
use racks::RacksPlugin;
Expand Down Expand Up @@ -56,6 +58,7 @@ fn main() {
))
.add_state::<GameState>()
.add_plugins((
PausePlugin,
TeamsPlugin,
MinionsPlugin,
RacksPlugin,
Expand All @@ -79,7 +82,7 @@ fn main() {
gravity: Vec2::new(0.0, 0.0),
..default()
})
.insert_resource(GameTimer(Timer::from_seconds(1.0, TimerMode::Once)))
.insert_resource(GameTimer(Timer::from_seconds(0.2, TimerMode::Once)))
.add_systems(Update, countdown)
.run();
}
Expand All @@ -92,7 +95,7 @@ fn countdown(
time: Res<Time>,
mut timer: ResMut<GameTimer>,
) {
if timer.tick(time.delta()).finished() {
if timer.tick(time.delta()).just_finished() {
game_state.set(GameState::Game);
}
}
32 changes: 32 additions & 0 deletions src/pause.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
use bevy::prelude::*;

use crate::states::GameState;

pub struct PausePlugin;

impl Plugin for PausePlugin {
fn build(&self, app: &mut App) {
app.add_systems(PostUpdate, pause);
}
}

fn pause(
current_state: Res<State<GameState>>,
mut game_state: ResMut<NextState<GameState>>,
mut keyboard_input: ResMut<Input<KeyCode>>,
) {
if keyboard_input.just_pressed(KeyCode::Escape) {
match current_state.get() {
GameState::Game => {
game_state.set(GameState::Pause);
}
GameState::Pause => {
game_state.set(GameState::Game);
}
_ => {
return;
}
}
keyboard_input.reset(KeyCode::Escape);
}
}
16 changes: 12 additions & 4 deletions src/player.rs
Original file line number Diff line number Diff line change
Expand Up @@ -274,8 +274,12 @@ fn update_ui(
query_player: Query<&Player, With<LocalPlayer>>,
mut query_ui: Query<&mut Text, With<GoldUI>>,
) {
let player = query_player.get_single().expect("no player found");
let mut text = query_ui.get_single_mut().expect("no gold ui found");
let Ok(player) = query_player.get_single() else {
return;
};
let Ok(mut text) = query_ui.get_single_mut() else {
return;
};

text.sections[0].value = format!("Gold: {}", player.gold);
}
Expand Down Expand Up @@ -399,7 +403,9 @@ fn mouse_actions(
mut query_local_player: Query<(&mut Player, Entity, &Children), With<LocalPlayer>>,
mut query: Query<&mut Sprite, With<Hand>>,
) {
let (mut player, entity, children) = query_local_player.single_mut();
let Ok((mut player, entity, children)) = query_local_player.get_single_mut() else {
return;
};

for child in children {
if let Ok(mut sprite) = query.get_mut(*child) {
Expand All @@ -423,7 +429,9 @@ fn keyboard_actions(
mut commands: Commands,
mut query_local_player: Query<(&mut Player, &Transform, &Team), With<LocalPlayer>>,
) {
let (mut player, transform, team) = query_local_player.single_mut();
let Ok((mut player, transform, team)) = query_local_player.get_single_mut() else {
return;
};

if keyboard_input.just_pressed(KeyCode::E) && player.gold >= RACK_GOLD_VALUE {
commands.spawn(RackBundle::new(team.clone(), *transform));
Expand Down
2 changes: 1 addition & 1 deletion src/states.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ use bevy::ecs::schedule::States;
pub enum GameState {
#[default]
Splash,
// Pause,
Pause,
Game,
}

0 comments on commit 0b9de85

Please sign in to comment.