55 lines
1.5 KiB
Rust
55 lines
1.5 KiB
Rust
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();
|
|
}
|