WIP: Adding the menu #110

Draft
raphael wants to merge 13 commits from new-menu into main
3 changed files with 86 additions and 3 deletions
Showing only changes of commit 3f99f0ab5d - Show all commits

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -12,7 +12,7 @@ pub mod scenes;
pub mod ui; pub mod ui;
/// The current scene of the game. /// The current scene of the game.
#[derive(Debug, Clone, Copy, Default, Eq, PartialEq, Hash, States)] #[derive(Debug, Clone, Copy, Default, Eq, PartialEq, Hash, States, Component)]
pub enum CurrentScene { pub enum CurrentScene {
/// When we are in the main menu. /// When we are in the main menu.
#[default] #[default]

View file

@ -2,10 +2,13 @@
use bevnet::{Connection, SendTo, Uuid}; use bevnet::{Connection, SendTo, Uuid};
use bevy::prelude::*; use bevy::prelude::*;
use bevy::render::render_resource::TextureUsages;
use bevy_egui::egui::epaint::textures;
use bevy_egui::{egui, EguiContexts}; use bevy_egui::{egui, EguiContexts};
use crate::networking::connection::RequestJoin; use crate::networking::connection::RequestJoin;
use crate::networking::PlayerRank; use crate::networking::PlayerRank;
use crate::ui::hover::HoveredTexture;
use crate::{CurrentScene, Player}; use crate::{CurrentScene, Player};
/// The plugin for the menu. /// The plugin for the menu.
@ -82,6 +85,8 @@ fn menu_ui(
#[derive(Component)] #[derive(Component)]
struct MenuEntity; struct MenuEntity;
type TargetScene = CurrentScene;

Put some comments to tell which élément you are creating

Put some comments to tell which élément you are creating
fn menu_ui2(mut commands: Commands, asset_server: Res<AssetServer>) { fn menu_ui2(mut commands: Commands, asset_server: Res<AssetServer>) {
commands commands
.spawn(ImageBundle { .spawn(ImageBundle {
@ -97,12 +102,56 @@ fn menu_ui2(mut commands: Commands, asset_server: Res<AssetServer>) {
..default() ..default()
}) })
.insert(MenuEntity); .insert(MenuEntity);
create_side_button(
UiRect {
left: Val::Px(25.),
right: Val::Auto,
top: Val::Px(25.),
bottom: Val::Auto,
},
TargetScene::Lobby,
&mut commands,
HoveredTexture {
texture: asset_server.load("menu/setting.png"),
hovered_texture: asset_server.load("menu/setting_hover.png"),
},
);
create_side_button(
UiRect {
left: Val::Auto,
right: Val::Px(25.),
top: Val::Px(25.),
bottom: Val::Auto,
},
CurrentScene::Lobby,
&mut commands,
HoveredTexture {
texture: asset_server.load("menu/info.png"),
hovered_texture: asset_server.load("menu/info_hover.png"),
},
);
renderer(
&asset_server,
commands,
Some(HoveredTexture {
texture: asset_server.load("menu/border_wars.png"),
hovered_texture: asset_server.load("menu/border_wars.png"),
}),
None,
Val::Px(78.),
Val::Px(614.),
Val::Px(25.),
Val::Px(333.),
)
} }
/// A function to create a side button. /// A function to create a side button.
fn create_side_button( fn create_side_button(
margin: UiRect, margin: UiRect,
target_scene: CurrentScene, target_scene: TargetScene,
commands: &mut Commands, commands: &mut Commands,
textures: HoveredTexture, textures: HoveredTexture,
) { ) {
@ -120,3 +169,37 @@ fn create_side_button(
}) })
.insert((target_scene, textures, MenuEntity)); .insert((target_scene, textures, MenuEntity));
} }
fn renderer(
asset_server: &Res<AssetServer>,
mut background: Commands,
textures: Option<HoveredTexture>,
texture: Option<&str>,
height: Val,
width: Val,
top: Val,
left: Val,
) {
let mut i = background
.spawn(ImageBundle {
style: Style {
height,
width,
top,
left,
..default()
},
image: match textures {
Some(ref textures) => textures.texture.clone().into(),
_ => match texture {
Some(texture) => asset_server.load(texture).into(),
_ => panic!("PAS DE TEXTURES FRER"),
},
},
..default()
});
if textures.is_some() {
i.insert(textures.unwrap());
}
}