diff --git a/data/player_data.json b/data/player_data.json index e5e2a2e..40f3549 100644 --- a/data/player_data.json +++ b/data/player_data.json @@ -1,4 +1,6 @@ { "speed":0.3, - "movement":[10.0,0.0] + "movement":[10.0,0.0], + "direction":[0.0,0.0], + "dash":false } diff --git a/src/main.rs b/src/main.rs index 0ddee0e..15db387 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,8 @@ use std::fs; pub struct Player { pub speed: f32, pub movement: Vec2, + pub direction: Vec2, + pub dash: bool, } fn main() { @@ -25,6 +27,7 @@ fn main() { .build(), ) .add_systems(Startup, setup) + .add_systems(Update, get_input) .add_systems(Update, character_movement) .run(); } @@ -39,22 +42,60 @@ fn setup(mut commands: Commands, asset_server: Res) { commands.spawn(( SpriteBundle { sprite: Sprite { - custom_size: Some(Vec2::new(100.0, 100.0)), + custom_size: Some(Vec2::new(50.0, 50.0)), ..default() }, texture, ..default() }, + //TODO: find out how to use vectors in json so I don't have to use this array fuckery Player { speed: player_data.speed, - movement: Vec2::new( player_data.movement[0], player_data.movement[1] ) + movement: Vec2::new(player_data.movement[0], player_data.movement[1]), + direction: Vec2::new(0.0, 0.0), + dash: false }, )); } +//TODO: make it so keycodes can be changed (maby through JSON at first and later make a UI menu to edit said JSON) +fn get_input ( + mut input_recievers: Query<(&mut Transform, &mut Player)>, + input: Res>, +) { + for (_transform, mut player) in &mut input_recievers { + if input.just_pressed(KeyCode::W) { + player.direction.y += 1.0; + } + if input.just_released(KeyCode::W) { + player.direction.y -= 1.0; + } + + if input.just_pressed(KeyCode::S) { + player.direction.y -= 1.0; + } + if input.just_released(KeyCode::S) { + player.direction.y += 1.0; + } + + if input.just_pressed(KeyCode::D) { + player.direction.x += 1.0; + } + if input.just_released(KeyCode::D) { + player.direction.x -= 1.0; + } + + if input.just_pressed(KeyCode::A) { + player.direction.x -= 1.0; + } + if input.just_released(KeyCode::A) { + player.direction.x += 1.0; + } + } +} + fn character_movement( mut characters: Query<(&mut Transform, &mut Player)>, - input: Res>, time: Res