@@ -5,7 +5,7 @@ use bevy_egui::{egui, EguiContexts};
55
66use crate :: block:: Aiming ;
77use crate :: environment:: fees:: LevelFees ;
8- use crate :: level:: { Level , LevelGoal , LevelStats , NextLevel } ;
8+ use crate :: level:: { Level , LevelGoal , LevelStats , NextLevel , LEVELS } ;
99use crate :: state:: LevelState ;
1010use crate :: throw:: ThrowQueue ;
1111
@@ -14,7 +14,7 @@ pub struct LevelUiPlugin;
1414impl Plugin for LevelUiPlugin {
1515 fn build ( & self , app : & mut App ) {
1616 app. add_systems ( Startup , setup_level_ui)
17- . add_systems ( Update , ( egui_level_ui , target_ui) ) ;
17+ . add_systems ( Update , ( target_ui) ) ;
1818 }
1919}
2020
@@ -128,12 +128,57 @@ pub fn target_ui(
128128 mut rendered_texture_id : Local < egui:: TextureId > ,
129129 mut has_aiming_block : Query < ( ) , With < Aiming > > ,
130130 queue : Res < ThrowQueue > ,
131+ mut next_level : EventWriter < NextLevel > ,
132+ mut menu_open : Local < bool > ,
131133) {
132134 if !* is_initialized {
133135 * is_initialized = true ;
134136 * rendered_texture_id = egui. add_image ( assets. load ( "blocks/T/2.png" ) ) ;
135137 }
136138
139+ egui:: Window :: new ( "Menu Button UI" )
140+ . title_bar ( false )
141+ . movable ( false )
142+ . resizable ( false )
143+ . frame ( Frame :: none ( ) )
144+ . anchor ( egui:: Align2 :: LEFT_TOP , egui:: Vec2 :: new ( 16.0 , 8.0 ) )
145+ . show ( egui. ctx_mut ( ) , |ui| {
146+ ui. horizontal ( |ui| {
147+ if ui. button ( "MENU" ) . clicked ( ) {
148+ * menu_open = !* menu_open;
149+ }
150+
151+ ui. label (
152+ RichText :: new ( format ! ( "Level {}: {}" , level. level + 1 , level. name) )
153+ . size ( 20.0 )
154+ . color ( Color32 :: BLACK ) ,
155+ ) ;
156+ } ) ;
157+ } ) ;
158+
159+ if * menu_open {
160+ egui:: Window :: new ( "Menu" )
161+ . title_bar ( false )
162+ . movable ( false )
163+ . resizable ( false )
164+ . anchor ( egui:: Align2 :: LEFT_TOP , egui:: Vec2 :: new ( 16.0 , 48.0 ) )
165+ . show ( egui. ctx_mut ( ) , |ui| {
166+ if level. level < LEVELS . len ( ) - 1 {
167+ if ui. button ( "Next Level" ) . clicked ( ) {
168+ next_level. send ( NextLevel ( None ) ) ;
169+ }
170+ }
171+ if level. level > 0 {
172+ if ui. button ( "Previous Level" ) . clicked ( ) {
173+ next_level. send ( NextLevel ( Some ( level. level - 1 ) ) ) ;
174+ }
175+ }
176+ if ui. button ( "Retry" ) . clicked ( ) {
177+ next_level. send ( NextLevel ( Some ( level. level ) ) ) ;
178+ }
179+ } ) ;
180+ }
181+
137182 egui:: Window :: new ( "Target UI" )
138183 . title_bar ( false )
139184 . movable ( false )
0 commit comments