diff --git a/data/settings.json b/data/settings.json new file mode 100644 index 0000000..0c65381 --- /dev/null +++ b/data/settings.json @@ -0,0 +1 @@ +{"up":32,"down":28,"left":10,"right":13} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 353c7cc..e7b2b55 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,15 @@ use bevy::prelude::*; -use serde::{Serialize, Deserialize}; +use serde::{Deserialize, Serialize}; use std::fs; +#[derive(Component, Serialize, Deserialize)] +pub struct Settings { + pub up: u32, + pub down: u32, + pub left: u32, + pub right: u32, +} + #[derive(Component, Serialize, Deserialize)] pub struct Player { pub speed: f32, @@ -35,48 +43,61 @@ fn main() { fn setup(mut commands: Commands, asset_server: Res) { commands.spawn(Camera2dBundle::default()); + let json_settings = Settings { + up: 32, + down: 28, + left: 10, + right: 13, + }; + let _ = fs::write( + "./data/settings.json", + serde_json5::to_string(&json_settings).expect("Error writing settings"), + ); + let settings_json = + fs::read_to_string("./data/settings.json").expect("Error Reading Settings Data"); + let settings_data: Settings = + serde_json5::from_str::(&settings_json).expect("Error serializing to JSON"); + let texture = asset_server.load("blobcat_hertog.png"); - let json_file = fs::read_to_string("./data/player_data.json").expect("Error Reading Player Data"); - let player_data: Player = serde_json5::from_str::(&json_file).expect("Error serializing to JSON"); - + let json_file = + fs::read_to_string("./data/player_data.json").expect("Error Reading Player Data"); + let player_data: Player = + serde_json5::from_str::(&json_file).expect("Error serializing to JSON"); commands.spawn(( - SpriteBundle { - sprite: Sprite { - 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]), - direction: Vec2::new(0.0, 0.0), - dash: false - }, + SpriteBundle { + sprite: Sprite { + 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]), + direction: Vec2::new(player_data.direction[0], player_data.direction[1]), + dash: player_data.dash, + }, )); } //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 { +fn get_input(mut input_recievers: Query<&mut Player>, input: Res>) { + for 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; + 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; @@ -94,15 +115,11 @@ fn get_input ( } } -fn character_movement( - mut characters: Query<(&mut Transform, &mut Player)>, - time: Res