diff --git a/Cargo.toml b/Cargo.toml index 8752d7b..c3879dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,5 @@ edition = "2021" [dependencies] bevy = "0.12.0" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" diff --git a/data/player_data.json b/data/player_data.json new file mode 100644 index 0000000..e5e2a2e --- /dev/null +++ b/data/player_data.json @@ -0,0 +1,4 @@ +{ + "speed":0.3, + "movement":[10.0,0.0] +} diff --git a/src/main.rs b/src/main.rs index 68f8bfb..0ddee0e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ use bevy::prelude::*; +use serde::{Serialize, Deserialize}; +use std::fs; -#[derive(Component)] +#[derive(Component, Serialize, Deserialize)] pub struct Player { pub speed: f32, pub movement: Vec2, @@ -31,6 +33,8 @@ fn setup(mut commands: Commands, asset_server: Res) { commands.spawn(Camera2dBundle::default()); 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_json::from_str::(&json_file).expect("Error serializing to JSON"); commands.spawn(( SpriteBundle { @@ -42,8 +46,8 @@ fn setup(mut commands: Commands, asset_server: Res) { ..default() }, Player { - speed: 0.3, - movement: Vec2::new( 10.0, 0.0 ) + speed: player_data.speed, + movement: Vec2::new( player_data.movement[0], player_data.movement[1] ) }, )); }