From efabcbf6365664a566860fb8435896c5ebc31f80 Mon Sep 17 00:00:00 2001 From: Robert Garrett Date: Sun, 27 Jul 2025 11:57:08 -0500 Subject: [PATCH] Start submodule to impl the "Get ready" spinner --- src/lib.rs | 3 ++- src/preparation_widget.rs | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/preparation_widget.rs diff --git a/src/lib.rs b/src/lib.rs index 52eb40c..bd92e97 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ pub mod config; +mod preparation_widget; mod title_screen; use crate::config::{BACKGROUND_COLOR, PLAYER_SHIP_COLOR, SHIP_ROTATION, SHIP_THRUST, WINDOW_SIZE}; @@ -13,7 +14,7 @@ pub struct AsteroidPlugin; impl Plugin for AsteroidPlugin { fn build(&self, app: &mut App) { - app.add_plugins(title_screen::GameMenuPlugin) + app.add_plugins((title_screen::GameMenuPlugin, preparation_widget::preparation_widget_plugin)) .insert_resource(ClearColor(BACKGROUND_COLOR)) .insert_resource(WorldSize { width: WINDOW_SIZE.x, diff --git a/src/preparation_widget.rs b/src/preparation_widget.rs new file mode 100644 index 0000000..bfaa46c --- /dev/null +++ b/src/preparation_widget.rs @@ -0,0 +1,33 @@ +use bevy::prelude::*; + +use crate::GameState; + +pub fn preparation_widget_plugin(app: &mut App) { + app.add_systems(OnEnter(GameState::GetReady), spawn_get_ready) + .add_systems(OnExit(GameState::GetReady), despawn_get_ready) + .add_systems(Update, (animate_get_ready_widget).run_if(in_state(GameState::GetReady))); +} + +/// Marker component for things on the get-ready indicator +#[derive(Component)] +struct OnReadySetGo; + +/// Newtype wrapper for `Timer`. Used to count down during the "get ready" phase. +#[derive(Component)] +struct ReadySetGoTimer(Timer); + +fn spawn_get_ready( + mut commands: Commands, +){ + todo!(); +} + +fn despawn_get_ready( + mut commands: Commands, +){ + todo!(); +} + +fn animate_get_ready_widget(){ + todo!(); +}