Skip to content

Commit

Permalink
Merge pull request #57 from sinproject-iwasaki/56-add-a-first-event
Browse files Browse the repository at this point in the history
Add a first event #56
  • Loading branch information
sinproject-iwasaki authored Mar 9, 2024
2 parents 44727fa + 1e31e95 commit d3a5eb7
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 5 deletions.
40 changes: 40 additions & 0 deletions src/events.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
use bevy::prelude::*;

use crate::{block_pattern::BlockPatterns, sprite};

#[derive(Resource)]
pub struct EventTriggerState {
event_timer: Timer,
}

impl Default for EventTriggerState {
fn default() -> Self {
Self {
event_timer: Timer::from_seconds(1.0, TimerMode::Repeating),
}
}
}

#[derive(Event, Default)]
pub struct NewBlockEvent;

pub fn event_trigger(
time: Res<Time>,
mut state: ResMut<EventTriggerState>,
mut new_block_events: EventWriter<NewBlockEvent>,
) {
if state.event_timer.tick(time.delta()).finished() {
new_block_events.send_default();
}
}

pub fn event_listener(
mut commands: Commands,
mut new_block_events: EventReader<NewBlockEvent>,
mut block_patterns: Res<BlockPatterns>,
) {
for _ in new_block_events.read() {
println!("New block event received!");
sprite::spawn_block(&mut commands, &mut block_patterns)
}
}
1 change: 1 addition & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ mod camera;
mod color_resources;
mod config;
mod constants;
mod events;
mod input;
pub mod my_app;
mod position;
Expand Down
10 changes: 7 additions & 3 deletions src/my_app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use bevy::prelude::*;

use crate::block_pattern;
use crate::camera;
use crate::events;
use crate::input;
use crate::sprite;
use crate::text;
Expand All @@ -21,15 +22,18 @@ pub fn setup(app: &mut App) {
let block_patterns = block_pattern::BlockPatterns::new();

app.insert_resource(block_patterns)
.add_event::<events::NewBlockEvent>()
.init_resource::<events::EventTriggerState>()
.add_systems(Startup, camera::spawn_camera)
.add_systems(Startup, text::spawn_initial_text)
// .insert_resource(color_resources)
// .add_systems(Startup, setup::setup)
.add_systems(Update, (events::event_trigger, events::event_listener))
.add_systems(Update, input::keyboard_input_system)
.add_systems(Update, input::check_esc_to_exit)
.add_systems(Update, sprite::position_transform)
// .add_systems(Update, sprite::change_color)
.add_systems(Update, sprite::spawn_block);
.add_systems(Update, sprite::position_transform);
// .add_systems(Update, sprite::change_color)
// .add_systems(Update, sprite::spawn_block);
}

#[cfg_attr(coverage_nightly, coverage(off))]
Expand Down
4 changes: 2 additions & 2 deletions src/sprite.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ fn spawn_block_element(commands: &mut Commands, position: Position, color: Color
}

#[cfg_attr(coverage_nightly, coverage(off))]
pub fn spawn_block(mut commands: Commands, block_patterns: Res<BlockPatterns>) {
pub fn spawn_block(commands: &mut Commands, block_patterns: &mut Res<BlockPatterns>) {
let block = block_patterns.random().unwrap();

let initial_x = (constants::UNIT_LENGTH.0 / 2) as i32;
Expand All @@ -42,7 +42,7 @@ pub fn spawn_block(mut commands: Commands, block_patterns: Res<BlockPatterns>) {
block.positions.iter().for_each(|(x, y)| {
let position = Position::new(x + initial_x, y + initial_y);

spawn_block_element(&mut commands, position, block.color);
spawn_block_element(commands, position, block.color);
});
}

Expand Down

0 comments on commit d3a5eb7

Please sign in to comment.