/*
* 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::egui;
use crate::plugins::{
GameCreateCallEvent, BrowseState,
GameFormingCallEvent, GameMyGamesCallEvent
};
use super::{MenuData, MenuUIState};
pub fn view(
ui: &mut egui::Ui,
data: &mut MenuData,
create_ev_w: &mut EventWriter<GameCreateCallEvent>,
forming_ev_w: &mut EventWriter<GameFormingCallEvent>,
mygames_ev_w: &mut EventWriter<GameMyGamesCallEvent>,
) {
egui::SidePanel::left("browse_side_panel")
.resizable(false)
.show_inside(ui, |ui| {
ui.vertical_centered(|ui| {
ui.add_enabled_ui(!data.waiting, |ui| {
if ui.button("Create").clicked() {
create_ev_w.send(GameCreateCallEvent);
}
if ui.button("Back").clicked() {
data.ui_state = MenuUIState::Main;
}
});
});
});
egui::TopBottomPanel::top("browse_top_panel")
.resizable(false)
.show_inside(ui, |ui| {
ui.horizontal(|ui| {
ui.selectable_value(&mut data.browse_state, BrowseState::Forming, "Forming");
ui.selectable_value(&mut data.browse_state, BrowseState::InProgress, "In Progress");
ui.selectable_value(&mut data.browse_state, BrowseState::Finished, "Finished");
ui.with_layout(
egui::Layout::right_to_left(egui::Align::Center),
|ui| {
if ui.button("Refresh").clicked() {
match data.browse_state {
BrowseState::Forming => {
if !data.waiting {
forming_ev_w.send(GameFormingCallEvent);
}
}
BrowseState::InProgress => {
if !data.waiting {
mygames_ev_w.send(GameMyGamesCallEvent);
}
}
BrowseState::Finished => {
if !data.waiting {
mygames_ev_w.send(GameMyGamesCallEvent);
}
}
}
}
},
);
});
});
ui.vertical_centered(|ui| {
egui::ScrollArea::vertical().show(ui, |ui| match data.browse_state {
BrowseState::Forming => {}
BrowseState::InProgress => {}
BrowseState::Finished => {}
}
);
});
}