use crate::{GameState, global_observer, loading_assets::UIAssets, sounds::PlaySound}; use bevy::prelude::*; #[derive(Component, Reflect, Default)] #[reflect(Component)] #[require(Transform)] pub struct Cash; #[derive(Component, Reflect, Default)] #[reflect(Component)] struct CashText; #[derive(Resource, Reflect, Default)] pub struct CashResource { pub cash: i32, } #[derive(Event)] pub struct CashCollectEvent; pub fn plugin(app: &mut App) { app.init_resource::(); app.add_systems(OnEnter(GameState::Playing), setup); app.add_systems( Update, (rotate, update_ui).run_if(in_state(GameState::Playing)), ); global_observer!(app, on_cash_collect); } fn on_cash_collect( _trigger: Trigger, mut commands: Commands, mut cash: ResMut, ) { commands.trigger(PlaySound::CashCollect); cash.cash += 100; } fn rotate(time: Res