diff --git a/src/main.rs b/src/main.rs index e60b280..a4bc114 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,28 +1,83 @@ use bevy::prelude::*; -// Window width and height -const WW: f32 = 1200.0; -const WH: f32 = 700.0; - fn main() { App::new() - .add_plugins( - DefaultPlugins - .set(ImagePlugin::default_nearest()) - .set(WindowPlugin { - primary_window: Some(Window { - resizable: true, - focused: true, - resolution: (WW, WH).into(), - ..Default::default() - }), - ..Default::default() - }), - ) + .add_plugins(DefaultPlugins) .add_systems(Startup, setup) + .add_systems(Update, player_movement) .run(); } -fn setup(mut commands: Commands) { - commands.spawn(Camera2d::default()); +#[derive(Component)] +struct Player { + is_main: bool, + color: Color, + is_stunned: bool, +} + +#[derive(Component)] +struct Bullet { + direction: Vec2, +} + +#[derive(Component, Debug, Copy, Clone, PartialEq, Eq)] +enum Side { + Red, + Blue, +} + +fn setup(mut commands: Commands) { + commands.spawn(Camera2d); + + // Red player spawn + commands.spawn(( + Sprite::from_color(Color::srgb(100., 100., 100.), Vec2::splat(50.)), + Transform::from_xyz(-300., 0., 1.), + Player { + is_main: true, + color: Color::srgb(100.0, 100.0, 100.0), + is_stunned: false, + }, + Side::Red, + )); + + // Blue player spawn + commands.spawn(( + Sprite::from_color(Color::srgb(0., 0., 0.), Vec2::splat(50.)), + Transform::from_xyz(300., 0., 1.), + Player { + is_main: false, + color: Color::srgb(0.0, 0.0, 0.0), + is_stunned: false, + }, + Side::Blue, + )); +} + +fn player_movement( + time: Res