Rewrite WorldSize as a newtype around Vec2
All checks were successful
Basic checks / Basic build-and-test supertask (push) Successful in 7m7s
All checks were successful
Basic checks / Basic build-and-test supertask (push) Successful in 7m7s
Closes #16 Bevy provides Deref and DerefMut derives, so that's nice. I'm not sure it makes any sense to keep the field private since those derefs expose the Vec2 anyway. I added an `impl Default` anyway, though.
This commit is contained in:
@@ -40,10 +40,7 @@ impl Plugin for AsteroidPlugin {
|
||||
RapierDebugRenderPlugin::default(),
|
||||
))
|
||||
.insert_resource(ClearColor(BACKGROUND_COLOR))
|
||||
.insert_resource(WorldSize {
|
||||
width: WINDOW_SIZE.x,
|
||||
height: WINDOW_SIZE.y,
|
||||
})
|
||||
.insert_resource(WorldSize::default())
|
||||
.insert_resource(Lives(3))
|
||||
.register_type::<Lives>()
|
||||
.insert_resource(Score(0))
|
||||
|
||||
@@ -55,7 +55,7 @@ pub fn tick_asteroid_manager(
|
||||
let spawn_angle = rng.random_range(0.0..(std::f32::consts::PI * 2.0));
|
||||
// Rho will be the radius of a circle bordering the viewport, multiplied by 1.2
|
||||
// TODO: Use view diagonal to get a minimally sized circle around the play area
|
||||
let spawn_distance = play_area.width.max(play_area.height) / 2.0;
|
||||
let spawn_distance = play_area.x.max(play_area.y) / 2.0;
|
||||
|
||||
// Convert polar to Cartesian, use as position
|
||||
let pos = Vec2::new(
|
||||
|
||||
@@ -56,9 +56,9 @@ pub(crate) fn wrap_entities(
|
||||
mut query: Query<&mut Transform, With<Wrapping>>,
|
||||
world_size: Res<WorldSize>,
|
||||
) {
|
||||
let right = world_size.width / 2.0;
|
||||
let right = world_size.x / 2.0;
|
||||
let left = -right;
|
||||
let top = world_size.height / 2.0;
|
||||
let top = world_size.y / 2.0;
|
||||
let bottom = -top;
|
||||
|
||||
for mut pos in query.iter_mut() {
|
||||
|
||||
@@ -10,7 +10,7 @@ use bevy::{
|
||||
Vec2,
|
||||
primitives::{Circle, Triangle2d},
|
||||
},
|
||||
prelude::{Deref, Reflect, ReflectResource},
|
||||
prelude::{Deref, DerefMut, Reflect, ReflectResource},
|
||||
render::mesh::Mesh,
|
||||
sprite::ColorMaterial,
|
||||
};
|
||||
@@ -19,7 +19,7 @@ use bevy_inspector_egui::inspector_options::ReflectInspectorOptions;
|
||||
|
||||
use crate::{
|
||||
ASTEROID_SMALL_COLOR, BULLET_COLOR, PLAYER_SHIP_COLOR, SHIP_THRUSTER_COLOR_ACTIVE,
|
||||
SHIP_THRUSTER_COLOR_INACTIVE,
|
||||
SHIP_THRUSTER_COLOR_INACTIVE, config::WINDOW_SIZE,
|
||||
};
|
||||
|
||||
#[derive(Resource, Debug, Deref, Clone, Copy)]
|
||||
@@ -41,10 +41,13 @@ impl From<Lives> for String {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Resource)]
|
||||
pub struct WorldSize {
|
||||
pub width: f32,
|
||||
pub height: f32,
|
||||
#[derive(Deref, DerefMut, Resource)]
|
||||
pub struct WorldSize(Vec2);
|
||||
|
||||
impl Default for WorldSize {
|
||||
fn default() -> Self {
|
||||
WorldSize(Vec2::new(WINDOW_SIZE.x, WINDOW_SIZE.y))
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Resource)]
|
||||
|
||||
Reference in New Issue
Block a user