/* * This file is part of laurelin/client * Copyright (C) 2023 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use bevy::{ ecs::{reflect::ReflectResource, system::Resource}, reflect::Reflect, }; mod ui; use laurelin_shared::types::game::GamePub; pub use ui::*; #[derive(Default, Resource, Reflect)] #[reflect(Resource)] pub struct PlayScreenData { pub state: PlayScreenState, pub browse_state: PlayScreenBrowseState, pub waiting_for_create_game: bool, pub waiting_for_all_forming: bool, pub waiting_for_my_games: bool, #[reflect(ignore)] pub all_forming: Vec, #[reflect(ignore)] pub my_games: Vec, } #[derive(Default, PartialEq, Clone, Reflect)] pub enum PlayScreenState { #[default] Main, CreateGame, InLobbyHost, InLobbyGuest, } impl PlayScreenState { pub fn display(&self) -> &str { match self { PlayScreenState::Main => "Play", PlayScreenState::CreateGame => "Create", PlayScreenState::InLobbyHost => "Lobby (Host)", PlayScreenState::InLobbyGuest => "Lobby (Guest)", } } } #[derive(Default, PartialEq, Reflect)] pub enum PlayScreenBrowseState { #[default] Forming, InProgress, Finished, }