Fixed formatting and started settings.json
parent
8a77d1d9b8
commit
a6e9a8345e
|
@ -0,0 +1 @@
|
||||||
|
{"up":32,"down":28,"left":10,"right":13}
|
97
src/main.rs
97
src/main.rs
|
@ -1,7 +1,15 @@
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
use serde::{Serialize, Deserialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::fs;
|
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)]
|
#[derive(Component, Serialize, Deserialize)]
|
||||||
pub struct Player {
|
pub struct Player {
|
||||||
pub speed: f32,
|
pub speed: f32,
|
||||||
|
@ -35,48 +43,61 @@ fn main() {
|
||||||
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||||
commands.spawn(Camera2dBundle::default());
|
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>(&settings_json).expect("Error serializing to JSON");
|
||||||
|
|
||||||
let texture = asset_server.load("blobcat_hertog.png");
|
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 json_file =
|
||||||
let player_data: Player = serde_json5::from_str::<Player>(&json_file).expect("Error serializing to JSON");
|
fs::read_to_string("./data/player_data.json").expect("Error Reading Player Data");
|
||||||
|
let player_data: Player =
|
||||||
|
serde_json5::from_str::<Player>(&json_file).expect("Error serializing to JSON");
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
SpriteBundle {
|
SpriteBundle {
|
||||||
sprite: Sprite {
|
sprite: Sprite {
|
||||||
custom_size: Some(Vec2::new(50.0, 50.0)),
|
custom_size: Some(Vec2::new(50.0, 50.0)),
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
texture,
|
texture,
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
//TODO: find out how to use vectors in json so I don't have to use this array fuckery
|
//TODO: find out how to use vectors in json so I don't have to use this array fuckery
|
||||||
Player {
|
Player {
|
||||||
speed: player_data.speed,
|
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),
|
direction: Vec2::new(player_data.direction[0], player_data.direction[1]),
|
||||||
dash: false
|
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)
|
//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 (
|
fn get_input(mut input_recievers: Query<&mut Player>, input: Res<Input<KeyCode>>) {
|
||||||
mut input_recievers: Query<(&mut Transform, &mut Player)>,
|
for mut player in &mut input_recievers {
|
||||||
input: Res<Input<KeyCode>>,
|
|
||||||
) {
|
|
||||||
for (_transform, mut player) in &mut input_recievers {
|
|
||||||
if input.just_pressed(KeyCode::W) {
|
if input.just_pressed(KeyCode::W) {
|
||||||
player.direction.y += 1.0;
|
player.direction.y += 1.0;
|
||||||
}
|
}
|
||||||
if input.just_released(KeyCode::W) {
|
if input.just_released(KeyCode::W) {
|
||||||
player.direction.y -= 1.0;
|
player.direction.y -= 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if input.just_pressed(KeyCode::S) {
|
if input.just_pressed(KeyCode::S) {
|
||||||
player.direction.y -= 1.0;
|
player.direction.y -= 1.0;
|
||||||
}
|
}
|
||||||
if input.just_released(KeyCode::S) {
|
if input.just_released(KeyCode::S) {
|
||||||
player.direction.y += 1.0;
|
player.direction.y += 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if input.just_pressed(KeyCode::D) {
|
if input.just_pressed(KeyCode::D) {
|
||||||
player.direction.x += 1.0;
|
player.direction.x += 1.0;
|
||||||
|
@ -94,15 +115,11 @@ fn get_input (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn character_movement(
|
fn character_movement(mut characters: Query<(&mut Transform, &mut Player)>, time: Res<Time>) {
|
||||||
mut characters: Query<(&mut Transform, &mut Player)>,
|
|
||||||
time: Res<Time>,
|
|
||||||
) {
|
|
||||||
for (mut transform, mut player) in &mut characters {
|
for (mut transform, mut player) in &mut characters {
|
||||||
|
let current_speed: f32 = player.speed;
|
||||||
|
let current_movement: Vec2 = player.movement;
|
||||||
|
|
||||||
let current_speed: f32 = player.speed;
|
|
||||||
let current_movement: Vec2 = player.movement;
|
|
||||||
|
|
||||||
if player.direction.y == 1.0 {
|
if player.direction.y == 1.0 {
|
||||||
player.movement += current_movement * current_speed;
|
player.movement += current_movement * current_speed;
|
||||||
}
|
}
|
||||||
|
@ -110,10 +127,16 @@ fn character_movement(
|
||||||
player.movement -= current_movement * current_speed;
|
player.movement -= current_movement * current_speed;
|
||||||
}
|
}
|
||||||
if player.direction.x == 1.0 {
|
if player.direction.x == 1.0 {
|
||||||
player.movement = Vec2::new(player.movement.x - player.movement.y * 0.1, player.movement.y + player.movement.x * 0.1);
|
player.movement = Vec2::new(
|
||||||
|
player.movement.x - player.movement.y * 0.1,
|
||||||
|
player.movement.y + player.movement.x * 0.1,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if player.direction.x == -1.0 {
|
if player.direction.x == -1.0 {
|
||||||
player.movement = Vec2::new(player.movement.x + player.movement.y * 0.1, player.movement.y - player.movement.x * 0.1);
|
player.movement = Vec2::new(
|
||||||
|
player.movement.x + player.movement.y * 0.1,
|
||||||
|
player.movement.y - player.movement.x * 0.1,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: make locking the player within bounds not ass and use the screensize instead of magic numbers
|
//TODO: make locking the player within bounds not ass and use the screensize instead of magic numbers
|
||||||
|
|
Loading…
Reference in New Issue