spacorium/src/main.rs
2025-11-16 13:51:34 +05:00

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();
}