/* * This file is part of sdbclient * Copyright (C) 2022 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use bevy::{ prelude::*, ui::{JustifyContent, Size, Style, Val}, }; use super::{MenuButtonAction, NORMAL_BUTTON, TEXT_COLOR}; /// Tag component for tagging entities on settings menu screen #[derive(Component)] pub struct OnSettingsMenuScreen; pub fn settings_menu_setup(mut commands: Commands, asset_server: Res) { let font = asset_server.load("fonts/FiraMono-Regular.ttf"); let button_style = Style { size: Size::new(Val::Px(200.0), Val::Px(65.0)), margin: UiRect::all(Val::Px(20.0)), justify_content: JustifyContent::Center, align_items: AlignItems::Center, ..default() }; let button_text_style = TextStyle { font: font.clone(), font_size: 40.0, color: TEXT_COLOR, }; commands .spawn(( NodeBundle { style: Style { size: Size::new(Val::Percent(100.0), Val::Percent(100.0)), align_items: AlignItems::Center, justify_content: JustifyContent::Center, flex_direction: FlexDirection::Column, ..default() }, ..default() }, OnSettingsMenuScreen, )) .with_children(|parent| { parent.spawn( TextBundle::from_section( "Settings", TextStyle { font: font.clone(), font_size: 60.0, color: TEXT_COLOR, }, ) .with_style(Style { margin: UiRect::all(Val::Px(50.)), ..Default::default() }), ); parent .spawn(NodeBundle { style: Style { flex_direction: FlexDirection::Column, align_items: AlignItems::Center, ..default() }, background_color: Color::GRAY.into(), ..default() }) .with_children(|parent| { for (action, text) in [ (MenuButtonAction::SettingsDisplay, "Display"), (MenuButtonAction::SettingsAudio, "Audio"), (MenuButtonAction::SettingsMisc, "Misc"), (MenuButtonAction::BackToMainMenu, "Back"), ] { parent .spawn(( ButtonBundle { style: button_style.clone(), background_color: NORMAL_BUTTON.into(), ..default() }, action, )) .with_children(|parent| { parent.spawn(TextBundle::from_section( text, button_text_style.clone(), )); }); } }); }); }