From 95987c552668ba259a4002e569f919869762f450 Mon Sep 17 00:00:00 2001 From: dan63047 Date: Tue, 14 Nov 2023 00:48:46 +0300 Subject: [PATCH] figuring out how to work with UI That's reminds me of CSS, but not quite --- assets/EurostileRound-Regular.ttf | Bin 0 -> 146796 bytes src/engine/components.rs | 6 ++++ src/engine/mod.rs | 4 ++- src/engine/systems.rs | 16 ++++++++- src/engine/ui.rs | 58 ++++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 2 deletions(-) create mode 100755 assets/EurostileRound-Regular.ttf create mode 100644 src/engine/ui.rs diff --git a/assets/EurostileRound-Regular.ttf b/assets/EurostileRound-Regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..1f4c411baaae75bb4c6d4d4a1f2dd9761da2f046 GIT binary patch literal 146796 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 H#?=1@o5w{Y literal 0 HcmV?d00001 diff --git a/src/engine/components.rs b/src/engine/components.rs index f29f935..2d0d702 100644 --- a/src/engine/components.rs +++ b/src/engine/components.rs @@ -3,6 +3,12 @@ use bevy::prelude::*; #[derive(Component)] pub struct BoardVisual{} +#[derive(Component)] +pub struct HUD {} + +#[derive(Component)] +pub struct LockDelayText {} + #[derive(Component, Clone, Copy)] pub struct Mino{ pub color: Color diff --git a/src/engine/mod.rs b/src/engine/mod.rs index b6cc9f7..b24a178 100644 --- a/src/engine/mod.rs +++ b/src/engine/mod.rs @@ -1,10 +1,11 @@ use bevy::prelude::*; -use self::{systems::*, resources::Engine}; +use self::{systems::*, resources::Engine, ui::spawn_hud}; mod rotation_systems; mod systems; mod components; mod resources; +mod ui; pub mod randomizers; pub struct UBSGEngine; @@ -16,6 +17,7 @@ impl Plugin for UBSGEngine{ add_state::(). insert_resource(Engine::default()). add_systems(Startup, init_engine.run_if(in_state(GameStates::Gameplay))). + add_systems(Startup, spawn_hud). add_systems(Update, receive_input.run_if(in_state(GameStates::Gameplay))). add_systems(Update, das_and_arr.run_if(in_state(GameStates::Gameplay))). add_systems(FixedUpdate, gameloop.run_if(in_state(GameStates::Gameplay)).run_if(in_state(GameloopStates::Falling))). diff --git a/src/engine/systems.rs b/src/engine/systems.rs index 27478cf..64ea343 100644 --- a/src/engine/systems.rs +++ b/src/engine/systems.rs @@ -238,6 +238,7 @@ pub fn das_and_arr( pub fn gameloop( clocks: Res>, + mut lock_delay_text: Query<&mut Text, With>, mut engine: ResMut, mut next_state: ResMut>, ) { @@ -251,7 +252,17 @@ pub fn gameloop( engine.g_bucket -= 1.0; } if !engine.position_is_valid((piece.position.0, piece.position.1-1), piece.rotation){ - engine.lock_delay_left -= 1; + match engine.rotation_system.lock_delay_mode { + super::rotation_systems::LockDelayMode::Disabled => { + engine.lock_current_piece(); + next_state.set(GameloopStates::AfterLocking); + return; + }, + super::rotation_systems::LockDelayMode::Gravity => {engine.need_to_lock = true;}, + super::rotation_systems::LockDelayMode::ResetOnYChange => {}, + super::rotation_systems::LockDelayMode::ResetOnMovementLimited => {engine.lock_delay_left -= 1;}, + super::rotation_systems::LockDelayMode::ResetOnMovement => {engine.lock_delay_left -= 1;} + } }else{ engine.lock_delay_left = engine.lock_delay; } @@ -264,6 +275,9 @@ pub fn gameloop( }, } + for mut text in lock_delay_text.iter_mut() { + text.sections[0].value = format!("{}; {}", engine.lock_delay_resets_left, engine.lock_delay_left); + } } pub fn after_locking_routine( diff --git a/src/engine/ui.rs b/src/engine/ui.rs new file mode 100644 index 0000000..11ec13c --- /dev/null +++ b/src/engine/ui.rs @@ -0,0 +1,58 @@ +use super::components::{HUD, LockDelayText}; +use bevy::prelude::*; + +pub fn spawn_hud(mut commands: Commands, asset_server: Res) { + build_hud(&mut commands, &asset_server); +} + +pub fn build_hud(commands: &mut Commands, asset_server: &Res) -> Entity { + let hud_entity = commands + .spawn(( + NodeBundle { + style: Style { + display: Display::Flex, + flex_direction: FlexDirection::Column, + justify_items: JustifyItems::Center, + align_items: AlignItems::Center, + ..default() + }, + ..default() + }, + HUD {}, + )) + .with_children(|parent| { + // Enemy Text + parent.spawn(( + TextBundle { + style: Style { + // position_type: PositionType::Absolute, + // top: Val::Percent(50.0), + // left: Val::Percent(50.0), + ..default() + }, + text: Text { + sections: vec![TextSection::new( + "0", + TextStyle { + font: asset_server.load("EurostileRound-Regular.ttf"), + font_size: 64.0, + color: Color::rgb(1.0, 1.0, 1.0), + }, + )], + alignment: TextAlignment::Center, + ..default() + }, + ..default() + }, + LockDelayText {}, + )); + }) + .id(); + hud_entity +} + +pub fn despawn_hud(mut commands: Commands, hud_query: Query>) { + for entity in hud_query.iter() { + commands.entity(entity).despawn_recursive(); + } +} \ No newline at end of file