/*
* This file is part of sdbclient
* Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
*
* Licensed under GPL-3.0-only.
* See LICENSE for licensing information.
*/
use bevy::prelude::*;
use bevy_inspector_egui::bevy_egui::{egui, EguiContext};
use iyes_loopless::prelude::*;
use crate::{
plugins::menu::MenuState,
runtime::menu::{PlayMenuUIState, RTDMenu},
};
use super::{CreateGameEvent, PlayMenuState};
pub(super) fn show(
mut commands: Commands,
mut egui_context: ResMut<EguiContext>,
mut rtdmenu: ResMut<RTDMenu>,
mut creategame_ev_w: EventWriter<CreateGameEvent>,
) {
egui::Window::new(egui::RichText::new(rtdmenu.play_menu_ui_state.display()).size(42.))
.resizable(false)
.collapsible(false)
.anchor(egui::Align2::CENTER_CENTER, egui::Vec2::ZERO)
.show(egui_context.ctx_mut(), |ui| {
// Override egui style for this scope.
let mut egui_style = (*ui.style_mut()).clone();
egui_style.text_styles = [
(egui::TextStyle::Heading, egui::FontId::new(30.0, egui::FontFamily::Proportional)),
(egui::TextStyle::Body, egui::FontId::new(18.0, egui::FontFamily::Proportional)),
(egui::TextStyle::Monospace, egui::FontId::new(14.0, egui::FontFamily::Proportional)),
(egui::TextStyle::Button, egui::FontId::new(32.0, egui::FontFamily::Proportional)),
(egui::TextStyle::Small, egui::FontId::new(10.0, egui::FontFamily::Proportional)),
].into();
ui.set_style(egui_style);
match rtdmenu.play_menu_ui_state {
PlayMenuUIState::Main => {
ui.vertical_centered(|ui| {
if ui.button("Create").clicked() {
rtdmenu.play_menu_ui_state = PlayMenuUIState::CreateGame
}
if ui.button("Browse").clicked() {
rtdmenu.play_menu_ui_state = PlayMenuUIState::BrowseGames
}
if ui.button("Back").clicked() {
commands.insert_resource(NextState(PlayMenuState::None));
commands.insert_resource(NextState(MenuState::Main));
}
});
}
PlayMenuUIState::CreateGame => {
ui.vertical_centered(|ui| {
ui.add_enabled_ui(!rtdmenu.waiting_for_create_game_call, |ui| {
if ui.button("Confirm").clicked() {
creategame_ev_w.send(CreateGameEvent);
}
if ui.button("Cancel").clicked() {
rtdmenu.play_menu_ui_state = PlayMenuUIState::Main
}
});
});
}
PlayMenuUIState::BrowseGames => {
ui.vertical_centered(|ui| {
if ui.button("Back").clicked() {
rtdmenu.play_menu_ui_state = PlayMenuUIState::Main
}
});
}
PlayMenuUIState::InLobbyHost => {
if ui.button("Back").clicked() {
rtdmenu.play_menu_ui_state = PlayMenuUIState::Main
}
}
PlayMenuUIState::InLobbyGuest => {
if ui.button("Back").clicked() {
rtdmenu.play_menu_ui_state = PlayMenuUIState::Main
}
}
}
});
}