diff --git a/assets/asteroid.png b/assets/asteroid.png new file mode 100644 index 0000000..2065e39 Binary files /dev/null and b/assets/asteroid.png differ diff --git a/assets/enemy.png b/assets/enemy.png new file mode 100644 index 0000000..7ed4835 Binary files /dev/null and b/assets/enemy.png differ diff --git a/assets/player.png b/assets/player.png new file mode 100644 index 0000000..3540408 Binary files /dev/null and b/assets/player.png differ diff --git a/assets/projectile.png b/assets/projectile.png new file mode 100644 index 0000000..4cd0c27 Binary files /dev/null and b/assets/projectile.png differ diff --git a/assets/tileset.png b/assets/tileset.png new file mode 100644 index 0000000..7ebc17c Binary files /dev/null and b/assets/tileset.png differ diff --git a/src/damagable/mod.rs b/src/damagable/mod.rs new file mode 100644 index 0000000..1d18f51 --- /dev/null +++ b/src/damagable/mod.rs @@ -0,0 +1,64 @@ +use bevy::prelude::*; + +use crate::damagable::player::{Player, player_movement_system}; + +pub mod player; + +pub struct DamagablePlugin; + +impl Plugin for DamagablePlugin { + fn build(&self, app: &mut App) { + app.insert_resource(Time::::from_hz(60.0)) + .add_systems(Startup, setup) + .add_systems( + FixedUpdate, + (player_movement_system, movement_system).chain(), + ); + } +} + +#[derive(Component)] +pub struct Damagable { + hp: u32, +} + +#[derive(Component)] +pub struct Movable { + linear_speed: f32, + rotation_speed: f32, + max_linear_speed: f32, + max_rotation_speed: f32, +} + +fn setup(mut commands: Commands, asset_server: Res) { + let player_sprite: Handle = asset_server.load("player.png"); + + commands.spawn(Camera2d); + + //Create player + commands.spawn(( + Player { acceleration: 100. }, + Movable { + linear_speed: 0., + rotation_speed: 0., + max_linear_speed: 500., + max_rotation_speed: f32::to_radians(360.), + }, + Damagable { hp: 10 }, + Sprite::from_image(player_sprite), + Transform::from_xyz(20., 20., 0.), + )); +} + +fn movement_system(time: Res