This commit is contained in:
parent
85ca3af12d
commit
f0d690a9f8
2 changed files with 24 additions and 7 deletions
|
@ -11,6 +11,8 @@ use bevy::{
|
|||
use rand::{Rng as _, SeedableRng};
|
||||
use wyrand::WyRand;
|
||||
|
||||
use crate::AppState;
|
||||
|
||||
use super::{
|
||||
objects::{Ball, Player, Radius, Wall},
|
||||
rng::thread_rng,
|
||||
|
@ -21,6 +23,12 @@ const BALL_COUNT: u8 = 32;
|
|||
const BALL_SIZES: Range<f32> = 10.0..25.0;
|
||||
const DIMENSION_SIZES: Range<f32> = 500.0..2000.0;
|
||||
|
||||
pub fn check_for_seed(seed: Option<Res<Seed>>, mut next_state: ResMut<NextState<AppState>>) {
|
||||
if seed.is_some() {
|
||||
next_state.set(AppState::InGame);
|
||||
}
|
||||
}
|
||||
|
||||
/// The size of the playable area (x, y)
|
||||
#[derive(Resource)]
|
||||
pub struct PlayableArea(f32, f32);
|
||||
|
|
23
src/lib.rs
23
src/lib.rs
|
@ -11,7 +11,7 @@ mod game;
|
|||
use game::{
|
||||
runtime::{move_camera, move_player, quit, zoom_camera},
|
||||
seed::Seed,
|
||||
setup::{setup_balls, setup_from_seed, setup_player, setup_ui, setup_walls},
|
||||
setup::{check_for_seed, setup_balls, setup_from_seed, setup_player, setup_ui, setup_walls},
|
||||
};
|
||||
|
||||
/// The initial configuration passed to the game's setup functions.
|
||||
|
@ -39,6 +39,13 @@ struct Source {
|
|||
connect: Option<SocketAddr>,
|
||||
}
|
||||
|
||||
#[derive(States, Default, Debug, Clone, PartialEq, Eq, Hash)]
|
||||
enum AppState {
|
||||
#[default]
|
||||
Loading,
|
||||
InGame,
|
||||
}
|
||||
|
||||
impl Plugin for AppSettings {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.insert_resource(Gravity(Vector::ZERO))
|
||||
|
@ -56,23 +63,25 @@ impl Plugin for AppSettings {
|
|||
#[cfg(feature = "dev")]
|
||||
dev::dev_tools,
|
||||
))
|
||||
.init_state::<AppState>()
|
||||
.add_systems(Startup, setup_ui)
|
||||
.add_systems(
|
||||
Startup,
|
||||
OnEnter(AppState::InGame),
|
||||
(
|
||||
setup_from_seed,
|
||||
setup_ui,
|
||||
(setup_player, setup_balls, setup_walls).after(setup_from_seed),
|
||||
),
|
||||
)
|
||||
.add_systems(
|
||||
Update,
|
||||
(
|
||||
move_player,
|
||||
check_for_seed.run_if(in_state(AppState::Loading)),
|
||||
(move_player, move_camera.after(move_player), zoom_camera)
|
||||
.run_if(in_state(AppState::InGame)),
|
||||
quit.run_if(input_pressed(KeyCode::KeyQ)),
|
||||
zoom_camera,
|
||||
),
|
||||
)
|
||||
.add_systems(PostUpdate, move_camera);
|
||||
);
|
||||
|
||||
if let Some(ref seed) = self.source.seed {
|
||||
app.insert_resource(seed.clone());
|
||||
} else if let Some(ref peer) = self.source.connect {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue