mirror of
https://github.com/szymon-jozef/checkers.git
synced 2026-10-27 19:20:44 +01:00
54 lines
1.6 KiB
Rust
54 lines
1.6 KiB
Rust
use macroquad::{
|
|
color::GRAY,
|
|
math::vec2,
|
|
shapes::draw_rectangle,
|
|
ui::{hash, root_ui, widgets::Group},
|
|
window::{next_frame, screen_height, screen_width},
|
|
};
|
|
|
|
use crate::ui::{
|
|
macroquad::menu_builder::MenuBuilder,
|
|
state::{
|
|
GameContext,
|
|
GuiState::{self},
|
|
},
|
|
};
|
|
|
|
pub async fn draw_server_selection(state: &mut GuiState, context: &mut GameContext) {
|
|
let menu_size = vec2(screen_width() * 0.5, screen_height() * 0.5);
|
|
let menu_pos = vec2(
|
|
screen_width() / 2.0 - menu_size.x / 2.0,
|
|
screen_height() / 2.0 - menu_size.y / 2.0,
|
|
);
|
|
|
|
let mut menu_builder = MenuBuilder::new(menu_size.x, menu_size.y * 0.1);
|
|
|
|
draw_rectangle(menu_pos.x, menu_pos.y, menu_size.x, menu_size.y, GRAY);
|
|
|
|
Group::new(hash!(), menu_size)
|
|
.position(menu_pos)
|
|
.ui(&mut root_ui(), |ui| {
|
|
menu_builder.label(ui, "Host");
|
|
if menu_builder.button(ui, "Start") {
|
|
context.gamemode = crate::ui::state::GameMode::Multiplayer { is_hosting: true };
|
|
}
|
|
|
|
menu_builder.label(ui, "Server selection");
|
|
|
|
menu_builder.text_input(ui, &mut context.server_url_buffer);
|
|
//context.normalise_url();
|
|
|
|
if menu_builder.button(ui, "Connect") {
|
|
context.gamemode = crate::ui::state::GameMode::Multiplayer { is_hosting: false };
|
|
*state = GuiState::Game;
|
|
// TODO Validate url before connecting or something like that
|
|
}
|
|
|
|
if menu_builder.button(ui, "Go back") {
|
|
*state = GuiState::ModeSelection;
|
|
}
|
|
});
|
|
|
|
next_frame().await;
|
|
}
|