diff --git a/crates/border-wars/src/lib.rs b/crates/border-wars/src/lib.rs index 6e74031..b6c9d46 100644 --- a/crates/border-wars/src/lib.rs +++ b/crates/border-wars/src/lib.rs @@ -9,4 +9,4 @@ pub enum GameState { Menu, Lobby, Game, -} \ No newline at end of file +} diff --git a/crates/border-wars/src/main.rs b/crates/border-wars/src/main.rs index 7811fa4..c3561cf 100644 --- a/crates/border-wars/src/main.rs +++ b/crates/border-wars/src/main.rs @@ -10,7 +10,7 @@ mod menu; fn main() { App::new() .add_plugins(DefaultPlugins) - .add_state::() + .init_resource::>() .add_plugins(MenuPlugin) .run(); } diff --git a/crates/border-wars/src/menu.rs b/crates/border-wars/src/menu.rs index 974172f..6397b5b 100644 --- a/crates/border-wars/src/menu.rs +++ b/crates/border-wars/src/menu.rs @@ -1,8 +1,8 @@ //! The main menu of the game. +use crate::GameState; use bevy::prelude::*; use bevy_egui::{egui, EguiContexts, EguiPlugin}; -use border_wars::GameState; /// The plugin for the menu. pub struct MenuPlugin; @@ -11,43 +11,34 @@ pub struct MenuPlugin; impl Plugin for MenuPlugin { /// A function that is called when the plugin is added to the application. fn build(&self, app: &mut App) { - app.add_plugins(EguiPlugin).add_systems(Update,( - ui_connect_window.run_if(state_exists_and_equals(GameState::Menu)), - ui_host_window.run_if(state_exists_and_equals(GameState::Menu)), - )); + println!("{:?}", app.world.resource::>()); + app.add_plugins(EguiPlugin).add_systems( + Update, + menu_ui.run_if(state_exists_and_equals(GameState::Menu)), + ); } } -/// Display a connect window, with a button to join a game and an input to enter -/// the address. -fn ui_connect_window( - mut ctx: EguiContexts, - mut connection_string: Local, - mut state: ResMut>, -) { - egui::Window::new("Connect") - .default_width(400.0) - .show(ctx.ctx_mut(), |ui| { - ui.heading("Please enter the password of the game: "); +/// Display a window, with a button to join a game and an input to enter +/// the address or create a new game. +fn menu_ui(mut ctx: EguiContexts, mut connection_string: Local) { + egui::CentralPanel::default().show(ctx.ctx_mut(), |ui| { + ui.heading("Border Wars"); - ui.horizontal(|ui| { - ui.label("Address: "); + ui.separator(); + ui.label("Connect to an existing game:"); - ui.text_edit_singleline(&mut *connection_string); + ui.horizontal(|ui| { + ui.label("Game ID: "); + ui.text_edit_singleline(&mut *connection_string); - if ui.button("Join").clicked() { - println!("clicked"); - } - }); - }); -} - -/// Display an host window, with a button to create a new game. -fn ui_host_window(mut ctx: EguiContexts) { - egui::Window::new("Host") - .default_width(400.0) - .show(ctx.ctx_mut(), |ui| { - if ui.button("Create new game").clicked() { + if ui.button("Join").clicked() { println!("clicked"); } }); + ui.separator(); + + if ui.button("Create new game").clicked() { + println!("clicked"); + } + }); }