diff --git a/src/main.rs b/src/main.rs index 5985d69..47f9fe1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,10 @@ mod ldtk; +mod player; use bevy::{image::Image, prelude::*}; +use crate::player::Player; + #[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, States)] enum AppState { #[default] @@ -98,6 +101,7 @@ fn levelload( lvl: Res, tmap_stuff: Res, mut ta_layouts: ResMut>, + mut next_state: ResMut>, ) { let tmap_sprite = tmap_stuff.img_handle.as_ref().unwrap(); let ta_layout = TextureAtlasLayout::from_grid(uvec2(16, 16), 12, 8, Some(uvec2(1, 1)), None); @@ -123,6 +127,35 @@ fn levelload( }); lyr_dep -= 0.1; }); + + println!("{lyr_dep}"); + + commands.spawn(( + Sprite::from_color(Color::WHITE, vec2(16., 16.)), + Player::default(), + Transform::from_xyz(128., 0., 20.), + )); + + next_state.set(AppState::Main); } -fn gameloop() {} +fn gameloop(keyb: Res>, mut player: Single<(&mut Player, &mut Transform)>) { + let mut dir = IVec2::ZERO; + + if keyb.pressed(KeyCode::KeyA) { + dir.x = -1; + } else if keyb.pressed(KeyCode::KeyD) { + dir.x = 1; + } + + if keyb.pressed(KeyCode::KeyW) { + dir.y = 1; + } else if keyb.pressed(KeyCode::KeyS) { + dir.y = -1; + } + + let p_pos = player.0.pos + dir; + player.0.pos = p_pos; + + *player.1 = Transform::from_xyz(p_pos.x as f32, p_pos.y as f32, 100.); +} diff --git a/src/player.rs b/src/player.rs new file mode 100644 index 0000000..74ed61a --- /dev/null +++ b/src/player.rs @@ -0,0 +1,6 @@ +use bevy::{ecs::component::Component, math::IVec2}; + +#[derive(Default, Debug, Component)] +pub struct Player { + pub pos: IVec2, +}