From 92fa5d0d86b97ca36f163d9136549c4570555327 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 14:54:28 +0200 Subject: [PATCH] feat: add settings window --- src/bin/macroquad_client.rs | 4 ++-- src/ui/macroquad/mod.rs | 1 + src/ui/macroquad/settings.rs | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/ui/macroquad/settings.rs diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index a7a9827..91a5181 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -2,7 +2,7 @@ use checkers::ui::{ macroquad::{ difficulty_selection::draw_dificulty_selection, game::game::GameClient, main_menu::draw_main_menu, mode_selection::draw_mode_selection, - server_selection::draw_server_selection, + server_selection::draw_server_selection, settings::draw_settings, }, state::{GameContext, GuiState}, }; @@ -121,7 +121,7 @@ pub async fn main() { } GuiState::Settings => { - todo!(); + draw_settings(&mut state).await; } GuiState::Game(client) => { diff --git a/src/ui/macroquad/mod.rs b/src/ui/macroquad/mod.rs index 03200bd..fe4dfa0 100644 --- a/src/ui/macroquad/mod.rs +++ b/src/ui/macroquad/mod.rs @@ -4,3 +4,4 @@ pub mod main_menu; mod menu_builder; pub mod mode_selection; pub mod server_selection; +pub mod settings; diff --git a/src/ui/macroquad/settings.rs b/src/ui/macroquad/settings.rs new file mode 100644 index 0000000..29569c9 --- /dev/null +++ b/src/ui/macroquad/settings.rs @@ -0,0 +1,32 @@ +use macroquad::{ + color::GRAY, + math::vec2, + shapes::draw_rectangle, + ui::{hash, root_ui, widgets::Group}, + window::{screen_height, screen_width}, +}; + +use crate::ui::{macroquad::menu_builder::MenuBuilder, state::GuiState}; + +pub async fn draw_settings(state: &mut GuiState) { + 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, "Game settings"); + + menu_builder.label(ui, "Server settings"); + + if menu_builder.button(ui, "Go back") { + *state = GuiState::MainMenu; + } + }); +}