use bevy::prelude::*; use bevy::window::WindowResolution; use crate::asteroid::AsteroidPlugin; use crate::collision::CollisionPlugin; use crate::damagable::DamagablePlugin; use crate::projectile::ProjectilePlugin; use crate::ships::ShipsPlugin; use crate::velocity::VelocityPlugin; mod asteroid; mod collision; mod damagable; mod projectile; mod ships; mod velocity; const FIRST_CORNER_X: f32 = -512.; const FIRST_CORNER_Y: f32 = -512.; const SECOND_CORNER_X: f32 = 512.; const SECOND_CORNER_Y: f32 = 512.; #[derive(States, Debug, Clone, Hash, PartialEq, Eq)] pub enum GameState { InMenu, Game, Gameover, } fn main() { App::new() .add_plugins( DefaultPlugins .set(WindowPlugin { primary_window: Some(Window { resolution: WindowResolution::new( (FIRST_CORNER_X.abs() + SECOND_CORNER_X.abs()) as u32, (FIRST_CORNER_Y.abs() + SECOND_CORNER_Y.abs()) as u32, ) .with_scale_factor_override(1.0), ..default() }), ..default() }) .set(ImagePlugin::default_nearest()), ) .insert_state(GameState::Game) .add_plugins(VelocityPlugin) .add_plugins(CollisionPlugin) .add_plugins(ShipsPlugin) .add_plugins(DamagablePlugin) .add_plugins(ProjectilePlugin) .add_plugins(AsteroidPlugin) .run(); }