diff --git a/src/game/player.rs b/src/game/player.rs index 50aa10c..123be38 100644 --- a/src/game/player.rs +++ b/src/game/player.rs @@ -19,6 +19,13 @@ use super::{ PLAYER_DEPTH, }; +mod camera { + use bevy::prelude::*; + + #[derive(Component)] + struct CameraAttached; +} + mod movement {} mod animation; @@ -57,7 +64,6 @@ pub(super) fn player_plugin(app: &mut App) { ( move_player, debug_player_pos, - move_camera, run_animations::, ) .in_set(IngameSet), @@ -79,11 +85,10 @@ fn debug_player_pos(query: Query<&Transform, With>) { /// what this system actually does: /// - move player -/// - act as camera controller +/// - act as camera controller /// - control player animations (fair? i guess??) -/// - count grounded timer /// - set respawn points?! -/// - check for player deaths to the void?!?!?? +/// - check for player deaths to the void?!?!?? fn move_player( mut commands: Commands, kb_input: Res>, @@ -95,6 +100,7 @@ fn move_player( &mut Sprite, &mut PlayerAnimations, )>, + mut camera_query: Query<&mut Transform, (With, Without)>, phys: Query<&KinematicCharacterControllerOutput>, player_coords: Res, world_info: Res, @@ -102,6 +108,7 @@ fn move_player( ) { let (mut vel, mut p_transform, mut player, mut controller, mut sprite, mut anim_state) = query.single_mut(); + let (mut cam_transform) = camera_query.single_mut(); let (output) = phys.get_single(); if player.move_cooldown.tick(time.delta()).finished() { let mut moved = false; @@ -127,6 +134,9 @@ fn move_player( move_y += 1; } + let orig = cam_transform.translation; + cam_transform.translation -= ((orig - p_transform.translation.xy().extend(0.0)) / 30.0); + controller.translation = Some(Vec2::new(move_x as f32 * 6., 0. - 0.01)); vel.linvel += Vec2::new(0., move_y as f32 * METER); @@ -151,30 +161,15 @@ fn move_player( } } + // if p_transform.translation.y < -10. * player_coords.block_size { + // commands.trigger(death::PlayerDeathEvent::Void); + // p_transform.translation = + // Vec2::new(player_coords.x, player_coords.y).extend(PLAYER_DEPTH); + // } player.last_grounded += 1; } } -// for now just extract, later proper refactor. -fn move_camera( - mut camera_query: Query<&mut Transform, With>, - player_query: Query< - &Transform, - ( - With, - // there is no player with a camera, but the engine doesn't know this - Without, - ), - >, -) { - let mut camera_transform = camera_query.single_mut(); - let player_transform = player_query.single(); - - let camera_transform_cur = camera_transform.translation; - camera_transform.translation -= - ((camera_transform_cur - player_transform.translation.xy().extend(0.)) / 30.) -} - fn add_player( mut commands: Commands, mut meshes: ResMut>, diff --git a/src/main.rs b/src/main.rs index c77a833..a071c63 100644 --- a/src/main.rs +++ b/src/main.rs @@ -57,7 +57,7 @@ fn main() { .add_plugins(parallax_plugin) .init_state::() .init_state::() - .insert_state(AppState::InGame) // TODO dont + .insert_state(AppState::StoryPics) // TODO dont .init_state::() .insert_resource(rapier_config) .configure_sets(Update, IngameSet.run_if(in_state(AppState::InGame)))