diff --git a/assets/player.png b/assets/player.png index 0c89e09..3540408 100644 Binary files a/assets/player.png and b/assets/player.png differ diff --git a/assets/tileset.png b/assets/tileset.png index bb0e330..ba0e6b1 100644 Binary files a/assets/tileset.png and b/assets/tileset.png differ diff --git a/src/asteroid.rs b/src/asteroid.rs index 17f5534..cb879ab 100644 --- a/src/asteroid.rs +++ b/src/asteroid.rs @@ -2,7 +2,7 @@ use bevy::prelude::*; use rand::{prelude::*, rng}; use crate::{ - FIRST_CORNER_X, FIRST_CORNER_Y, GameObject, GameState, SECOND_CORNER_X, SECOND_CORNER_Y, + FIRST_CORNER_X, FIRST_CORNER_Y, GameState, SECOND_CORNER_X, SECOND_CORNER_Y, collision::{Collided, Collider}, damagable::Damagable, projectile::Projectile, @@ -52,7 +52,6 @@ pub fn setup_asteroids(mut commands: Commands, asset_server: Res) { Transform::from_translation(position), Collider::new(8.), Damagable::new(200), - GameObject, )) .observe(bump); } diff --git a/src/main.rs b/src/main.rs index 4063b78..317d36e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,9 +32,6 @@ pub enum GameState { Gameover, } -#[derive(Component)] -pub struct GameObject; - fn main() { App::new() .insert_resource(ClearColor(Color::srgb(0.0, 0.0, 0.0))) @@ -68,16 +65,5 @@ fn main() { .add_systems(Startup, |mut commands: Commands| { commands.spawn(Camera2d); }) - .add_systems(OnExit(GameState::Game), cleanup_gameobjects) .run(); } - -pub fn cleanup_gameobjects(mut commands: Commands, query: Query>) { - for entity in query { - let Ok(mut interface) = commands.get_entity(entity) else { - continue; - }; - - interface.despawn(); - } -} diff --git a/src/ships/enemy.rs b/src/ships/enemy.rs index 74e0cb6..496fa3b 100644 --- a/src/ships/enemy.rs +++ b/src/ships/enemy.rs @@ -1,4 +1,4 @@ -use crate::{GameObject, velocity::Velocity}; +use crate::velocity::Velocity; use bevy::prelude::*; use crate::{ @@ -33,9 +33,8 @@ pub fn spawn_enemy(commands: &mut Commands, sprite: Handle, at: Vec2) { Velocity::moving(256., f32::to_radians(180.)), Sprite::from(sprite), Transform::from_xyz(at.x, at.y, 0.), - Damagable::new(20), + Damagable::new(100), Factions::EnemyFaction, - GameObject, )); } diff --git a/src/ships/gun.rs b/src/ships/gun.rs index 6bf0b06..654802f 100644 --- a/src/ships/gun.rs +++ b/src/ships/gun.rs @@ -2,7 +2,6 @@ use bevy::prelude::*; use rand::random_range; use crate::{ - GameObject, collision::Collider, projectile::{Projectile, ProjectileSprite}, ships::Factions, @@ -46,7 +45,6 @@ pub fn gun_shooting_system( commands.spawn(( Projectile::new(gun.damage, faction.clone()), - GameObject, bullet_transform, Velocity::moving(1024., 0.), Collider::new(8.), diff --git a/src/ships/mod.rs b/src/ships/mod.rs index 51f1204..3bc2035 100644 --- a/src/ships/mod.rs +++ b/src/ships/mod.rs @@ -1,10 +1,6 @@ use bevy::prelude::*; -use rand::{prelude::*, rng}; -use crate::{ - FIRST_CORNER_X, FIRST_CORNER_Y, GameState, SECOND_CORNER_X, SECOND_CORNER_Y, - ships::enemy::spawn_enemy, -}; +use crate::GameState; pub mod enemy; pub mod gun; @@ -55,15 +51,5 @@ fn startup(mut commands: Commands, asset_server: Res) { let enemy_sprite: Handle = asset_server.load("enemy.png"); player::spawn_player(&mut commands, player_sprite, Vec2::new(0., 0.)); - - let mut random = rng(); - - for _ in 0..50 { - let position = Vec2::new( - random.random_range(FIRST_CORNER_X..SECOND_CORNER_X), - random.random_range(FIRST_CORNER_Y..SECOND_CORNER_Y), - ); - - spawn_enemy(&mut commands, enemy_sprite.clone(), position); - } + enemy::spawn_enemy(&mut commands, enemy_sprite.clone(), Vec2::new(100., 100.)); } diff --git a/src/ships/player.rs b/src/ships/player.rs index 74a0539..4d6240b 100644 --- a/src/ships/player.rs +++ b/src/ships/player.rs @@ -1,5 +1,5 @@ use crate::{ - GameObject, GameState, + GameState, collision::Collider, damagable::{Damagable, DamageableKilled}, ships::{Factions, enemy::Enemy, gun::Gun}, @@ -28,7 +28,6 @@ pub fn spawn_player(commands: &mut Commands, sprite: Handle, at: Vec2) { Transform::from_xyz(at.x, at.y, 0.), Factions::PlayerFaction, Damagable::new(150), - GameObject, )); } diff --git a/src/ui/game_over.rs b/src/ui/game_over.rs index bdc0d9d..e69de29 100644 --- a/src/ui/game_over.rs +++ b/src/ui/game_over.rs @@ -1,81 +0,0 @@ -use bevy::{input_focus::InputFocus, prelude::*}; - -use crate::{GameState, score::Score}; - -#[derive(Component)] -pub struct Gameover; - -pub fn setup_gameover(mut commands: Commands, score: Res) { - //setup menu text - commands.spawn(( - Text::new("U DEAD"), - TextFont { - font_size: 32., - ..default() - }, - TextLayout::new_with_justify(Justify::Center), - Gameover, - Node { - position_type: PositionType::Absolute, - align_self: AlignSelf::Center, - justify_self: JustifySelf::Center, - ..default() - }, - )); - //Max score - commands.spawn(( - Text::new("Your score:".to_string() + score.max_score.to_string().as_str()), - TextLayout::new_with_justify(Justify::Center), - Gameover, - Node { - position_type: PositionType::Absolute, - align_self: AlignSelf::Center, - justify_self: JustifySelf::Center, - top: px(32), - ..default() - }, - )); - //setup button - commands.spawn(( - Button, - Node { - align_self: AlignSelf::Center, - justify_self: JustifySelf::Center, - justify_content: JustifyContent::Center, - align_items: AlignItems::Center, - top: px(64), - ..default() - }, - Gameover, - children![(Text::new("Continue"))], - )); -} - -pub fn gameover_button_system( - mut commands: Commands, - mut input_focus: ResMut, - interaction_query: Query<(Entity, &Interaction, &mut Button), Changed>, -) { - for (entity, interaction, mut button) in interaction_query { - match interaction { - Interaction::Pressed => { - input_focus.set(entity); - button.set_changed(); - commands.set_state(GameState::Game); - } - Interaction::Hovered => { - input_focus.set(entity); - button.set_changed(); - } - Interaction::None => { - input_focus.clear(); - } - } - } -} - -pub fn cleanup_gameover(mut commands: Commands, query: Query>) { - for entity in query { - commands.get_entity(entity).unwrap().despawn(); - } -} diff --git a/src/ui/main_menu.rs b/src/ui/main_menu.rs index 75a539e..37002bc 100644 --- a/src/ui/main_menu.rs +++ b/src/ui/main_menu.rs @@ -16,8 +16,9 @@ pub fn setup_menu(mut commands: Commands) { TextLayout::new_with_justify(Justify::Center), Menu, Node { - align_self: AlignSelf::Center, - justify_self: JustifySelf::Center, + position_type: PositionType::Absolute, + top: percent(25), + right: percent(33), ..default() }, )); @@ -25,15 +26,15 @@ pub fn setup_menu(mut commands: Commands) { commands.spawn(( Button, Node { - align_self: AlignSelf::Center, - justify_self: JustifySelf::Center, - top: px(128), + width: px(150), + height: px(65), + border: UiRect::all(px(5)), justify_content: JustifyContent::Center, align_items: AlignItems::Center, ..default() }, Menu, - children![(Text::new("Play"))], + children![(Text::new("Igron"))], )); } diff --git a/src/ui/mod.rs b/src/ui/mod.rs index 96a7f72..770f582 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -23,12 +23,6 @@ impl Plugin for UIPlugin { (update_player_health_display, update_player_score_display) .run_if(in_state(GameState::Game)), ) - .add_systems(OnExit(GameState::Game), cleanup_player_interface) - .add_systems(OnEnter(GameState::Gameover), setup_gameover) - .add_systems( - Update, - gameover_button_system.run_if(in_state(GameState::Gameover)), - ) - .add_systems(OnExit(GameState::Gameover), cleanup_gameover); + .add_systems(OnExit(GameState::Game), cleanup_player_interface); } }