diff --git a/crates/hedz_reloaded/src/client/aim/target_ui.rs b/crates/hedz_reloaded/src/client/aim/target_ui.rs index f75e5c2..e78b344 100644 --- a/crates/hedz_reloaded/src/client/aim/target_ui.rs +++ b/crates/hedz_reloaded/src/client/aim/target_ui.rs @@ -1,12 +1,6 @@ use crate::{ - GameState, - aim::AimTarget, - backpack::UiHeadState, - heads::{ActiveHeads, HeadsImages}, - hitpoints::Hitpoints, - loading_assets::UIAssets, - npc::Npc, - player::LocalPlayer, + GameState, aim::AimTarget, backpack::UiHeadState, client::ui::HeadsImages, heads::ActiveHeads, + hitpoints::Hitpoints, loading_assets::UIAssets, npc::Npc, player::LocalPlayer, }; use bevy::prelude::*; diff --git a/crates/hedz_reloaded/src/client/backpack/mod.rs b/crates/hedz_reloaded/src/client/backpack/mod.rs deleted file mode 100644 index 87b3199..0000000 --- a/crates/hedz_reloaded/src/client/backpack/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -pub mod backpack_ui; - -use bevy::prelude::*; - -pub fn plugin(app: &mut App) { - app.add_plugins(backpack_ui::plugin); -} diff --git a/crates/hedz_reloaded/src/client/mod.rs b/crates/hedz_reloaded/src/client/mod.rs index a21741a..0eb7974 100644 --- a/crates/hedz_reloaded/src/client/mod.rs +++ b/crates/hedz_reloaded/src/client/mod.rs @@ -24,7 +24,6 @@ use bevy_trenchbroom::geometry::Brushes; pub mod aim; pub mod audio; -pub mod backpack; pub mod control; pub mod debug; pub mod enemy; @@ -39,7 +38,6 @@ pub fn plugin(app: &mut App) { app.add_plugins(( aim::plugin, audio::plugin, - backpack::plugin, control::plugin, debug::plugin, enemy::plugin, diff --git a/crates/hedz_reloaded/src/client/backpack/backpack_ui.rs b/crates/hedz_reloaded/src/client/ui/backpack_ui.rs similarity index 99% rename from crates/hedz_reloaded/src/client/backpack/backpack_ui.rs rename to crates/hedz_reloaded/src/client/ui/backpack_ui.rs index 154b2d3..3da716d 100644 --- a/crates/hedz_reloaded/src/client/backpack/backpack_ui.rs +++ b/crates/hedz_reloaded/src/client/ui/backpack_ui.rs @@ -4,7 +4,7 @@ use crate::{ BACKPACK_HEAD_SLOTS, BackpackCountText, BackpackMarker, BackpackUiState, HeadDamage, HeadImage, HeadSelector, }, - heads::HeadsImages, + client::ui::heads_ui::HeadsImages, loading_assets::UIAssets, }; use bevy::{ecs::spawn::SpawnIter, prelude::*}; diff --git a/crates/hedz_reloaded/src/heads/heads_ui.rs b/crates/hedz_reloaded/src/client/ui/heads_ui.rs similarity index 90% rename from crates/hedz_reloaded/src/heads/heads_ui.rs rename to crates/hedz_reloaded/src/client/ui/heads_ui.rs index 21215d9..360ffde 100644 --- a/crates/hedz_reloaded/src/heads/heads_ui.rs +++ b/crates/hedz_reloaded/src/client/ui/heads_ui.rs @@ -1,11 +1,20 @@ -use super::{ActiveHeads, HEAD_SLOTS}; -#[cfg(feature = "client")] -use crate::heads::HeadsImages; -use crate::{GameState, backpack::UiHeadState, loading_assets::UIAssets, player::LocalPlayer}; +use crate::{ + GameState, + backpack::UiHeadState, + heads::{ActiveHeads, HEAD_COUNT, HEAD_SLOTS}, + heads_database::HeadsDatabase, + loading_assets::UIAssets, + player::LocalPlayer, +}; use bevy::{ecs::spawn::SpawnIter, prelude::*}; use serde::{Deserialize, Serialize}; use std::f32::consts::PI; +#[derive(Resource, Default)] +pub struct HeadsImages { + pub heads: Vec>, +} + #[derive(Component, Reflect, Default)] #[reflect(Component)] struct HeadSelector(pub usize); @@ -31,15 +40,28 @@ pub fn plugin(app: &mut App) { app.init_resource::(); - app.add_systems(OnEnter(GameState::Playing), setup); + app.add_systems(OnEnter(GameState::Playing), (setup, setup_heads_images)); app.add_systems(FixedUpdate, sync.run_if(in_state(GameState::Playing))); - #[cfg(feature = "client")] + app.add_systems( FixedUpdate, (update, update_ammo, update_health).run_if(in_state(GameState::Playing)), ); } +fn setup_heads_images( + mut commands: Commands, + asset_server: Res, + heads: Res, +) { + // TODO: load via asset loader + let heads = (0usize..HEAD_COUNT) + .map(|i| asset_server.load(format!("ui/heads/{}.png", heads.head_key(i)))) + .collect(); + + commands.insert_resource(HeadsImages { heads }); +} + fn setup(mut commands: Commands, assets: Res) { commands.spawn(( Name::new("heads-ui"), @@ -245,7 +267,7 @@ fn sync( time: Res