use bevy::prelude::*; /// This example illustrates how to customize the default window settings fn main() { App::build() .add_resource(WindowDescriptor { width: 500., height: 300., ..Default::default() }) .add_plugins(DefaultPlugins) .add_startup_system(setup.system()) .add_system(toggle_override.system()) .add_system(change_scale_factor.system()) .run(); } fn setup( commands: &mut Commands, asset_server: Res, mut materials: ResMut>, ) { commands // ui camera .spawn(CameraUiBundle::default()) // root node .spawn(NodeBundle { style: Style { size: Size::new(Val::Percent(100.0), Val::Percent(100.0)), justify_content: JustifyContent::SpaceBetween, ..Default::default() }, material: materials.add(Color::NONE.into()), ..Default::default() }) .with_children(|parent| { parent // left vertical fill (border) .spawn(NodeBundle { style: Style { size: Size::new(Val::Px(200.0), Val::Percent(100.0)), border: Rect::all(Val::Px(2.0)), ..Default::default() }, material: materials.add(Color::rgb(0.65, 0.65, 0.65).into()), ..Default::default() }) .with_children(|parent| { parent.spawn(TextBundle { style: Style { align_self: AlignSelf::FlexEnd, ..Default::default() }, text: Text { value: "Example text".to_string(), font: asset_server.load("fonts/FiraSans-Bold.ttf"), style: TextStyle { font_size: 30.0, color: Color::WHITE, ..Default::default() }, }, ..Default::default() }); }); }); } /// This system toggles scale factor overrides when enter is pressed fn toggle_override(input: Res>, mut windows: ResMut) { let window = windows.get_primary_mut().unwrap(); if input.just_pressed(KeyCode::Return) { window.set_scale_factor_override(window.scale_factor_override().xor(Some(1.))); } } /// This system changes the scale factor override when up or down is pressed fn change_scale_factor(input: Res>, mut windows: ResMut) { let window = windows.get_primary_mut().unwrap(); if input.just_pressed(KeyCode::Up) { window.set_scale_factor_override(window.scale_factor_override().map(|n| n + 1.)); } else if input.just_pressed(KeyCode::Down) { window.set_scale_factor_override(window.scale_factor_override().map(|n| (n - 1.).max(1.))); } }