From 12ada59b8c36caba42284163f123a97b27c0be1c Mon Sep 17 00:00:00 2001 From: CoCoSol007 Date: Sat, 10 Feb 2024 17:26:05 +0000 Subject: [PATCH] Change of file structure for scenes (#38) Reviewed-on: https://git.tipragot.fr/corentin/border-wars/pulls/38 Reviewed-by: Tipragot Co-authored-by: CoCoSol007 Co-committed-by: CoCoSol007 --- crates/border-wars/src/lib.rs | 6 +++--- crates/border-wars/src/main.rs | 6 ++---- crates/border-wars/src/{ => scenes}/menu.rs | 15 ++++++--------- crates/border-wars/src/scenes/mod.rs | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+), 16 deletions(-) rename crates/border-wars/src/{ => scenes}/menu.rs (70%) create mode 100644 crates/border-wars/src/scenes/mod.rs diff --git a/crates/border-wars/src/lib.rs b/crates/border-wars/src/lib.rs index 3ba1db7..c85940e 100644 --- a/crates/border-wars/src/lib.rs +++ b/crates/border-wars/src/lib.rs @@ -2,11 +2,11 @@ use bevy::prelude::*; -pub mod menu; +pub mod scenes; -/// The state of the game. +/// The current scene of the game. #[derive(Debug, Clone, Copy, Default, Eq, PartialEq, Hash, States)] -pub enum GameState { +pub enum CurrentScene { /// When we are in the main menu. #[default] Menu, diff --git a/crates/border-wars/src/main.rs b/crates/border-wars/src/main.rs index ec04b20..ef67c5e 100644 --- a/crates/border-wars/src/main.rs +++ b/crates/border-wars/src/main.rs @@ -1,13 +1,11 @@ //! The main entry point of the game. use bevy::prelude::*; -use border_wars::menu::MenuPlugin; -use border_wars::GameState; +use border_wars::scenes::ScenesPlugin; fn main() { App::new() .add_plugins(DefaultPlugins) - .add_state::() - .add_plugins(MenuPlugin) + .add_plugins(ScenesPlugin) .run(); } diff --git a/crates/border-wars/src/menu.rs b/crates/border-wars/src/scenes/menu.rs similarity index 70% rename from crates/border-wars/src/menu.rs rename to crates/border-wars/src/scenes/menu.rs index d6e4d13..c5c84c7 100644 --- a/crates/border-wars/src/menu.rs +++ b/crates/border-wars/src/scenes/menu.rs @@ -1,26 +1,23 @@ //! The main menu of the game. use bevy::prelude::*; -use bevy_egui::{egui, EguiContexts, EguiPlugin}; +use bevy_egui::{egui, EguiContexts}; -use crate::GameState; +use crate::CurrentScene; /// The plugin for the menu. pub struct MenuPlugin; impl Plugin for MenuPlugin { fn build(&self, app: &mut App) { - app.add_plugins(EguiPlugin).add_systems( - Update, - menu_ui.run_if(state_exists_and_equals(GameState::Menu)), - ); + app.add_systems(Update, menu_ui.run_if(in_state(CurrentScene::Menu))); } } /// Display the UI of the menu to host a game or join one. fn menu_ui( mut ctx: EguiContexts, mut connection_string: Local, - mut next_state: ResMut>, + mut next_scene: ResMut>, ) { egui::CentralPanel::default().show(ctx.ctx_mut(), |ui| { ui.heading("Border Wars"); @@ -33,7 +30,7 @@ fn menu_ui( ui.text_edit_singleline(&mut *connection_string); if ui.button("Join").clicked() { - next_state.set(GameState::Game); + next_scene.set(CurrentScene::Game); // TODO: connect to the game } }); @@ -41,7 +38,7 @@ fn menu_ui( ui.separator(); if ui.button("Create new game").clicked() { - next_state.set(GameState::Lobby); + next_scene.set(CurrentScene::Lobby); // TODO: create a new game } }); diff --git a/crates/border-wars/src/scenes/mod.rs b/crates/border-wars/src/scenes/mod.rs new file mode 100644 index 0000000..06e9603 --- /dev/null +++ b/crates/border-wars/src/scenes/mod.rs @@ -0,0 +1,19 @@ +//! The file containing all scenes programs. + +use bevy::prelude::*; +use bevy_egui::EguiPlugin; + +use crate::CurrentScene; + +pub mod menu; + +/// The plugin for all scenes. +pub struct ScenesPlugin; + +impl Plugin for ScenesPlugin { + fn build(&self, app: &mut App) { + app.add_plugins(EguiPlugin) + .add_state::() + .add_plugins(menu::MenuPlugin); + } +}