/* * This file is part of sdbclient * Copyright (C) 2023 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use bevy::prelude::Resource; use crate::api::game::types::Game; /// Runtime data for use in the menu #[derive(Resource)] pub(crate) struct RTDMenu { pub play_menu_ui_state: PlayMenuUIState, pub waiting_for_create_game_call: bool, /// Current game ID, for showing lobby data etc pub cur_game_id: String, /// List of all forming games pub all_forming_games: Vec, pub waiting_for_all_forming_call: bool, } impl Default for RTDMenu { fn default() -> Self { Self { play_menu_ui_state: PlayMenuUIState::Main, waiting_for_create_game_call: false, cur_game_id: String::from(""), all_forming_games: vec![], waiting_for_all_forming_call: false, } } } pub(crate) enum PlayMenuUIState { Main, CreateGame, InLobbyHost, InLobbyGuest, } impl PlayMenuUIState { pub fn display(&self) -> &str { match self { PlayMenuUIState::Main => "Play", PlayMenuUIState::CreateGame => "Create", PlayMenuUIState::InLobbyHost => "Lobby (Host)", PlayMenuUIState::InLobbyGuest => "Lobby (Guest)", } } }