use gamestates and assetloader

This commit is contained in:
2025-03-26 02:18:40 +01:00
parent 9842148010
commit ac87da83d8
25 changed files with 245 additions and 123 deletions

View File

@@ -1,7 +1,12 @@
use avian3d::prelude::*;
use bevy::prelude::*;
use crate::{control::Controls, control::controller::PlayerMovement, physics_layers::GameLayer};
use crate::{
GameState,
control::{Controls, controller::PlayerMovement},
loading_assets::UIAssets,
physics_layers::GameLayer,
};
#[derive(Component, Reflect, Debug)]
pub struct CameraTarget;
@@ -43,7 +48,7 @@ pub fn plugin(app: &mut App) {
app.register_type::<MainCamera>();
app.init_resource::<CameraState>();
app.add_systems(Startup, startup);
app.add_systems(OnEnter(GameState::Playing), startup);
app.add_systems(
Update,
(
@@ -52,7 +57,8 @@ pub fn plugin(app: &mut App) {
update_look_around,
rotate_view_keyboard,
rotate_view_gamepad,
),
)
.run_if(in_state(GameState::Playing)),
);
}
@@ -76,15 +82,13 @@ fn update_look_around(controls: Res<Controls>, mut cam_state: ResMut<CameraState
fn update_ui(
mut commands: Commands,
cam_state: Res<CameraState>,
asset_server: Res<AssetServer>,
assets: Res<UIAssets>,
query: Query<Entity, With<CameraUi>>,
) {
if cam_state.is_changed() {
let show_ui = cam_state.look_around || cam_state.cutscene;
if show_ui {
let image = asset_server.load("ui/camera.png");
commands
.spawn((
CameraUi,
@@ -102,7 +106,7 @@ fn update_ui(
position_type: PositionType::Absolute,
..default()
},
ImageNode::new(image),
ImageNode::new(assets.camera.clone()),
));
} else {
for entity in query.iter() {