From 0ddefb0b7f1d9cb19f2eac823b15009f42510734 Mon Sep 17 00:00:00 2001 From: Top1055 <123alexfeetham@gmail.com> Date: Fri, 2 Jan 2026 23:39:45 +0000 Subject: [PATCH] implemented game loop! --- src/components.rs | 63 +++++++++++++++++++---------- src/main.rs | 7 +++- src/systems/customer.rs | 87 +++++++++++++++++++++++++++++++++++++++++ src/systems/mod.rs | 1 + src/systems/movement.rs | 2 +- src/systems/setup.rs | 32 +++++++-------- 6 files changed, 150 insertions(+), 42 deletions(-) create mode 100644 src/systems/customer.rs diff --git a/src/components.rs b/src/components.rs index 45054db..2240652 100644 --- a/src/components.rs +++ b/src/components.rs @@ -1,30 +1,24 @@ use bevy::prelude::*; -#[derive(PartialEq)] -pub enum Item { - None, - Burger, -} - -#[derive(Component)] -pub struct Customer { - pub order: Item, - pub served: bool, - pub range: f32, -} - -#[derive(Component)] -pub struct Fryer { - pub range: f32, - pub speed: f32, -} - +// Common #[derive(Component)] pub struct Unit { pub move_speed: f32, pub height_offset: f32, } +#[derive(Component)] +pub struct MoveTarget { + pub position: Vec3, +} + +// Player +#[derive(PartialEq)] +pub enum Item { + None, + Burger, +} + #[derive(Component)] pub struct Player { pub holding: Item, @@ -39,7 +33,34 @@ pub struct ProgressBar { #[derive(Component)] pub struct PlayerBurgerIndicator; +// Customer + #[derive(Component)] -pub struct MoveTarget { - pub position: Vec3, +pub struct Customer { + pub order: Item, + pub served: bool, + pub range: f32, } + +#[derive(Resource)] +pub struct CustomerSpawner { + pub timer: Timer, +} + +#[derive(Resource)] +pub struct CounterQueue { + pub positions: Vec, + pub occupied: Vec, +} + +#[derive(Component)] +pub struct Fryer { + pub range: f32, + pub speed: f32, +} + +#[derive(Component)] +pub struct QueueSlot(pub usize); + +#[derive(Component)] +pub struct CustomerBurgerIndicator; diff --git a/src/main.rs b/src/main.rs index f58493a..db863bb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use bevy::prelude::*; mod components; mod systems; -use systems::{gameplay::*, movement::*, setup::*}; +use systems::{customer::*, gameplay::*, movement::*, setup::*}; fn main() { App::new() @@ -17,7 +17,10 @@ fn main() { fryer_cook, customer_serve, update_progress_bar, - update_burger_indicators, + update_player_indicator, + spawn_customers, + despawn_customers, + update_customer_indicators, ), ) .run(); diff --git a/src/systems/customer.rs b/src/systems/customer.rs new file mode 100644 index 0000000..9ee4587 --- /dev/null +++ b/src/systems/customer.rs @@ -0,0 +1,87 @@ +use crate::components::*; +use bevy::prelude::*; + +pub fn spawn_customers( + mut commands: Commands, + mut spawner: ResMut, + mut queue: ResMut, + time: Res