From d12e53472d33f958fa84121a41170c861d3abf94 Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Mon, 18 Sep 2023 21:24:51 +0200 Subject: [PATCH] WIP2 --- src/level.rs | 21 +++++++++++++++++ src/ui/menu.rs | 1 + src/ui/status.rs | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 src/level.rs create mode 100644 src/ui/menu.rs create mode 100644 src/ui/status.rs diff --git a/src/level.rs b/src/level.rs new file mode 100644 index 0000000..4765fb7 --- /dev/null +++ b/src/level.rs @@ -0,0 +1,21 @@ +use bevy::prelude::*; + +// #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)] +#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default)] +pub enum LevelState { + #[default] + Begin, + InGame, + End, +} + +#[derive(Resource)] +struct Level(u32); + +pub(super) struct LevelPlugin; + +impl Plugin for LevelPlugin { + fn build(&self, app: &mut App) { + // app.add_state::(); + } +} diff --git a/src/ui/menu.rs b/src/ui/menu.rs new file mode 100644 index 0000000..26a6fc8 --- /dev/null +++ b/src/ui/menu.rs @@ -0,0 +1 @@ +use bevy::prelude::*; diff --git a/src/ui/status.rs b/src/ui/status.rs new file mode 100644 index 0000000..963103d --- /dev/null +++ b/src/ui/status.rs @@ -0,0 +1,61 @@ +use crate::{Level, Score}; +use bevy::prelude::*; + +#[derive(Component)] +pub(super) struct StatusText; + +pub(super) fn spawn_status_text(mut commands: Commands, asset_server: Res) { + let font = asset_server.load("fonts/Audiowide-Regular.ttf"); + + commands.spawn(( + StatusText, + TextBundle::from_sections([ + TextSection::new( + "Level: ", + TextStyle { + font: font.clone(), + font_size: 32.0, + color: Color::WHITE, + }, + ), + TextSection::from_style(TextStyle { + font: font.clone(), + font_size: 32.0, + color: Color::WHITE, + }), + TextSection::new( + " Score: ", + TextStyle { + font: font.clone(), + font_size: 32.0, + color: Color::WHITE, + }, + ), + TextSection::from_style(TextStyle { + font, + font_size: 32.0, + color: Color::WHITE, + }), + ]) + .with_style(Style { + position_type: PositionType::Absolute, + left: Val::Px(10.0), + bottom: Val::Px(10.0), + ..Default::default() + }), + )); +} + +pub(super) fn update_status_text( + mut query: Query<&mut Text, With>, + score: Res, + level: Res, +) { + let score = score.0; + let level = level.0; + + for mut text in query.iter_mut() { + text.sections[1].value = format!("{level}"); + text.sections[3].value = format!("{score}"); + } +}