From 32ed8b2bf8828604292fe3674b4926d30e4c1bda Mon Sep 17 00:00:00 2001 From: Johannes Hendrik Gerard van der Weide Date: Sat, 2 Dec 2023 20:34:07 +0100 Subject: [PATCH] Added dash as a mode (badly I'll fix it later) --- assets/neocat.png | Bin 0 -> 9785 bytes data/player_data.yml | 6 ++- src/main.rs | 122 +++++++++++++++++++++++++++++++------------ 3 files changed, 94 insertions(+), 34 deletions(-) create mode 100755 assets/neocat.png diff --git a/assets/neocat.png b/assets/neocat.png new file mode 100755 index 0000000000000000000000000000000000000000..bb2e0b2509de2de7e08b78bc73e65e477920f8c8 GIT binary patch literal 9785 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 literal 0 HcmV?d00001 diff --git a/data/player_data.yml b/data/player_data.yml index a81e1af..c12ccdd 100644 --- a/data/player_data.yml +++ b/data/player_data.yml @@ -1,8 +1,9 @@ #These values you can just go edit no problem - speed: 0.3 + sprite_path: blobcat_hertog.png + speed: 75.0 movement: [ - 10.0, + 0.0, 0.0 ] #These you should leave alone @@ -11,4 +12,5 @@ 0.0 ] dash: false + dash_modifier: 0.3 \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index acac47e..8cbcb9a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,12 +11,23 @@ pub struct Settings { pub right: String, } -#[derive(Component, Serialize, Deserialize)] +#[derive(Serialize, Deserialize)] +pub struct PlayerYAML { + pub sprite_path: String, + pub speed: f32, + pub movement: Vec2, + pub direction: Vec2, + pub dash: bool, + pub dash_modifier: f32, +} + +#[derive(Component)] pub struct Player { pub speed: f32, pub movement: Vec2, pub direction: Vec2, pub dash: bool, + pub dash_modifier: f32, } fn main() { @@ -50,21 +61,26 @@ fn setup(mut commands: Commands, asset_server: Res) { down: S left: A right: D - ".to_string(); + " + .to_string(); let settings_file = Path::new("./data/settings.yml"); if settings_file.exists() { - settings_yaml = fs::read_to_string("./data/settings.yml").expect("Error reading data/settings.yml"); + settings_yaml = + fs::read_to_string("./data/settings.yml").expect("Error reading data/settings.yml"); } else { - fs::write("./data/settings.yml", settings_yaml.clone()).expect("Error writing data/settings.yml"); + fs::write("./data/settings.yml", settings_yaml.clone()) + .expect("Error writing data/settings.yml"); } - let settings_data = serde_yaml::from_str::(&settings_yaml).expect("Error serializing to YAML"); - - //Default player_data + let settings_data = + serde_yaml::from_str::(&settings_yaml).expect("Error serializing to YAML"); + + //Default player_data let mut player_data_yaml: String = " #These values you can just go edit no problem - speed: 0.3 + sprite_path: blobcat_hertog.png + speed: 75.0 movement: [ - 10.0, + 0.0, 0.0 ] #These you should leave alone @@ -73,21 +89,26 @@ fn setup(mut commands: Commands, asset_server: Res) { 0.0 ] dash: false - ".to_string(); + dash_modifier: 0.3 + " + .to_string(); let player_data_file = Path::new("./data/player_data.yml"); if player_data_file.exists() { - player_data_yaml = fs::read_to_string("./data/player_data.yml").expect("Error reading data/player_data.yml"); + player_data_yaml = fs::read_to_string("./data/player_data.yml") + .expect("Error reading data/player_data.yml"); } else { - fs::write("./data/player_data.yml", player_data_yaml.clone()).expect("Error writing data/player_data.yml"); + fs::write("./data/player_data.yml", player_data_yaml.clone()) + .expect("Error writing data/player_data.yml"); } - let player_data = serde_yaml::from_str::(&player_data_yaml).expect("Error serializing to YAML"); + let player_data = + serde_yaml::from_str::(&player_data_yaml).expect("Error serializing to YAML"); commands.spawn(( SpriteBundle { sprite: Sprite { custom_size: Some(Vec2::new(50.0, 50.0)), ..default() }, - texture: asset_server.load("blobcat_hertog.png"), + texture: asset_server.load(player_data.sprite_path), ..default() }, //TODO: find out how to use vectors in json so I don't have to use this array fuckery @@ -96,6 +117,7 @@ fn setup(mut commands: Commands, asset_server: Res) { movement: Vec2::new(player_data.movement.x, player_data.movement.y), direction: Vec2::new(player_data.direction.x, player_data.direction.y), dash: player_data.dash, + dash_modifier: player_data.dash_modifier, }, )); } @@ -130,31 +152,67 @@ fn get_input(mut input_recievers: Query<&mut Player>, input: Res> if input.just_released(KeyCode::A) { player.direction.x += 1.0; } + + if input.just_pressed(KeyCode::Space) { + player.dash = true; + } + if input.just_released(KeyCode::Space) { + player.dash = false; + } } } fn character_movement(mut characters: Query<(&mut Transform, &mut Player)>, time: Res