refactor
This commit is contained in:
parent
0181ad7f2d
commit
45fee92eea
6 changed files with 37 additions and 90 deletions
|
|
@ -1,87 +0,0 @@
|
|||
use bevy::prelude::*;
|
||||
|
||||
use crate::{
|
||||
collision::{Collided, Collider},
|
||||
damagable::{
|
||||
enemy::Enemy,
|
||||
player::{Player, player_movement_system},
|
||||
},
|
||||
};
|
||||
|
||||
pub mod enemy;
|
||||
pub mod player;
|
||||
|
||||
pub struct DamagablePlugin;
|
||||
|
||||
impl Plugin for DamagablePlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.insert_resource(Time::<Fixed>::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<AssetServer>) {
|
||||
let player_sprite: Handle<Image> = asset_server.load("player.png");
|
||||
let enemy_sprite: Handle<Image> = asset_server.load("enemy.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.),
|
||||
Collider::new(8.),
|
||||
));
|
||||
|
||||
commands.spawn((
|
||||
Enemy,
|
||||
Movable {
|
||||
linear_speed: 0.,
|
||||
rotation_speed: 0.,
|
||||
max_linear_speed: 500.,
|
||||
max_rotation_speed: f32::to_radians(360.),
|
||||
},
|
||||
Damagable { hp: 10 },
|
||||
Sprite::from_image(enemy_sprite),
|
||||
Transform::from_xyz(0., 0., 0.),
|
||||
Collider::new(8.),
|
||||
));
|
||||
}
|
||||
|
||||
fn movement_system(time: Res<Time>, query: Query<(&Movable, &mut Transform)>) {
|
||||
for (movable, mut transform) in query {
|
||||
transform.rotate_z(movable.rotation_speed * time.delta_secs());
|
||||
let movement_direction = transform.rotation * Vec3::X;
|
||||
let movement_distance = movable.linear_speed * time.delta_secs();
|
||||
let translation_delta = movement_direction * movement_distance;
|
||||
|
||||
transform.translation += translation_delta;
|
||||
|
||||
//TODO: Loop on bounds
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
use bevy::prelude::*;
|
||||
|
||||
use crate::collision::{Collided, Collider, CollisionPlugin};
|
||||
use crate::damagable::DamagablePlugin;
|
||||
use crate::movable::DamagablePlugin;
|
||||
|
||||
mod collision;
|
||||
mod damagable;
|
||||
mod movable;
|
||||
mod ships;
|
||||
|
||||
fn main() {
|
||||
App::new()
|
||||
|
|
|
|||
31
src/movable.rs
Normal file
31
src/movable.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use bevy::prelude::*;
|
||||
|
||||
pub struct DamagablePlugin;
|
||||
|
||||
impl Plugin for DamagablePlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.insert_resource(Time::<Fixed>::from_hz(60.0))
|
||||
.add_systems(FixedUpdate, movement_system);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Component)]
|
||||
pub struct Movable {
|
||||
pub linear_speed: f32,
|
||||
pub rotation_speed: f32,
|
||||
pub max_linear_speed: f32,
|
||||
pub max_rotation_speed: f32,
|
||||
}
|
||||
|
||||
fn movement_system(time: Res<Time>, query: Query<(&Movable, &mut Transform)>) {
|
||||
for (movable, mut transform) in query {
|
||||
transform.rotate_z(movable.rotation_speed * time.delta_secs());
|
||||
let movement_direction = transform.rotation * Vec3::X;
|
||||
let movement_distance = movable.linear_speed * time.delta_secs();
|
||||
let translation_delta = movement_direction * movement_distance;
|
||||
|
||||
transform.translation += translation_delta;
|
||||
|
||||
//TODO: Loop on bounds
|
||||
}
|
||||
}
|
||||
2
src/ships/mod.rs
Normal file
2
src/ships/mod.rs
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
pub mod enemy;
|
||||
pub mod player;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::damagable::Movable;
|
||||
use crate::movable::Movable;
|
||||
use bevy::prelude::*;
|
||||
|
||||
#[derive(Component)]
|
||||
Loading…
Add table
Add a link
Reference in a new issue