Compare commits

..

No commits in common. "b993ca80b9c5a1dee732fd86e94dea51ceaae16f" and "fcf672e2b9da5fb3cc8de26778578693e7674e2f" have entirely different histories.

2 changed files with 20 additions and 25 deletions

View file

@ -19,6 +19,13 @@ use super::{
PLAYER_DEPTH, PLAYER_DEPTH,
}; };
mod camera {
use bevy::prelude::*;
#[derive(Component)]
struct CameraAttached;
}
mod movement {} mod movement {}
mod animation; mod animation;
@ -57,7 +64,6 @@ pub(super) fn player_plugin(app: &mut App) {
( (
move_player, move_player,
debug_player_pos, debug_player_pos,
move_camera,
run_animations::<PlayerAnimations>, run_animations::<PlayerAnimations>,
) )
.in_set(IngameSet), .in_set(IngameSet),
@ -79,11 +85,10 @@ fn debug_player_pos(query: Query<&Transform, With<Player>>) {
/// what this system actually does: /// what this system actually does:
/// - move player /// - move player
/// - <del>act as camera controller</del> /// - act as camera controller
/// - control player animations (fair? i guess??) /// - control player animations (fair? i guess??)
/// - count grounded timer
/// - set respawn points?! /// - set respawn points?!
/// - <del>check for player deaths to the void?!?!??</del> /// - check for player deaths to the void?!?!??
fn move_player( fn move_player(
mut commands: Commands, mut commands: Commands,
kb_input: Res<ButtonInput<KeyCode>>, kb_input: Res<ButtonInput<KeyCode>>,
@ -95,6 +100,7 @@ fn move_player(
&mut Sprite, &mut Sprite,
&mut PlayerAnimations, &mut PlayerAnimations,
)>, )>,
mut camera_query: Query<&mut Transform, (With<Camera2d>, Without<Player>)>,
phys: Query<&KinematicCharacterControllerOutput>, phys: Query<&KinematicCharacterControllerOutput>,
player_coords: Res<PlayerCoords>, player_coords: Res<PlayerCoords>,
world_info: Res<WorldInfo>, world_info: Res<WorldInfo>,
@ -102,6 +108,7 @@ fn move_player(
) { ) {
let (mut vel, mut p_transform, mut player, mut controller, mut sprite, mut anim_state) = let (mut vel, mut p_transform, mut player, mut controller, mut sprite, mut anim_state) =
query.single_mut(); query.single_mut();
let (mut cam_transform) = camera_query.single_mut();
let (output) = phys.get_single(); let (output) = phys.get_single();
if player.move_cooldown.tick(time.delta()).finished() { if player.move_cooldown.tick(time.delta()).finished() {
let mut moved = false; let mut moved = false;
@ -127,6 +134,9 @@ fn move_player(
move_y += 1; 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)); controller.translation = Some(Vec2::new(move_x as f32 * 6., 0. - 0.01));
vel.linvel += Vec2::new(0., move_y as f32 * METER); 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; player.last_grounded += 1;
} }
} }
// for now just extract, later proper refactor.
fn move_camera(
mut camera_query: Query<&mut Transform, With<Camera2d>>,
player_query: Query<
&Transform,
(
With<Player>,
// there is no player with a camera, but the engine doesn't know this
Without<Camera2d>,
),
>,
) {
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( fn add_player(
mut commands: Commands, mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>, mut meshes: ResMut<Assets<Mesh>>,

View file

@ -57,7 +57,7 @@ fn main() {
.add_plugins(parallax_plugin) .add_plugins(parallax_plugin)
.init_state::<AppState>() .init_state::<AppState>()
.init_state::<PausedState>() .init_state::<PausedState>()
.insert_state(AppState::InGame) // TODO dont .insert_state(AppState::StoryPics) // TODO dont
.init_state::<StoryPics>() .init_state::<StoryPics>()
.insert_resource(rapier_config) .insert_resource(rapier_config)
.configure_sets(Update, IngameSet.run_if(in_state(AppState::InGame))) .configure_sets(Update, IngameSet.run_if(in_state(AppState::InGame)))