/*
* This file is part of laurelin_client
* Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
*
* Licensed under GPL-3.0-only.
* See LICENSE for licensing information.
*/
use bevy::prelude::*;
use bevy_egui::{EguiContexts, egui};
use crate::{plugins::{LoginCallEvent, RegisterCallEvent, GameCreateCallEvent, GameFormingCallEvent, GameMyGamesCallEvent, GameJoinCallEvent}, Global};
pub use super::{MenuData, MenuUIState};
mod login;
mod register;
mod browse;
pub fn ui(
mut commands: Commands,
mut contexts: EguiContexts,
mut global: ResMut<Global>,
mut data: ResMut<MenuData>,
mut login_ev_w: EventWriter<LoginCallEvent>,
mut register_ev_w: EventWriter<RegisterCallEvent>,
mut create_ev_w: EventWriter<GameCreateCallEvent>,
mut forming_ev_w: EventWriter<GameFormingCallEvent>,
mut mygames_ev_w: EventWriter<GameMyGamesCallEvent>,
mut join_ev_w: EventWriter<GameJoinCallEvent>,
) {
egui::Window::new(format!("{:?}", data.ui_state))
.collapsible(false)
.resizable(false)
.anchor(egui::Align2::CENTER_CENTER, egui::Vec2::ZERO)
.show(contexts.ctx_mut(), |ui| {
match &data.ui_state {
MenuUIState::Loading => {
ui.horizontal(|ui| {
ui.spinner();
ui.label("something may or may not be happening");
});
}
MenuUIState::Login => login::view(ui, &mut data, &mut login_ev_w),
MenuUIState::Register => register::view(ui, &mut data, &mut register_ev_w),
MenuUIState::Main => {
if ui.button("Play").clicked() {
data.ui_state = MenuUIState::Browse;
}
}
MenuUIState::Browse => browse::view(
&mut commands,
ui,
&mut global,
&mut data,
&mut create_ev_w,
&mut forming_ev_w,
&mut mygames_ev_w,
&mut join_ev_w,
),
}
});
}