From bf2ec7c4d937a30823616e2ad695b02874dd5360 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 12:46:28 +0200 Subject: [PATCH 01/48] feat: init for macroquad --- Cargo.lock | 236 ++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + nix/package.nix | 15 +++ nix/shell.nix | 35 +++-- src/bin/macroquad_client.rs | 25 ++++ src/lib.rs | 1 + src/ui/macroquad/main_menu.rs | 1 + src/ui/macroquad/mod.rs | 1 + src/ui/mod.rs | 2 + src/ui/state.rs | 5 + 10 files changed, 311 insertions(+), 11 deletions(-) create mode 100644 src/bin/macroquad_client.rs create mode 100644 src/ui/macroquad/main_menu.rs create mode 100644 src/ui/macroquad/mod.rs create mode 100644 src/ui/mod.rs create mode 100644 src/ui/state.rs diff --git a/Cargo.lock b/Cargo.lock index e8e6e05..7485743 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aho-corasick" version = "1.1.5" @@ -11,6 +17,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "anstream" version = "1.0.0" @@ -76,6 +88,12 @@ dependencies = [ "critical-section", ] +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + [[package]] name = "bitflags" version = "1.3.2" @@ -94,6 +112,12 @@ version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" +[[package]] +name = "bytemuck" +version = "1.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" + [[package]] name = "byteorder" version = "1.5.0" @@ -130,6 +154,7 @@ dependencies = [ "dirs", "env_logger", "log", + "macroquad", "postcard", "rand", "serde", @@ -147,12 +172,27 @@ dependencies = [ "thiserror", ] +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + [[package]] name = "colorchoice" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" +[[package]] +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + [[package]] name = "cpufeatures" version = "0.3.0" @@ -162,6 +202,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "critical-section" version = "1.2.0" @@ -271,12 +320,41 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "foldhash" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "fontdue" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7894823fa221401399e2598f8b63f81ac77ff5c63248b7656779bff1632d7d3d" +dependencies = [ + "hashbrown 0.15.5", + "ttf-parser", +] + [[package]] name = "futures-core" version = "0.3.34" @@ -326,6 +404,12 @@ dependencies = [ "wasip3", ] +[[package]] +name = "glam" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e05e7e6723e3455f4818c7b26e855439f7546cf617ef669d1adedb8669e5cb9" + [[package]] name = "hash32" version = "0.2.1" @@ -341,6 +425,8 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ + "allocator-api2", + "equivalent", "foldhash", ] @@ -376,6 +462,19 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-traits", + "png", +] + [[package]] name = "indexmap" version = "2.14.0" @@ -459,6 +558,12 @@ version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + [[package]] name = "libredox" version = "0.1.20" @@ -483,12 +588,63 @@ version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" +[[package]] +name = "macroquad" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cbd54d99d4d3ac59deed7ee4927bbbf4eb33a55635530af3be9395a55746090" +dependencies = [ + "fontdue", + "glam", + "image", + "macroquad_macro", + "miniquad", + "quad-rand", +] + +[[package]] +name = "macroquad_macro" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b1d96218903768c1ce078b657c0d5965465c95a60d2682fd97443c9d2483dd" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + [[package]] name = "memchr" version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" +[[package]] +name = "miniquad" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbaea978d741f3b60ced666b06a2a1e4a2bc81cb8b9dd29f4a40965e1f59e65" +dependencies = [ + "libc", + "ndk-sys", + "objc-rs", + "winapi", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + [[package]] name = "mio" version = "1.2.2" @@ -500,6 +656,30 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "objc-rs" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a1e7069a2525126bf12a9f1f7916835fafade384fb27cabf698e745e2a1eb8" +dependencies = [ + "malloc_buf", +] + [[package]] name = "once_cell" version = "1.21.4" @@ -547,6 +727,19 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + [[package]] name = "portable-atomic" version = "1.15.0" @@ -594,6 +787,12 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quad-rand" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a651516ddc9168ebd67b24afd085a718be02f8858fe406591b013d101ce2f40" + [[package]] name = "quote" version = "1.0.47" @@ -764,6 +963,12 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + [[package]] name = "slab" version = "0.4.12" @@ -910,6 +1115,15 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" +dependencies = [ + "core_maths", +] + [[package]] name = "unicode-ident" version = "1.0.24" @@ -1043,6 +1257,28 @@ dependencies = [ "semver", ] +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-link" version = "0.2.1" diff --git a/Cargo.toml b/Cargo.toml index a172223..3c9f58a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ edition = "2024" dirs = "6.0.0" env_logger = "0.11.11" log = "0.4.33" +macroquad = "0.4.16" postcard = { version = "1.1.3", features = ["alloc"] } rand = "0.10.2" serde = { version = "1.0.229", features = ["derive"] } diff --git a/nix/package.nix b/nix/package.nix index 5aae574..ad6511f 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -16,11 +16,26 @@ # rustc # already provided by buildRustPackage :p pkg-config + makeWrapper ]; # runtime deps buildInputs = with pkgs; [ + wayland + wayland-protocols + libGL + alsa-lib + libX11.out + libXi.out + libXcursor.out + libXrandr.out + libxkbcommon.out + libxcb + libXinerama + libXxf86vm + + fontconfig ]; meta = { diff --git a/nix/shell.nix b/nix/shell.nix index 0e5364e..f0aceec 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -1,16 +1,29 @@ { - perSystem = { pkgs, config, ... }: { - devShells.default = pkgs.mkShell { - packages = with pkgs; [ - rustfmt - clippy - ]; + perSystem = + { + pkgs, + config, + ... + }: + { + devShells.default = pkgs.mkShell { + packages = with pkgs; [ + rustfmt + clippy + ]; - RUST_LOG = "debug"; + RUST_LOG = "debug"; - inputsFrom = [ - (config.packages.default) - ]; + LD_LIBRARY_PATH = builtins.concatStringsSep ":" [ + "${pkgs.libX11}/lib" + "${pkgs.libXi}/lib" + "${pkgs.libGL}/lib" + "${pkgs.libxkbcommon}/lib" + ]; + + inputsFrom = [ + (config.packages.default) + ]; + }; }; - }; } diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs new file mode 100644 index 0000000..53e77ff --- /dev/null +++ b/src/bin/macroquad_client.rs @@ -0,0 +1,25 @@ +use macroquad::{ + color::BLACK, + miniquad::{self, conf::LinuxBackend::WaylandWithX11Fallback}, + window::{Conf, clear_background, next_frame}, +}; + +fn window_conf() -> Conf { + Conf { + window_title: "Checkers".to_owned(), + window_resizable: true, + platform: miniquad::conf::Platform { + linux_backend: WaylandWithX11Fallback, + ..Default::default() + }, + ..Default::default() + } +} + +#[macroquad::main(window_conf)] +pub async fn main() { + loop { + clear_background(BLACK); + next_frame().await; + } +} diff --git a/src/lib.rs b/src/lib.rs index f5d0540..bb474ce 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,3 +2,4 @@ pub mod logic; pub mod network; pub mod settings; pub mod super_advanced_ai; +pub mod ui; diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs new file mode 100644 index 0000000..46f5afe --- /dev/null +++ b/src/ui/macroquad/main_menu.rs @@ -0,0 +1 @@ +fn draw_main_menu() {} diff --git a/src/ui/macroquad/mod.rs b/src/ui/macroquad/mod.rs new file mode 100644 index 0000000..515f306 --- /dev/null +++ b/src/ui/macroquad/mod.rs @@ -0,0 +1 @@ +pub mod main_menu; diff --git a/src/ui/mod.rs b/src/ui/mod.rs new file mode 100644 index 0000000..2b23ee7 --- /dev/null +++ b/src/ui/mod.rs @@ -0,0 +1,2 @@ +pub mod macroquad; +pub mod state; diff --git a/src/ui/state.rs b/src/ui/state.rs new file mode 100644 index 0000000..1d29606 --- /dev/null +++ b/src/ui/state.rs @@ -0,0 +1,5 @@ +pub enum GuiState { + MainMenu, + Settings, + Game, +} From b041192a1d097e6d1fc20662d4624d9d03cc9c42 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 13:14:23 +0200 Subject: [PATCH 02/48] feat: first draft at window --- src/bin/macroquad_client.rs | 27 ++++++++++++++++++++--- src/ui/macroquad/main_menu.rs | 40 ++++++++++++++++++++++++++++++++++- src/ui/state.rs | 3 +++ 3 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 53e77ff..8224926 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,5 +1,6 @@ +use checkers::ui::{macroquad::main_menu::draw_main_menu, state::GuiState}; use macroquad::{ - color::BLACK, + color::{BLUE, RED}, miniquad::{self, conf::LinuxBackend::WaylandWithX11Fallback}, window::{Conf, clear_background, next_frame}, }; @@ -18,8 +19,28 @@ fn window_conf() -> Conf { #[macroquad::main(window_conf)] pub async fn main() { + env_logger::init(); + + let mut state = Default::default(); + loop { - clear_background(BLACK); - next_frame().await; + match state { + GuiState::MainMenu => { + draw_main_menu(&mut state).await; + } + + GuiState::Settings => { + clear_background(RED); + next_frame().await; + } + GuiState::Game => { + clear_background(BLUE); + next_frame().await; + } + + GuiState::Exit => { + break; + } + } } } diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs index 46f5afe..ec73b6b 100644 --- a/src/ui/macroquad/main_menu.rs +++ b/src/ui/macroquad/main_menu.rs @@ -1 +1,39 @@ -fn draw_main_menu() {} +use log::info; +use macroquad::{ + color::{BLACK, WHITE}, + input::is_mouse_button_pressed, + math::vec2, + ui::{StyleBuilder, hash, root_ui}, + window::{clear_background, next_frame, screen_height, screen_width}, +}; + +use crate::ui::state::GuiState; + +pub async fn draw_main_menu(state: &mut GuiState) { + let style = root_ui().style_builder().text_color(WHITE).font_size(64); + let text_style = root_ui().style_builder().text_color(WHITE).font_size(32); + + let window_size = vec2(370.0, 320.0); + + root_ui().window( + hash!(), + vec2(screen_width() / 2.0, screen_height() / 2.0), + window_size, + |ui| { + ui.label(vec2(80.0, -34.0), "Main Menu"); + if ui.button(vec2(65.0, 25.0), "Play") { + *state = GuiState::Game; + } + + if ui.button(vec2(65.0, 25.0), "Settings") { + *state = GuiState::Settings; + } + + if ui.button(vec2(65.0, 125.0), "Quit") { + *state = GuiState::Exit; + } + }, + ); + + next_frame().await; +} diff --git a/src/ui/state.rs b/src/ui/state.rs index 1d29606..1161859 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -1,5 +1,8 @@ +#[derive(Default)] pub enum GuiState { + #[default] MainMenu, Settings, Game, + Exit, } From 2d89cf77253467027da408a7c3e2a5fd975064ef Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 13:15:19 +0200 Subject: [PATCH 03/48] fix: remove unused import --- src/ui/macroquad/main_menu.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs index ec73b6b..5371654 100644 --- a/src/ui/macroquad/main_menu.rs +++ b/src/ui/macroquad/main_menu.rs @@ -1,17 +1,15 @@ -use log::info; use macroquad::{ - color::{BLACK, WHITE}, - input::is_mouse_button_pressed, + color::WHITE, math::vec2, - ui::{StyleBuilder, hash, root_ui}, - window::{clear_background, next_frame, screen_height, screen_width}, + ui::{hash, root_ui}, + window::{next_frame, screen_height, screen_width}, }; use crate::ui::state::GuiState; pub async fn draw_main_menu(state: &mut GuiState) { - let style = root_ui().style_builder().text_color(WHITE).font_size(64); - let text_style = root_ui().style_builder().text_color(WHITE).font_size(32); + let _style = root_ui().style_builder().text_color(WHITE).font_size(64); + let _text_style = root_ui().style_builder().text_color(WHITE).font_size(32); let window_size = vec2(370.0, 320.0); From 3720a0640acad2155003932540bee0caf076f601 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 19:25:31 +0200 Subject: [PATCH 04/48] feat: add amazing textures --- assets/background.png | Bin 0 -> 545478 bytes src/bin/macroquad_client.rs | 40 ++++++++++++++++++++++-- src/ui/macroquad/main_menu.rs | 51 +++++++++++++++++++++++++------ src/ui/macroquad/menu_builder.rs | 0 4 files changed, 79 insertions(+), 12 deletions(-) create mode 100644 assets/background.png create mode 100644 src/ui/macroquad/menu_builder.rs diff --git a/assets/background.png b/assets/background.png new file mode 100644 index 0000000000000000000000000000000000000000..d8aa8dc4bd384a0a2e1b34f1b6413e18fa8217b5 GIT binary patch literal 545478 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

VNwCq#X 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�F^S5-a9&^t+paR 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 `!_psYLRq3vJH{t{&1DF)x4-}Ri8(x8j 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

-Bjka4-UNx(7Q7PkO`?jFf|@*k2;{ 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�$Z+X;N%xm)=k)oX87CP?X<(>Q$Qw0>)T{NZZ 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 Wq|$RWrBz=pIAL|#viR8VfBp{>ZUATi literal 0 HcmV?d00001 diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 8224926..4f85e9f 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,8 +1,12 @@ use checkers::ui::{macroquad::main_menu::draw_main_menu, state::GuiState}; use macroquad::{ - color::{BLUE, RED}, + color::{BLACK, BLUE, RED, WHITE}, + math::vec2, miniquad::{self, conf::LinuxBackend::WaylandWithX11Fallback}, - window::{Conf, clear_background, next_frame}, + prelude::ImageFormat, + texture::{DrawTextureParams, Image, Texture2D, draw_texture, draw_texture_ex, load_texture}, + ui::{Skin, root_ui}, + window::{Conf, clear_background, next_frame, screen_height, screen_width}, }; fn window_conf() -> Conf { @@ -23,9 +27,41 @@ pub async fn main() { let mut state = Default::default(); + let background = load_texture("assets/background.png").await.unwrap(); + + let style = root_ui() + .style_builder() + .text_color(WHITE) + .font_size(64) + .build(); + + let button_style = root_ui() + .style_builder() + .text_color(BLACK) + .font_size(32) + .build(); + + let skin = Skin { + label_style: style, + button_style: button_style, + ..root_ui().default_skin() + }; + + root_ui().push_skin(&skin); + loop { match state { GuiState::MainMenu => { + draw_texture_ex( + &background, + 0.0, + 0.0, + WHITE, + DrawTextureParams { + dest_size: Some(vec2(screen_width(), screen_height())), + ..DrawTextureParams::default() + }, + ); draw_main_menu(&mut state).await; } diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs index 5371654..3153eda 100644 --- a/src/ui/macroquad/main_menu.rs +++ b/src/ui/macroquad/main_menu.rs @@ -1,33 +1,64 @@ use macroquad::{ color::WHITE, - math::vec2, - ui::{hash, root_ui}, + math::{Rect, Vec2, vec2}, + prelude::ImageFormat, + texture::Image, + ui::{Layout, Skin, Ui, hash, root_ui, widgets::Button}, window::{next_frame, screen_height, screen_width}, }; use crate::ui::state::GuiState; -pub async fn draw_main_menu(state: &mut GuiState) { - let _style = root_ui().style_builder().text_color(WHITE).font_size(64); - let _text_style = root_ui().style_builder().text_color(WHITE).font_size(32); +pub struct MenuBuilder { + center_x: f32, + current_y: f32, + button_size: Vec2, + spacing: f32, +} - let window_size = vec2(370.0, 320.0); +impl MenuBuilder { + pub fn new(window_width: f32, start_y: f32) -> Self { + let button_size = vec2(200.0, 50.0); + Self { + center_x: (window_width - button_size.x) / 2.0, + current_y: start_y, + button_size, + spacing: 15.0, + } + } + + pub fn button(&mut self, ui: &mut Ui, label: &str) -> bool { + let clicked = Button::new(label) + .position(vec2(self.center_x, self.current_y)) + .size(self.button_size) + .ui(ui); + + self.current_y += self.button_size.y + self.spacing; + + clicked + } +} + +pub async fn draw_main_menu(state: &mut GuiState) { + let window_size = vec2(1200.0, 620.0); + let mut menu_builder = MenuBuilder::new(screen_width(), 10.0); root_ui().window( hash!(), vec2(screen_width() / 2.0, screen_height() / 2.0), window_size, |ui| { - ui.label(vec2(80.0, -34.0), "Main Menu"); - if ui.button(vec2(65.0, 25.0), "Play") { + ui.label(None, "Main Menu"); + + if menu_builder.button(ui, "Play") { *state = GuiState::Game; } - if ui.button(vec2(65.0, 25.0), "Settings") { + if menu_builder.button(ui, "Settings") { *state = GuiState::Settings; } - if ui.button(vec2(65.0, 125.0), "Quit") { + if menu_builder.button(ui, "Quit") { *state = GuiState::Exit; } }, diff --git a/src/ui/macroquad/menu_builder.rs b/src/ui/macroquad/menu_builder.rs new file mode 100644 index 0000000..e69de29 From 7457bd6b27d14e9ce29661dc7970c141afdbac66 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 20:43:32 +0200 Subject: [PATCH 05/48] feat: make main_menu scalalble --- src/bin/macroquad_client.rs | 55 +++++++++-------------- src/ui/macroquad/main_menu.rs | 75 +++++++++++++++----------------- src/ui/macroquad/menu_builder.rs | 46 ++++++++++++++++++++ src/ui/macroquad/mod.rs | 1 + 4 files changed, 101 insertions(+), 76 deletions(-) diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 4f85e9f..c16894f 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,11 +1,13 @@ -use checkers::ui::{macroquad::main_menu::draw_main_menu, state::GuiState}; +use checkers::ui::{ + macroquad::main_menu::{draw_main_menu, get_main_menu_style}, + state::GuiState, +}; use macroquad::{ - color::{BLACK, BLUE, RED, WHITE}, + color::{BLUE, RED, WHITE}, math::vec2, miniquad::{self, conf::LinuxBackend::WaylandWithX11Fallback}, - prelude::ImageFormat, - texture::{DrawTextureParams, Image, Texture2D, draw_texture, draw_texture_ex, load_texture}, - ui::{Skin, root_ui}, + texture::{DrawTextureParams, draw_texture_ex, load_texture}, + ui::root_ui, window::{Conf, clear_background, next_frame, screen_height, screen_width}, }; @@ -26,42 +28,25 @@ pub async fn main() { env_logger::init(); let mut state = Default::default(); - let background = load_texture("assets/background.png").await.unwrap(); - let style = root_ui() - .style_builder() - .text_color(WHITE) - .font_size(64) - .build(); - - let button_style = root_ui() - .style_builder() - .text_color(BLACK) - .font_size(32) - .build(); - - let skin = Skin { - label_style: style, - button_style: button_style, - ..root_ui().default_skin() - }; - - root_ui().push_skin(&skin); + let main_menu_style = get_main_menu_style().await; + root_ui().push_skin(&main_menu_style); loop { + draw_texture_ex( + &background, + 0.0, + 0.0, + WHITE, + DrawTextureParams { + dest_size: Some(vec2(screen_width(), screen_height())), + ..DrawTextureParams::default() + }, + ); + match state { GuiState::MainMenu => { - draw_texture_ex( - &background, - 0.0, - 0.0, - WHITE, - DrawTextureParams { - dest_size: Some(vec2(screen_width(), screen_height())), - ..DrawTextureParams::default() - }, - ); draw_main_menu(&mut state).await; } diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs index 3153eda..ad88bc5 100644 --- a/src/ui/macroquad/main_menu.rs +++ b/src/ui/macroquad/main_menu.rs @@ -1,54 +1,48 @@ use macroquad::{ - color::WHITE, - math::{Rect, Vec2, vec2}, - prelude::ImageFormat, - texture::Image, - ui::{Layout, Skin, Ui, hash, root_ui, widgets::Button}, + color::{BLACK, GRAY, WHITE}, + math::vec2, + shapes::draw_rectangle, + ui::{Skin, hash, root_ui, widgets::Group}, window::{next_frame, screen_height, screen_width}, }; -use crate::ui::state::GuiState; +use crate::ui::{macroquad::menu_builder::MenuBuilder, state::GuiState}; -pub struct MenuBuilder { - center_x: f32, - current_y: f32, - button_size: Vec2, - spacing: f32, -} +pub async fn get_main_menu_style() -> Skin { + let label_style = root_ui() + .style_builder() + .text_color(WHITE) + .font_size(64) + .build(); -impl MenuBuilder { - pub fn new(window_width: f32, start_y: f32) -> Self { - let button_size = vec2(200.0, 50.0); - Self { - center_x: (window_width - button_size.x) / 2.0, - current_y: start_y, - button_size, - spacing: 15.0, - } - } + let button_style = root_ui() + .style_builder() + .text_color(BLACK) + .font_size(32) + .build(); - pub fn button(&mut self, ui: &mut Ui, label: &str) -> bool { - let clicked = Button::new(label) - .position(vec2(self.center_x, self.current_y)) - .size(self.button_size) - .ui(ui); - - self.current_y += self.button_size.y + self.spacing; - - clicked + Skin { + label_style, + button_style, + ..root_ui().default_skin() } } pub async fn draw_main_menu(state: &mut GuiState) { - let window_size = vec2(1200.0, 620.0); - let mut menu_builder = MenuBuilder::new(screen_width(), 10.0); + 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, + ); - root_ui().window( - hash!(), - vec2(screen_width() / 2.0, screen_height() / 2.0), - window_size, - |ui| { - ui.label(None, "Main Menu"); + 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, "Main menu"); if menu_builder.button(ui, "Play") { *state = GuiState::Game; @@ -61,8 +55,7 @@ pub async fn draw_main_menu(state: &mut GuiState) { if menu_builder.button(ui, "Quit") { *state = GuiState::Exit; } - }, - ); + }); next_frame().await; } diff --git a/src/ui/macroquad/menu_builder.rs b/src/ui/macroquad/menu_builder.rs index e69de29..5f7ac05 100644 --- a/src/ui/macroquad/menu_builder.rs +++ b/src/ui/macroquad/menu_builder.rs @@ -0,0 +1,46 @@ +use macroquad::{ + math::{Vec2, vec2}, + ui::{ + Ui, root_ui, + widgets::{Button, Label}, + }, +}; + +pub struct MenuBuilder { + center_x: f32, + current_y: f32, + button_size: Vec2, + spacing: f32, +} + +impl MenuBuilder { + pub fn new(window_width: f32, start_y: f32) -> Self { + let button_size = vec2(200.0, 50.0); + Self { + center_x: (window_width - button_size.x) / 2.0, + current_y: start_y, + button_size, + spacing: 15.0, + } + } + + pub fn label(&mut self, ui: &mut Ui, label: &str) { + Label::new(label) + .position(vec2(self.center_x, self.current_y)) + .size(self.button_size) + .ui(ui); + + self.current_y += self.button_size.y + self.spacing; + } + + pub fn button(&mut self, ui: &mut Ui, label: &str) -> bool { + let clicked = Button::new(label) + .position(vec2(self.center_x, self.current_y)) + .size(self.button_size) + .ui(ui); + + self.current_y += self.button_size.y + self.spacing; + + clicked + } +} diff --git a/src/ui/macroquad/mod.rs b/src/ui/macroquad/mod.rs index 515f306..85282d5 100644 --- a/src/ui/macroquad/mod.rs +++ b/src/ui/macroquad/mod.rs @@ -1 +1,2 @@ pub mod main_menu; +mod menu_builder; From 7605200ae100ea95b7e0493e359763c47d94ff78 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 21:14:44 +0200 Subject: [PATCH 06/48] feat: add mode selection screen --- src/bin/macroquad_client.rs | 49 +++++++++++++++++++++++++++++------ src/ui/macroquad/main_menu.rs | 2 +- src/ui/macroquad/mod.rs | 1 + src/ui/state.rs | 5 ++++ 4 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index c16894f..5ced9ee 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,13 +1,16 @@ use checkers::ui::{ - macroquad::main_menu::{draw_main_menu, get_main_menu_style}, + macroquad::{ + main_menu::{draw_main_menu, get_main_menu_style}, + mode_selection::draw_mode_selection, + }, state::GuiState, }; use macroquad::{ - color::{BLUE, RED, WHITE}, + color::{BLACK, BLUE, RED, WHITE}, math::vec2, miniquad::{self, conf::LinuxBackend::WaylandWithX11Fallback}, texture::{DrawTextureParams, draw_texture_ex, load_texture}, - ui::root_ui, + ui::{Skin, root_ui}, window::{Conf, clear_background, next_frame, screen_height, screen_width}, }; @@ -23,6 +26,26 @@ fn window_conf() -> Conf { } } +pub async fn get_general_style() -> Skin { + let label_style = root_ui() + .style_builder() + .text_color(WHITE) + .font_size(64) + .build(); + + let button_style = root_ui() + .style_builder() + .text_color(BLACK) + .font_size(32) + .build(); + + Skin { + label_style, + button_style, + ..root_ui().default_skin() + } +} + #[macroquad::main(window_conf)] pub async fn main() { env_logger::init(); @@ -30,7 +53,7 @@ pub async fn main() { let mut state = Default::default(); let background = load_texture("assets/background.png").await.unwrap(); - let main_menu_style = get_main_menu_style().await; + let main_menu_style = get_general_style().await; root_ui().push_skin(&main_menu_style); loop { @@ -50,13 +73,23 @@ pub async fn main() { draw_main_menu(&mut state).await; } + GuiState::ModeSelection => { + draw_mode_selection(&mut state).await; + } + + GuiState::DificultySelection => { + todo!(); + } + + GuiState::ServerSelection => { + todo!(); + } + GuiState::Settings => { - clear_background(RED); - next_frame().await; + todo!(); } GuiState::Game => { - clear_background(BLUE); - next_frame().await; + todo!(); } GuiState::Exit => { diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs index ad88bc5..c60d940 100644 --- a/src/ui/macroquad/main_menu.rs +++ b/src/ui/macroquad/main_menu.rs @@ -45,7 +45,7 @@ pub async fn draw_main_menu(state: &mut GuiState) { menu_builder.label(ui, "Main menu"); if menu_builder.button(ui, "Play") { - *state = GuiState::Game; + *state = GuiState::ModeSelection; } if menu_builder.button(ui, "Settings") { diff --git a/src/ui/macroquad/mod.rs b/src/ui/macroquad/mod.rs index 85282d5..024a4de 100644 --- a/src/ui/macroquad/mod.rs +++ b/src/ui/macroquad/mod.rs @@ -1,2 +1,3 @@ pub mod main_menu; +pub mod mode_selection; mod menu_builder; diff --git a/src/ui/state.rs b/src/ui/state.rs index 1161859..72ed73e 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -2,6 +2,11 @@ pub enum GuiState { #[default] MainMenu, + + ModeSelection, + DificultySelection, + ServerSelection, + Settings, Game, Exit, From 5ea3a95257865a4c0179e026c0c02f967eb84b93 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 21:26:13 +0200 Subject: [PATCH 07/48] feat: add difficulty selection --- src/bin/macroquad_client.rs | 18 +++++--- src/super_advanced_ai.rs | 3 +- src/ui/macroquad/difficulty_selection.rs | 53 ++++++++++++++++++++++++ src/ui/macroquad/mod.rs | 3 +- src/ui/macroquad/mode_selection.rs | 44 ++++++++++++++++++++ src/ui/state.rs | 8 ++++ 6 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 src/ui/macroquad/difficulty_selection.rs create mode 100644 src/ui/macroquad/mode_selection.rs diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 5ced9ee..08f6986 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,9 +1,13 @@ -use checkers::ui::{ - macroquad::{ - main_menu::{draw_main_menu, get_main_menu_style}, - mode_selection::draw_mode_selection, +use checkers::{ + super_advanced_ai::BotDificulty, + ui::{ + macroquad::{ + difficulty_selection::draw_dificulty_selection, + main_menu::{draw_main_menu, get_main_menu_style}, + mode_selection::draw_mode_selection, + }, + state::{GameContext, GuiState}, }, - state::GuiState, }; use macroquad::{ color::{BLACK, BLUE, RED, WHITE}, @@ -51,6 +55,8 @@ pub async fn main() { env_logger::init(); let mut state = Default::default(); + let mut context = GameContext::default(); + let background = load_texture("assets/background.png").await.unwrap(); let main_menu_style = get_general_style().await; @@ -78,7 +84,7 @@ pub async fn main() { } GuiState::DificultySelection => { - todo!(); + draw_dificulty_selection(&mut state, &mut context).await; } GuiState::ServerSelection => { diff --git a/src/super_advanced_ai.rs b/src/super_advanced_ai.rs index e36a5b0..d004e03 100644 --- a/src/super_advanced_ai.rs +++ b/src/super_advanced_ai.rs @@ -8,8 +8,9 @@ use crate::{ settings::{client_settings::ClientSettings, general_settings::DEFAULT_URL}, }; -#[derive(PartialEq, Eq, Clone, Copy)] +#[derive(PartialEq, Eq, Clone, Copy, Default)] pub enum BotDificulty { + #[default] Easy, Normal, Hard, diff --git a/src/ui/macroquad/difficulty_selection.rs b/src/ui/macroquad/difficulty_selection.rs new file mode 100644 index 0000000..c83c988 --- /dev/null +++ b/src/ui/macroquad/difficulty_selection.rs @@ -0,0 +1,53 @@ +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_dificulty_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, "Difficulty Selection"); + + if menu_builder.button(ui, "Easy") { + context.is_single = true; + context.difficulty = crate::super_advanced_ai::BotDificulty::Easy; + *state = GuiState::Game; + } + + if menu_builder.button(ui, "Medium") { + context.is_single = true; + context.difficulty = crate::super_advanced_ai::BotDificulty::Normal; + *state = GuiState::Game; + } + + if menu_builder.button(ui, "Hard") { + context.is_single = true; + context.difficulty = crate::super_advanced_ai::BotDificulty::Hard; + *state = GuiState::Game; + } + }); + + next_frame().await; +} diff --git a/src/ui/macroquad/mod.rs b/src/ui/macroquad/mod.rs index 024a4de..cae3309 100644 --- a/src/ui/macroquad/mod.rs +++ b/src/ui/macroquad/mod.rs @@ -1,3 +1,4 @@ +pub mod difficulty_selection; pub mod main_menu; -pub mod mode_selection; mod menu_builder; +pub mod mode_selection; diff --git a/src/ui/macroquad/mode_selection.rs b/src/ui/macroquad/mode_selection.rs new file mode 100644 index 0000000..9d9901e --- /dev/null +++ b/src/ui/macroquad/mode_selection.rs @@ -0,0 +1,44 @@ +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::GuiState::{self, ServerSelection}, +}; + +pub async fn draw_mode_selection(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, "Mode selection"); + + if menu_builder.button(ui, "Singleplayer") { + *state = GuiState::DificultySelection; + } + + if menu_builder.button(ui, "Multiplayer") { + *state = ServerSelection; + } + + if menu_builder.button(ui, "Go back") { + *state = GuiState::MainMenu; + } + }); + + next_frame().await; +} diff --git a/src/ui/state.rs b/src/ui/state.rs index 72ed73e..89003c4 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -1,3 +1,5 @@ +use crate::super_advanced_ai::BotDificulty; + #[derive(Default)] pub enum GuiState { #[default] @@ -11,3 +13,9 @@ pub enum GuiState { Game, Exit, } + +#[derive(Default)] +pub struct GameContext { + pub difficulty: BotDificulty, + pub is_single: bool, +} From ffda7f22796657a406db53c68fdffe16c9840753 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 22:09:19 +0200 Subject: [PATCH 08/48] feat: add server connection screen --- src/bin/macroquad_client.rs | 20 +++++------- src/ui/macroquad/main_menu.rs | 19 ----------- src/ui/macroquad/menu_builder.rs | 22 ++++++++++--- src/ui/macroquad/mod.rs | 1 + src/ui/macroquad/server_selection.rs | 47 ++++++++++++++++++++++++++++ src/ui/state.rs | 1 + 6 files changed, 74 insertions(+), 36 deletions(-) create mode 100644 src/ui/macroquad/server_selection.rs diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 08f6986..5fd2b96 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,21 +1,17 @@ -use checkers::{ - super_advanced_ai::BotDificulty, - ui::{ - macroquad::{ - difficulty_selection::draw_dificulty_selection, - main_menu::{draw_main_menu, get_main_menu_style}, - mode_selection::draw_mode_selection, - }, - state::{GameContext, GuiState}, +use checkers::ui::{ + macroquad::{ + difficulty_selection::draw_dificulty_selection, main_menu::draw_main_menu, + mode_selection::draw_mode_selection, server_selection::draw_server_selection, }, + state::{GameContext, GuiState}, }; use macroquad::{ - color::{BLACK, BLUE, RED, WHITE}, + color::{BLACK, WHITE}, math::vec2, miniquad::{self, conf::LinuxBackend::WaylandWithX11Fallback}, texture::{DrawTextureParams, draw_texture_ex, load_texture}, ui::{Skin, root_ui}, - window::{Conf, clear_background, next_frame, screen_height, screen_width}, + window::{Conf, screen_height, screen_width}, }; fn window_conf() -> Conf { @@ -88,7 +84,7 @@ pub async fn main() { } GuiState::ServerSelection => { - todo!(); + draw_server_selection(&mut state, &mut context).await; } GuiState::Settings => { diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs index c60d940..d941fdd 100644 --- a/src/ui/macroquad/main_menu.rs +++ b/src/ui/macroquad/main_menu.rs @@ -8,25 +8,6 @@ use macroquad::{ use crate::ui::{macroquad::menu_builder::MenuBuilder, state::GuiState}; -pub async fn get_main_menu_style() -> Skin { - let label_style = root_ui() - .style_builder() - .text_color(WHITE) - .font_size(64) - .build(); - - let button_style = root_ui() - .style_builder() - .text_color(BLACK) - .font_size(32) - .build(); - - Skin { - label_style, - button_style, - ..root_ui().default_skin() - } -} pub async fn draw_main_menu(state: &mut GuiState) { let menu_size = vec2(screen_width() * 0.5, screen_height() * 0.5); diff --git a/src/ui/macroquad/menu_builder.rs b/src/ui/macroquad/menu_builder.rs index 5f7ac05..fd94cf4 100644 --- a/src/ui/macroquad/menu_builder.rs +++ b/src/ui/macroquad/menu_builder.rs @@ -1,8 +1,8 @@ use macroquad::{ math::{Vec2, vec2}, ui::{ - Ui, root_ui, - widgets::{Button, Label}, + Ui, hash, + widgets::{Button, InputText, Label}, }, }; @@ -24,13 +24,22 @@ impl MenuBuilder { } } + pub fn text_input(&mut self, ui: &mut Ui, buffer: &mut String) { + InputText::new(hash!()) + .position(vec2(self.center_x, self.current_y)) + .size(self.button_size) + .ui(ui, buffer); + + self.update_height(); + } + pub fn label(&mut self, ui: &mut Ui, label: &str) { Label::new(label) .position(vec2(self.center_x, self.current_y)) .size(self.button_size) .ui(ui); - self.current_y += self.button_size.y + self.spacing; + self.update_height(); } pub fn button(&mut self, ui: &mut Ui, label: &str) -> bool { @@ -39,8 +48,11 @@ impl MenuBuilder { .size(self.button_size) .ui(ui); - self.current_y += self.button_size.y + self.spacing; - + self.update_height(); clicked } + + fn update_height(&mut self) { + self.current_y += self.button_size.y + self.spacing; + } } diff --git a/src/ui/macroquad/mod.rs b/src/ui/macroquad/mod.rs index cae3309..3b2fad6 100644 --- a/src/ui/macroquad/mod.rs +++ b/src/ui/macroquad/mod.rs @@ -2,3 +2,4 @@ pub mod difficulty_selection; pub mod main_menu; mod menu_builder; pub mod mode_selection; +pub mod server_selection; diff --git a/src/ui/macroquad/server_selection.rs b/src/ui/macroquad/server_selection.rs new file mode 100644 index 0000000..4e03e70 --- /dev/null +++ b/src/ui/macroquad/server_selection.rs @@ -0,0 +1,47 @@ +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, "Server selection"); + + menu_builder.text_input(ui, &mut context.server_url_buffer); + //context.normalise_url(); + + if menu_builder.button(ui, "Connect") { + context.is_single = false; + *state = GuiState::Game; + } + + if menu_builder.button(ui, "Go back") { + *state = GuiState::ModeSelection; + } + }); + + next_frame().await; +} diff --git a/src/ui/state.rs b/src/ui/state.rs index 89003c4..ffd3e7f 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -18,4 +18,5 @@ pub enum GuiState { pub struct GameContext { pub difficulty: BotDificulty, pub is_single: bool, + pub server_url_buffer: String, } From c0cfb67eec2721775b3d574270cabd025e62c062 Mon Sep 17 00:00:00 2001 From: szymon Date: Fri, 21 Aug 2026 12:34:04 +0200 Subject: [PATCH 09/48] refactor: add gamemode enum --- src/bin/macroquad_client.rs | 2 +- src/ui/macroquad/difficulty_selection.rs | 7 ++++--- src/ui/macroquad/mode_selection.rs | 8 ++++++-- src/ui/macroquad/server_selection.rs | 8 +++++++- src/ui/state.rs | 11 ++++++++++- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 5fd2b96..1ecf02d 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -76,7 +76,7 @@ pub async fn main() { } GuiState::ModeSelection => { - draw_mode_selection(&mut state).await; + draw_mode_selection(&mut state, &mut context).await; } GuiState::DificultySelection => { diff --git a/src/ui/macroquad/difficulty_selection.rs b/src/ui/macroquad/difficulty_selection.rs index c83c988..090d682 100644 --- a/src/ui/macroquad/difficulty_selection.rs +++ b/src/ui/macroquad/difficulty_selection.rs @@ -31,22 +31,23 @@ pub async fn draw_dificulty_selection(state: &mut GuiState, context: &mut GameCo menu_builder.label(ui, "Difficulty Selection"); if menu_builder.button(ui, "Easy") { - context.is_single = true; context.difficulty = crate::super_advanced_ai::BotDificulty::Easy; *state = GuiState::Game; } if menu_builder.button(ui, "Medium") { - context.is_single = true; context.difficulty = crate::super_advanced_ai::BotDificulty::Normal; *state = GuiState::Game; } if menu_builder.button(ui, "Hard") { - context.is_single = true; context.difficulty = crate::super_advanced_ai::BotDificulty::Hard; *state = GuiState::Game; } + + if menu_builder.button(ui, "Go back") { + *state = GuiState::ModeSelection; + } }); next_frame().await; diff --git a/src/ui/macroquad/mode_selection.rs b/src/ui/macroquad/mode_selection.rs index 9d9901e..f89b301 100644 --- a/src/ui/macroquad/mode_selection.rs +++ b/src/ui/macroquad/mode_selection.rs @@ -8,10 +8,13 @@ use macroquad::{ use crate::ui::{ macroquad::menu_builder::MenuBuilder, - state::GuiState::{self, ServerSelection}, + state::{ + GameContext, + GuiState::{self, ServerSelection}, + }, }; -pub async fn draw_mode_selection(state: &mut GuiState) { +pub async fn draw_mode_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, @@ -28,6 +31,7 @@ pub async fn draw_mode_selection(state: &mut GuiState) { menu_builder.label(ui, "Mode selection"); if menu_builder.button(ui, "Singleplayer") { + context.gamemode = crate::ui::state::GameMode::Singleplayer; *state = GuiState::DificultySelection; } diff --git a/src/ui/macroquad/server_selection.rs b/src/ui/macroquad/server_selection.rs index 4e03e70..359ba24 100644 --- a/src/ui/macroquad/server_selection.rs +++ b/src/ui/macroquad/server_selection.rs @@ -28,14 +28,20 @@ pub async fn draw_server_selection(state: &mut GuiState, context: &mut GameConte 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.is_single = false; + 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") { diff --git a/src/ui/state.rs b/src/ui/state.rs index ffd3e7f..093eec3 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -14,9 +14,18 @@ pub enum GuiState { Exit, } +#[derive(Default)] +pub enum GameMode { + #[default] + Singleplayer, + Multiplayer { + is_hosting: bool, + }, +} + #[derive(Default)] pub struct GameContext { pub difficulty: BotDificulty, - pub is_single: bool, + pub gamemode: GameMode, pub server_url_buffer: String, } From 20d922c56e2fd2a896f359f6123b67d8215c977d Mon Sep 17 00:00:00 2001 From: szymon Date: Fri, 21 Aug 2026 14:16:34 +0200 Subject: [PATCH 10/48] feat: add connecting to the server --- src/bin/macroquad_client.rs | 29 +++++++++++++++--- src/logic/board/board_view.rs | 2 +- src/ui/macroquad/difficulty_selection.rs | 11 +++---- src/ui/macroquad/game.rs | 38 ++++++++++++++++++++++++ src/ui/macroquad/main_menu.rs | 3 -- src/ui/macroquad/mod.rs | 1 + src/ui/macroquad/mode_selection.rs | 2 -- src/ui/macroquad/server_selection.rs | 5 ++-- src/ui/state.rs | 30 ++++++++++++++++--- 9 files changed, 99 insertions(+), 22 deletions(-) create mode 100644 src/ui/macroquad/game.rs diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 1ecf02d..07762a1 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -9,9 +9,10 @@ use macroquad::{ color::{BLACK, WHITE}, math::vec2, miniquad::{self, conf::LinuxBackend::WaylandWithX11Fallback}, + text::draw_text, texture::{DrawTextureParams, draw_texture_ex, load_texture}, ui::{Skin, root_ui}, - window::{Conf, screen_height, screen_width}, + window::{Conf, next_frame, screen_height, screen_width}, }; fn window_conf() -> Conf { @@ -70,7 +71,7 @@ pub async fn main() { }, ); - match state { + match &state { GuiState::MainMenu => { draw_main_menu(&mut state).await; } @@ -87,16 +88,36 @@ pub async fn main() { draw_server_selection(&mut state, &mut context).await; } + GuiState::Connecting(receiver) => { + draw_text("Connecting...", 0.0, 0.0, 64.0, BLACK); + + match receiver.try_recv() { + Ok(client) => { + if let Some(client) = client { + draw_text("Connected!", 0.0, 0.0, 64.0, BLACK); + state = GuiState::Game(client); + } else { + draw_text("Could not connect!", 0.0, 0.0, 64.0, BLACK); + } + } + Err(_) => { + draw_text("Error", 0.0, 0.0, 64.0, BLACK); + } + } + } + GuiState::Settings => { todo!(); } - GuiState::Game => { - todo!(); + + GuiState::Game(client) => { + draw_text("Gamer time", 100.0, 100.0, 64.0, BLACK); } GuiState::Exit => { break; } } + next_frame().await; } } diff --git a/src/logic/board/board_view.rs b/src/logic/board/board_view.rs index c1b4828..4850edb 100644 --- a/src/logic/board/board_view.rs +++ b/src/logic/board/board_view.rs @@ -6,7 +6,7 @@ use uuid::Uuid; use crate::logic::board::{board::Board, field::Field}; /// View of the board, without any methods. Meant for sending over network -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)] +#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Default)] pub struct BoardView { pub board: Vec, pub size: usize, diff --git a/src/ui/macroquad/difficulty_selection.rs b/src/ui/macroquad/difficulty_selection.rs index 090d682..8e32f5c 100644 --- a/src/ui/macroquad/difficulty_selection.rs +++ b/src/ui/macroquad/difficulty_selection.rs @@ -11,6 +11,7 @@ use crate::ui::{ state::{ GameContext, GuiState::{self}, + connect_to_server, }, }; @@ -30,25 +31,25 @@ pub async fn draw_dificulty_selection(state: &mut GuiState, context: &mut GameCo .ui(&mut root_ui(), |ui| { menu_builder.label(ui, "Difficulty Selection"); + // TODO! refactor this ugly ass code + if menu_builder.button(ui, "Easy") { context.difficulty = crate::super_advanced_ai::BotDificulty::Easy; - *state = GuiState::Game; + *state = GuiState::Connecting(connect_to_server(context.clone())); } if menu_builder.button(ui, "Medium") { context.difficulty = crate::super_advanced_ai::BotDificulty::Normal; - *state = GuiState::Game; + *state = GuiState::Connecting(connect_to_server(context.clone())); } if menu_builder.button(ui, "Hard") { context.difficulty = crate::super_advanced_ai::BotDificulty::Hard; - *state = GuiState::Game; + *state = GuiState::Connecting(connect_to_server(context.clone())); } if menu_builder.button(ui, "Go back") { *state = GuiState::ModeSelection; } }); - - next_frame().await; } diff --git a/src/ui/macroquad/game.rs b/src/ui/macroquad/game.rs new file mode 100644 index 0000000..2862c78 --- /dev/null +++ b/src/ui/macroquad/game.rs @@ -0,0 +1,38 @@ +use tokio::sync::mpsc::Receiver; + +use crate::{ + logic::board::board_view::BoardView, + network::{client::Client, message::ServerMessage}, + ui::state::GameContext, +}; + +pub struct GameClient { + client: Client, + update_receiver: Receiver, + + board: BoardView, + player_name: String, + enemy_name: String, // TODO! Server should give this info to us (it doesn't rn) +} + +impl GameClient { + pub async fn new(context: &GameContext) -> Option { + let Some(mut client) = Client::new(None).await else { + return None; + }; + + let Some(update_receiver) = client.get_update_receiver() else { + return None; + }; + + let board = BoardView::default(); + + Some(Self { + client, + update_receiver, + board, + player_name: "Morbius".to_string(), + enemy_name: "Milo".to_string(), + }) + } +} diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs index d941fdd..5719574 100644 --- a/src/ui/macroquad/main_menu.rs +++ b/src/ui/macroquad/main_menu.rs @@ -8,7 +8,6 @@ use macroquad::{ use crate::ui::{macroquad::menu_builder::MenuBuilder, state::GuiState}; - pub async fn draw_main_menu(state: &mut GuiState) { let menu_size = vec2(screen_width() * 0.5, screen_height() * 0.5); let menu_pos = vec2( @@ -37,6 +36,4 @@ pub async fn draw_main_menu(state: &mut GuiState) { *state = GuiState::Exit; } }); - - next_frame().await; } diff --git a/src/ui/macroquad/mod.rs b/src/ui/macroquad/mod.rs index 3b2fad6..03200bd 100644 --- a/src/ui/macroquad/mod.rs +++ b/src/ui/macroquad/mod.rs @@ -1,4 +1,5 @@ pub mod difficulty_selection; +pub mod game; pub mod main_menu; mod menu_builder; pub mod mode_selection; diff --git a/src/ui/macroquad/mode_selection.rs b/src/ui/macroquad/mode_selection.rs index f89b301..93bb956 100644 --- a/src/ui/macroquad/mode_selection.rs +++ b/src/ui/macroquad/mode_selection.rs @@ -43,6 +43,4 @@ pub async fn draw_mode_selection(state: &mut GuiState, context: &mut GameContext *state = GuiState::MainMenu; } }); - - next_frame().await; } diff --git a/src/ui/macroquad/server_selection.rs b/src/ui/macroquad/server_selection.rs index 359ba24..605b451 100644 --- a/src/ui/macroquad/server_selection.rs +++ b/src/ui/macroquad/server_selection.rs @@ -11,6 +11,7 @@ use crate::ui::{ state::{ GameContext, GuiState::{self}, + connect_to_server, }, }; @@ -40,7 +41,7 @@ pub async fn draw_server_selection(state: &mut GuiState, context: &mut GameConte if menu_builder.button(ui, "Connect") { context.gamemode = crate::ui::state::GameMode::Multiplayer { is_hosting: false }; - *state = GuiState::Game; + *state = GuiState::Connecting(connect_to_server(context.clone())); // TODO Validate url before connecting or something like that } @@ -48,6 +49,4 @@ pub async fn draw_server_selection(state: &mut GuiState, context: &mut GameConte *state = GuiState::ModeSelection; } }); - - next_frame().await; } diff --git a/src/ui/state.rs b/src/ui/state.rs index 093eec3..a782c16 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -1,4 +1,6 @@ -use crate::super_advanced_ai::BotDificulty; +use std::sync::mpsc::{self, Receiver}; + +use crate::{super_advanced_ai::BotDificulty, ui::macroquad::game::GameClient}; #[derive(Default)] pub enum GuiState { @@ -9,12 +11,14 @@ pub enum GuiState { DificultySelection, ServerSelection, + Connecting(Receiver>), + Settings, - Game, + Game(GameClient), Exit, } -#[derive(Default)] +#[derive(Default, Clone, Copy)] pub enum GameMode { #[default] Singleplayer, @@ -23,9 +27,27 @@ pub enum GameMode { }, } -#[derive(Default)] +#[derive(Default, Clone)] pub struct GameContext { pub difficulty: BotDificulty, pub gamemode: GameMode, pub server_url_buffer: String, } + +// TODO! Move this +pub fn connect_to_server(context: GameContext) -> Receiver> { + let (tx, rc) = mpsc::channel::>(); + let context_clone = context.clone(); + + let _ = std::thread::spawn(move || { + let rt = tokio::runtime::Runtime::new().unwrap(); + + let client_option = rt.block_on(async { GameClient::new(&context_clone).await }); + + let _ = tx.send(client_option); + + std::thread::park(); + }); + + rc +} From 5f650e3b99ef768422e65a6cab350f102d0577ea Mon Sep 17 00:00:00 2001 From: szymon Date: Fri, 21 Aug 2026 17:51:05 +0200 Subject: [PATCH 11/48] feat: add lobby checkbox that does nothing at the moment --- src/bin/macroquad_client.rs | 25 +++- src/network/server.rs | 5 +- src/ui/macroquad/difficulty_selection.rs | 6 +- src/ui/macroquad/game.rs | 178 ++++++++++++++++++++++- src/ui/macroquad/server_selection.rs | 2 +- src/ui/state.rs | 13 +- 6 files changed, 205 insertions(+), 24 deletions(-) diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 07762a1..3c5d61a 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,7 +1,8 @@ use checkers::ui::{ macroquad::{ - difficulty_selection::draw_dificulty_selection, main_menu::draw_main_menu, - mode_selection::draw_mode_selection, server_selection::draw_server_selection, + difficulty_selection::draw_dificulty_selection, game::GameClient, + main_menu::draw_main_menu, mode_selection::draw_mode_selection, + server_selection::draw_server_selection, }, state::{GameContext, GuiState}, }; @@ -40,9 +41,16 @@ pub async fn get_general_style() -> Skin { .font_size(32) .build(); + let checkbox_style = root_ui() + .style_builder() + .color(BLACK) + .text_color(BLACK) + .build(); + Skin { label_style, button_style, + checkbox_style, ..root_ui().default_skin() } } @@ -71,7 +79,7 @@ pub async fn main() { }, ); - match &state { + match &mut state { GuiState::MainMenu => { draw_main_menu(&mut state).await; } @@ -95,7 +103,13 @@ pub async fn main() { Ok(client) => { if let Some(client) = client { draw_text("Connected!", 0.0, 0.0, 64.0, BLACK); - state = GuiState::Game(client); + let client = GameClient::new(client, &context); + if let Some(client) = client { + state = GuiState::Game(client); + } else { + // ugly ass code + draw_text("Could not connect!", 0.0, 0.0, 64.0, BLACK); + } } else { draw_text("Could not connect!", 0.0, 0.0, 64.0, BLACK); } @@ -111,7 +125,8 @@ pub async fn main() { } GuiState::Game(client) => { - draw_text("Gamer time", 100.0, 100.0, 64.0, BLACK); + client.update(); + client.draw(); } GuiState::Exit => { diff --git a/src/network/server.rs b/src/network/server.rs index bf6f8dd..f553aaa 100644 --- a/src/network/server.rs +++ b/src/network/server.rs @@ -30,8 +30,9 @@ const MAX_PLAYABLE_CONNECTIONS: usize = 2; // DON'T EVER CHANGE THIS AS GAME OF // There will be a spectator mode, hence the name __PLAYABLE__ connection. You will be able to have // more connections, but they won't be able to play -#[derive(PartialEq)] -enum ServerStage { +#[derive(Debug, PartialEq, Default)] +pub enum ServerStage { + #[default] Lobby, Game, End, diff --git a/src/ui/macroquad/difficulty_selection.rs b/src/ui/macroquad/difficulty_selection.rs index 8e32f5c..5107df1 100644 --- a/src/ui/macroquad/difficulty_selection.rs +++ b/src/ui/macroquad/difficulty_selection.rs @@ -35,17 +35,17 @@ pub async fn draw_dificulty_selection(state: &mut GuiState, context: &mut GameCo if menu_builder.button(ui, "Easy") { context.difficulty = crate::super_advanced_ai::BotDificulty::Easy; - *state = GuiState::Connecting(connect_to_server(context.clone())); + *state = GuiState::Connecting(connect_to_server()); } if menu_builder.button(ui, "Medium") { context.difficulty = crate::super_advanced_ai::BotDificulty::Normal; - *state = GuiState::Connecting(connect_to_server(context.clone())); + *state = GuiState::Connecting(connect_to_server()); } if menu_builder.button(ui, "Hard") { context.difficulty = crate::super_advanced_ai::BotDificulty::Hard; - *state = GuiState::Connecting(connect_to_server(context.clone())); + *state = GuiState::Connecting(connect_to_server()); } if menu_builder.button(ui, "Go back") { diff --git a/src/ui/macroquad/game.rs b/src/ui/macroquad/game.rs index 2862c78..dacd09d 100644 --- a/src/ui/macroquad/game.rs +++ b/src/ui/macroquad/game.rs @@ -1,8 +1,19 @@ -use tokio::sync::mpsc::Receiver; +use log::{error, info}; +use macroquad::{ + color::GRAY, + math::{Rect, Vec2, vec2}, + shapes::draw_rectangle, + ui::{Ui, hash, root_ui, widgets::Checkbox}, + window::{screen_height, screen_width}, +}; +use tokio::sync::mpsc::{Receiver, error::TryRecvError::Disconnected}; use crate::{ logic::board::board_view::BoardView, - network::{client::Client, message::ServerMessage}, + network::{ + client::Client, message::ServerMessage, network_identity::NetworkIdentity, + server::ServerStage, + }, ui::state::GameContext, }; @@ -10,29 +21,182 @@ pub struct GameClient { client: Client, update_receiver: Receiver, + identity: Option, + board: BoardView, player_name: String, enemy_name: String, // TODO! Server should give this info to us (it doesn't rn) + + game_state: ServerStage, + + game_area: Rect, + game_padding: f32, + + lobby: Lobby, + + chat_area: Rect, +} + +#[derive(Default)] +struct Lobby { + is_ready: bool, + checkbox_pos: Vec2, + checkbox_size: Vec2, } impl GameClient { - pub async fn new(context: &GameContext) -> Option { - let Some(mut client) = Client::new(None).await else { - return None; - }; - + pub fn new(mut client: Client, context: &GameContext) -> Option { let Some(update_receiver) = client.get_update_receiver() else { return None; }; let board = BoardView::default(); + let game_stage = ServerStage::default(); + let mut lobby = Lobby::default(); + lobby.checkbox_size = vec2(32.0, 16.0); + + let game_area = Rect { + x: 0.0, + y: 0.0, + w: screen_width() * 0.8, + h: screen_height(), + }; + let game_padding = 25.0; + + let chat_area = Rect { + x: game_area.w, + y: 0.0, + w: screen_width() * 0.2, + h: screen_height(), + }; + Some(Self { client, update_receiver, + identity: None, + board, + lobby, + player_name: "Morbius".to_string(), enemy_name: "Milo".to_string(), + + game_state: game_stage, + + game_area, + game_padding, + + chat_area, }) } + + pub fn draw(&mut self) { + match self.game_state { + ServerStage::Lobby => { + self.draw_lobby(); + } + + ServerStage::Game => { + self.draw_game(); + } + + ServerStage::End => { + self.draw_summary_screen(); + } + } + //self.draw_chat(); // TODO! uncomment this + } + + fn draw_lobby(&mut self) { + let lobby = &self.lobby; + + draw_rectangle( + lobby.checkbox_pos.x, + lobby.checkbox_pos.y, + lobby.checkbox_size.x * 10.0, + lobby.checkbox_size.y * 10.0, + GRAY, + ); + + Checkbox::new(hash!()) + .pos(self.lobby.checkbox_pos) + .label("Ready") + .size(self.lobby.checkbox_size) + .ui(&mut root_ui(), &mut self.lobby.is_ready); + } + + fn draw_game(&self) { + todo!(); + } + + fn draw_summary_screen(&self) { + todo!(); + } + + fn draw_chat(&self) { + todo!(); + } + + /* === UPDATING STUFF ==== */ + + pub fn update(&mut self) { + self.update_rects(); + self.update_network(); + + match self.game_state { + ServerStage::Lobby => self.update_lobby(), + ServerStage::Game => todo!(), + ServerStage::End => todo!(), + } + } + + fn update_network(&mut self) { + match self.update_receiver.try_recv() { + Ok(msg) => match msg { + ServerMessage::GameStart { identity } => { + info!("We go identity!"); + self.identity = Some(identity); + } + + ServerMessage::AvailableCaptures { captures } => todo!(), + ServerMessage::AvailableMoves { moves } => todo!(), + ServerMessage::BroadcastBoardState { board } => todo!(), + ServerMessage::BroadcastCurrentTurn { active_player } => todo!(), + ServerMessage::BroadCastTextMessage { sender, content } => todo!(), + ServerMessage::GameEnd { result } => todo!(), + + _ => {} // ignore things that network client handled by itself + }, + + Err(Disconnected) => { + error!("Connection broken!!!!"); + } + + Err(_) => {} // No messages - nothing wrong (why is this even an error) + } + } + + fn update_lobby(&mut self) { + self.lobby.checkbox_pos = vec2( + self.game_area.w / 2.0 - self.lobby.checkbox_size.x / 2.0, + self.game_area.h / 2.0, + ); + } + + fn update_rects(&mut self) { + self.game_area = Rect { + x: 0.0, + y: 0.0, + w: screen_width() * 0.8, + h: screen_height(), + }; + + self.chat_area = Rect { + x: self.game_area.w, + y: 0.0, + w: screen_width() * 0.2, + h: screen_height(), + }; + } } diff --git a/src/ui/macroquad/server_selection.rs b/src/ui/macroquad/server_selection.rs index 605b451..c7e8491 100644 --- a/src/ui/macroquad/server_selection.rs +++ b/src/ui/macroquad/server_selection.rs @@ -41,7 +41,7 @@ pub async fn draw_server_selection(state: &mut GuiState, context: &mut GameConte if menu_builder.button(ui, "Connect") { context.gamemode = crate::ui::state::GameMode::Multiplayer { is_hosting: false }; - *state = GuiState::Connecting(connect_to_server(context.clone())); + *state = GuiState::Connecting(connect_to_server()); // TODO Validate url before connecting or something like that } diff --git a/src/ui/state.rs b/src/ui/state.rs index a782c16..2502a3e 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -1,6 +1,8 @@ use std::sync::mpsc::{self, Receiver}; -use crate::{super_advanced_ai::BotDificulty, ui::macroquad::game::GameClient}; +use crate::{ + network::client::Client, super_advanced_ai::BotDificulty, ui::macroquad::game::GameClient, +}; #[derive(Default)] pub enum GuiState { @@ -11,7 +13,7 @@ pub enum GuiState { DificultySelection, ServerSelection, - Connecting(Receiver>), + Connecting(Receiver>), Settings, Game(GameClient), @@ -35,14 +37,13 @@ pub struct GameContext { } // TODO! Move this -pub fn connect_to_server(context: GameContext) -> Receiver> { - let (tx, rc) = mpsc::channel::>(); - let context_clone = context.clone(); +pub fn connect_to_server() -> Receiver> { + let (tx, rc) = mpsc::channel::>(); let _ = std::thread::spawn(move || { let rt = tokio::runtime::Runtime::new().unwrap(); - let client_option = rt.block_on(async { GameClient::new(&context_clone).await }); + let client_option = rt.block_on(async { Client::new(None).await }); let _ = tx.send(client_option); From a280d525b158b669b97279305b3abef6b6dcbe8a Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 14:48:52 +0200 Subject: [PATCH 12/48] feat: add revoking readiness --- src/bin/client.rs | 11 ++++++++++- src/network/client.rs | 6 ++++++ src/network/message.rs | 1 + src/network/server.rs | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/bin/client.rs b/src/bin/client.rs index c96a384..e14a2d0 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -15,6 +15,7 @@ const QUIT_COMMAND: &str = "/quit"; const HELP_COMMAND: &str = "/help"; const SEND_COMMAND: &str = "/send"; const READY_COMMAND: &str = "/ready"; +const UNREADY_COMMAND: &str = "/unready"; const SINGLEPLAYER_COMMAND: &str = "/single"; const CAPTURE_COMMAND: &str = "/capture"; @@ -26,6 +27,8 @@ enum CliCommands { Send, Ready, + Unready, + Single, Capture, @@ -50,6 +53,7 @@ impl TryFrom<&str> for CliCommands { HELP_COMMAND => Ok(CliCommands::Help), SEND_COMMAND => Ok(CliCommands::Send), READY_COMMAND => Ok(CliCommands::Ready), + UNREADY_COMMAND => Ok(CliCommands::Unready), SINGLEPLAYER_COMMAND => Ok(CliCommands::Single), CAPTURE_COMMAND => Ok(CliCommands::Capture), @@ -119,6 +123,7 @@ async fn main() -> Result<(), Box> { │\t {} - quit │\t {} - show this message │\t {} - message the server you're ready +│\t {} - revoke readiness │\t {} - send text message to the server │\t {} - play alone │ @@ -126,7 +131,7 @@ async fn main() -> Result<(), Box> { │\t {} - choose move from the list. First number is pawn you want to move and second is position it should take └─────────────────────────────────────── ", - QUIT_COMMAND, HELP_COMMAND, READY_COMMAND, SEND_COMMAND, SINGLEPLAYER_COMMAND , CAPTURE_COMMAND, MOVE_COMMAND + QUIT_COMMAND, HELP_COMMAND, READY_COMMAND, UNREADY_COMMAND, SEND_COMMAND, SINGLEPLAYER_COMMAND , CAPTURE_COMMAND, MOVE_COMMAND ); println!("───────Type /help for help───────"); @@ -209,6 +214,10 @@ async fn main() -> Result<(), Box> { client.signal_readiness().await; } + CliCommands::Unready => { + client.revoke_readiness().await; + } + CliCommands::Single => { println!("Tried connecting bot to the server! Make sure to be /ready"); tokio::spawn(run_bot()); diff --git a/src/network/client.rs b/src/network/client.rs index 1136f5c..47bce56 100644 --- a/src/network/client.rs +++ b/src/network/client.rs @@ -168,6 +168,12 @@ impl Client { self.send_message(msg).await; } + pub async fn revoke_readiness(&mut self) { + debug!("Revoking readiness and sending it to the server..."); + let msg = Message::new(ClientMessage::SignalUnreadiness); + self.send_message(msg).await; + } + pub fn get_update_receiver(&mut self) -> Option> { self.update_receiver.take() } diff --git a/src/network/message.rs b/src/network/message.rs index 3250e73..91b978a 100644 --- a/src/network/message.rs +++ b/src/network/message.rs @@ -60,6 +60,7 @@ pub enum ServerMessage { pub enum ClientMessage { AnswerHandshake { player_name: String }, SignalReadiness, + SignalUnreadiness, ConnectionDead { addr: SocketAddr }, diff --git a/src/network/server.rs b/src/network/server.rs index f553aaa..6f886be 100644 --- a/src/network/server.rs +++ b/src/network/server.rs @@ -189,6 +189,10 @@ impl Server { self.handle_readiness(addr).await } + ClientMessage::SignalUnreadiness => { + self.handle_unreadiness(addr).await; + } + ClientMessage::RequestCapture { capture_path } => { self.process_capture(capture_path).await; } @@ -337,6 +341,37 @@ impl Server { } } + async fn handle_unreadiness(&mut self, addr: SocketAddr) { + if !self.connections[&addr].is_handshaken { + warn!( + "Connection: {} tried revoking readiness, but hands were not shaken. Ignoring....", + addr + ); + return; + } + + if self.state.stage != ServerStage::Lobby { + warn!( + "Player {} tried revoking readiness, but game already started. Ignoring...", + addr + ); + return; + } + + self.state.ready_count -= 1; + + self.connections + .get_mut(&addr) + .expect("Could not get the indentity of the player that wanted to revoke readinessl") + .identity + .is_ready = false; + + info!( + "Player {} revoked his readiness. Currently ready: {}/{}", + addr, self.state.ready_count, MAX_PLAYABLE_CONNECTIONS + ); + } + /* === Sending messages === */ /// Should be used after every players move From 6720e4c9bdd8ef04bbdee630393eb9a6b64da73a Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 14:51:03 +0200 Subject: [PATCH 13/48] feat: center background of the checkbox --- src/ui/macroquad/game.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ui/macroquad/game.rs b/src/ui/macroquad/game.rs index dacd09d..842ece4 100644 --- a/src/ui/macroquad/game.rs +++ b/src/ui/macroquad/game.rs @@ -111,11 +111,14 @@ impl GameClient { fn draw_lobby(&mut self) { let lobby = &self.lobby; + let background_x = lobby.checkbox_size.x * 10.0; + let background_y = lobby.checkbox_size.y * 10.0; + draw_rectangle( - lobby.checkbox_pos.x, - lobby.checkbox_pos.y, - lobby.checkbox_size.x * 10.0, - lobby.checkbox_size.y * 10.0, + lobby.checkbox_pos.x - background_x * 0.5, + lobby.checkbox_pos.y - background_y * 0.5, + background_x, + background_y, GRAY, ); From dd18a263d1d0f7187b198a26bf4dc17b9dfbacec Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 15:27:11 +0200 Subject: [PATCH 14/48] feat: implement sending and revoking readiness from gui --- src/ui/macroquad/game.rs | 58 ++++++++++++++++++++++++++++++++++++++-- src/ui/state.rs | 12 ++++++++- 2 files changed, 67 insertions(+), 3 deletions(-) diff --git a/src/ui/macroquad/game.rs b/src/ui/macroquad/game.rs index 842ece4..5d02ce3 100644 --- a/src/ui/macroquad/game.rs +++ b/src/ui/macroquad/game.rs @@ -1,3 +1,5 @@ +use std::sync::mpsc::{self, Sender}; + use log::{error, info}; use macroquad::{ color::GRAY, @@ -18,7 +20,7 @@ use crate::{ }; pub struct GameClient { - client: Client, + cmd_sender: Sender, update_receiver: Receiver, identity: Option, @@ -44,12 +46,55 @@ struct Lobby { checkbox_size: Vec2, } +enum GuiCommands { + Send(String), + + Ready, + Unready, + + Capture, + Move, +} + impl GameClient { pub fn new(mut client: Client, context: &GameContext) -> Option { let Some(update_receiver) = client.get_update_receiver() else { return None; }; + let (cmd_sender, cmd_recv) = mpsc::channel::(); + + std::thread::spawn(|| { + let rt = tokio::runtime::Runtime::new().unwrap(); // i dont like this + + rt.spawn(async move { + loop { + match cmd_recv.recv() { + Ok(cmd) => match cmd { + GuiCommands::Send(content) => { + client.send_text_message(content).await; + } + + GuiCommands::Ready => { + client.signal_readiness().await; + } + + GuiCommands::Unready => { + client.revoke_readiness().await; + } + GuiCommands::Capture => todo!(), + GuiCommands::Move => todo!(), + }, + + Err(e) => { + error!("Connection broken: {}", e); + return; + } + } + } + }); + }); + let board = BoardView::default(); let game_stage = ServerStage::default(); @@ -72,7 +117,7 @@ impl GameClient { }; Some(Self { - client, + cmd_sender, update_receiver, identity: None, @@ -122,11 +167,20 @@ impl GameClient { GRAY, ); + let before_click: bool = self.lobby.is_ready; Checkbox::new(hash!()) .pos(self.lobby.checkbox_pos) .label("Ready") .size(self.lobby.checkbox_size) .ui(&mut root_ui(), &mut self.lobby.is_ready); + + if before_click != self.lobby.is_ready { + if self.lobby.is_ready { + let _ = self.cmd_sender.send(GuiCommands::Ready); + } else { + let _ = self.cmd_sender.send(GuiCommands::Unready); + } + } } fn draw_game(&self) { diff --git a/src/ui/state.rs b/src/ui/state.rs index 2502a3e..419058b 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -1,4 +1,4 @@ -use std::sync::mpsc::{self, Receiver}; +use std::sync::mpsc::{self, Receiver, Sender}; use crate::{ network::client::Client, super_advanced_ai::BotDificulty, ui::macroquad::game::GameClient, @@ -36,6 +36,16 @@ pub struct GameContext { pub server_url_buffer: String, } +enum CliCommands { + Send, + + Ready, + Unready, + + Capture, + Move, +} + // TODO! Move this pub fn connect_to_server() -> Receiver> { let (tx, rc) = mpsc::channel::>(); From 604666b471e51ee6f72c62abe20ffac00b89a053 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 15:36:37 +0200 Subject: [PATCH 15/48] feat: change mpsc channels to tokio --- src/ui/macroquad/game.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/ui/macroquad/game.rs b/src/ui/macroquad/game.rs index 5d02ce3..3ec2332 100644 --- a/src/ui/macroquad/game.rs +++ b/src/ui/macroquad/game.rs @@ -1,4 +1,4 @@ -use std::sync::mpsc::{self, Sender}; +use tokio::sync::mpsc::{self, Sender}; use log::{error, info}; use macroquad::{ @@ -62,15 +62,15 @@ impl GameClient { return None; }; - let (cmd_sender, cmd_recv) = mpsc::channel::(); + let (cmd_sender, mut cmd_recv) = mpsc::channel::(10); std::thread::spawn(|| { let rt = tokio::runtime::Runtime::new().unwrap(); // i dont like this - rt.spawn(async move { + rt.block_on(async move { loop { - match cmd_recv.recv() { - Ok(cmd) => match cmd { + match cmd_recv.recv().await { + Some(cmd) => match cmd { GuiCommands::Send(content) => { client.send_text_message(content).await; } @@ -86,8 +86,8 @@ impl GameClient { GuiCommands::Move => todo!(), }, - Err(e) => { - error!("Connection broken: {}", e); + None => { + error!("Connection with cmd thread broken"); return; } } @@ -176,9 +176,10 @@ impl GameClient { if before_click != self.lobby.is_ready { if self.lobby.is_ready { - let _ = self.cmd_sender.send(GuiCommands::Ready); + let _ = self.cmd_sender.try_send(GuiCommands::Ready); // TODO! Maybe handle failure + // or something } else { - let _ = self.cmd_sender.send(GuiCommands::Unready); + let _ = self.cmd_sender.try_send(GuiCommands::Unready); } } } From 16056d0eb514527bb37493abfafd55db436de5c3 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 16:27:12 +0200 Subject: [PATCH 16/48] feat: add chat window and sending messages --- src/ui/macroquad/game.rs | 90 ++++++++++++++++++++++++++++++++-------- 1 file changed, 72 insertions(+), 18 deletions(-) diff --git a/src/ui/macroquad/game.rs b/src/ui/macroquad/game.rs index 3ec2332..6f13d10 100644 --- a/src/ui/macroquad/game.rs +++ b/src/ui/macroquad/game.rs @@ -1,11 +1,15 @@ use tokio::sync::mpsc::{self, Sender}; -use log::{error, info}; +use log::{debug, error, info}; use macroquad::{ - color::GRAY, + color::{BLACK, GRAY, WHITE}, + input::{KeyCode, get_keys_pressed}, math::{Rect, Vec2, vec2}, - shapes::draw_rectangle, - ui::{Ui, hash, root_ui, widgets::Checkbox}, + shapes::{draw_rectangle, draw_rectangle_lines}, + ui::{ + Ui, hash, root_ui, + widgets::{Checkbox, InputText}, + }, window::{screen_height, screen_width}, }; use tokio::sync::mpsc::{Receiver, error::TryRecvError::Disconnected}; @@ -35,8 +39,7 @@ pub struct GameClient { game_padding: f32, lobby: Lobby, - - chat_area: Rect, + chat: Chat, } #[derive(Default)] @@ -46,6 +49,18 @@ struct Lobby { checkbox_size: Vec2, } +struct Message { + sender: String, + content: String, +} + +#[derive(Default)] +struct Chat { + chat_area: Rect, + messages: Vec, + message_buffer: String, +} + enum GuiCommands { Send(String), @@ -109,12 +124,7 @@ impl GameClient { }; let game_padding = 25.0; - let chat_area = Rect { - x: game_area.w, - y: 0.0, - w: screen_width() * 0.2, - h: screen_height(), - }; + let chat = Chat::default(); Some(Self { cmd_sender, @@ -132,7 +142,7 @@ impl GameClient { game_area, game_padding, - chat_area, + chat, }) } @@ -150,7 +160,7 @@ impl GameClient { self.draw_summary_screen(); } } - //self.draw_chat(); // TODO! uncomment this + self.draw_chat(); } fn draw_lobby(&mut self) { @@ -192,8 +202,33 @@ impl GameClient { todo!(); } - fn draw_chat(&self) { - todo!(); + fn draw_chat(&mut self) { + draw_rectangle( + self.chat.chat_area.x, + self.chat.chat_area.y, + self.chat.chat_area.w, + self.chat.chat_area.h, + WHITE, + ); + + let input_size = vec2(self.chat.chat_area.w, self.chat.chat_area.h * 0.1); + let input_pos = vec2(self.chat.chat_area.x, self.chat.chat_area.h - input_size.y); + + InputText::new(hash!()) + .position(input_pos) + .size(input_size) + .ui(&mut root_ui(), &mut self.chat.message_buffer); + + /* + draw_rectangle_lines( + input_pos.x, + input_pos.y, + input_size.x, + input_size.y, + 1.5, + BLACK, + ); + */ } /* === UPDATING STUFF ==== */ @@ -207,6 +242,21 @@ impl GameClient { ServerStage::Game => todo!(), ServerStage::End => todo!(), } + + for key in get_keys_pressed() { + match key { + KeyCode::Enter => { + if !self.chat.message_buffer.is_empty() { + let _ = self // TODO! Check the message before sending + .cmd_sender + .try_send(GuiCommands::Send(self.chat.message_buffer.clone())); + self.chat.message_buffer.clear(); + } + } + + _ => {} + } + } } fn update_network(&mut self) { @@ -221,7 +271,11 @@ impl GameClient { ServerMessage::AvailableMoves { moves } => todo!(), ServerMessage::BroadcastBoardState { board } => todo!(), ServerMessage::BroadcastCurrentTurn { active_player } => todo!(), - ServerMessage::BroadCastTextMessage { sender, content } => todo!(), + ServerMessage::BroadCastTextMessage { sender, content } => { + debug!("Got message from: {} with content: {}", sender, content); + self.chat.messages.push(Message { sender, content }); + } + ServerMessage::GameEnd { result } => todo!(), _ => {} // ignore things that network client handled by itself @@ -250,7 +304,7 @@ impl GameClient { h: screen_height(), }; - self.chat_area = Rect { + self.chat.chat_area = Rect { x: self.game_area.w, y: 0.0, w: screen_width() * 0.2, From d07cb8328ce85c3ac952c9587fa9b209b12fa773 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 16:45:23 +0200 Subject: [PATCH 17/48] refactor: split chat from game.rs --- src/bin/macroquad_client.rs | 2 +- src/ui/macroquad/game/chat.rs | 58 ++++++++++++++++++++++ src/ui/macroquad/{ => game}/game.rs | 75 +++++------------------------ src/ui/macroquad/game/mod.rs | 2 + src/ui/state.rs | 12 +---- 5 files changed, 74 insertions(+), 75 deletions(-) create mode 100644 src/ui/macroquad/game/chat.rs rename src/ui/macroquad/{ => game}/game.rs (78%) create mode 100644 src/ui/macroquad/game/mod.rs diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 3c5d61a..a7a9827 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,6 +1,6 @@ use checkers::ui::{ macroquad::{ - difficulty_selection::draw_dificulty_selection, game::GameClient, + difficulty_selection::draw_dificulty_selection, game::game::GameClient, main_menu::draw_main_menu, mode_selection::draw_mode_selection, server_selection::draw_server_selection, }, diff --git a/src/ui/macroquad/game/chat.rs b/src/ui/macroquad/game/chat.rs new file mode 100644 index 0000000..545c5d9 --- /dev/null +++ b/src/ui/macroquad/game/chat.rs @@ -0,0 +1,58 @@ +use macroquad::{ + color::WHITE, + math::{Rect, vec2}, + shapes::draw_rectangle, + ui::{hash, root_ui, widgets::InputText}, + window::{screen_height, screen_width}, +}; +use tokio::sync::mpsc::Sender; + +use crate::ui::macroquad::game::game::GuiCommands; + +struct Message { + sender: String, + content: String, +} + +#[derive(Default)] +pub struct Chat { + area: Rect, + messages: Vec, + message_buffer: String, +} + +impl Chat { + pub fn update(&mut self, game_area: &Rect) { + self.area = Rect { + x: game_area.w, + y: 0.0, + w: screen_width() * 0.2, + h: screen_height(), + }; + } + + pub fn push_message(&mut self, sender: String, content: String) { + self.messages.push(Message { sender, content }); + } + + pub fn send_message(&mut self, cmd_sender: Sender) { + if !self.message_buffer.is_empty() { + let _ = // TODO! Check the message before sending + cmd_sender + .try_send(GuiCommands::Send(self.message_buffer.clone())); + self.message_buffer.clear(); + } + } + + pub fn draw(&mut self) { + draw_rectangle(self.area.x, self.area.y, self.area.w, self.area.h, WHITE); + + let input_size = vec2(self.area.w, self.area.h * 0.1); + let input_pos = vec2(self.area.x, self.area.h - input_size.y); + + InputText::new(hash!()) + .position(input_pos) + .size(input_size) + .ui(&mut root_ui(), &mut self.message_buffer); + } +} diff --git a/src/ui/macroquad/game.rs b/src/ui/macroquad/game/game.rs similarity index 78% rename from src/ui/macroquad/game.rs rename to src/ui/macroquad/game/game.rs index 6f13d10..83a3877 100644 --- a/src/ui/macroquad/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -2,14 +2,11 @@ use tokio::sync::mpsc::{self, Sender}; use log::{debug, error, info}; use macroquad::{ - color::{BLACK, GRAY, WHITE}, + color::GRAY, input::{KeyCode, get_keys_pressed}, math::{Rect, Vec2, vec2}, - shapes::{draw_rectangle, draw_rectangle_lines}, - ui::{ - Ui, hash, root_ui, - widgets::{Checkbox, InputText}, - }, + shapes::draw_rectangle, + ui::{hash, root_ui, widgets::Checkbox}, window::{screen_height, screen_width}, }; use tokio::sync::mpsc::{Receiver, error::TryRecvError::Disconnected}; @@ -20,7 +17,7 @@ use crate::{ client::Client, message::ServerMessage, network_identity::NetworkIdentity, server::ServerStage, }, - ui::state::GameContext, + ui::{macroquad::game::chat::Chat, state::GameContext}, }; pub struct GameClient { @@ -49,19 +46,7 @@ struct Lobby { checkbox_size: Vec2, } -struct Message { - sender: String, - content: String, -} - -#[derive(Default)] -struct Chat { - chat_area: Rect, - messages: Vec, - message_buffer: String, -} - -enum GuiCommands { +pub enum GuiCommands { Send(String), Ready, @@ -160,7 +145,7 @@ impl GameClient { self.draw_summary_screen(); } } - self.draw_chat(); + self.chat.draw(); } fn draw_lobby(&mut self) { @@ -202,35 +187,6 @@ impl GameClient { todo!(); } - fn draw_chat(&mut self) { - draw_rectangle( - self.chat.chat_area.x, - self.chat.chat_area.y, - self.chat.chat_area.w, - self.chat.chat_area.h, - WHITE, - ); - - let input_size = vec2(self.chat.chat_area.w, self.chat.chat_area.h * 0.1); - let input_pos = vec2(self.chat.chat_area.x, self.chat.chat_area.h - input_size.y); - - InputText::new(hash!()) - .position(input_pos) - .size(input_size) - .ui(&mut root_ui(), &mut self.chat.message_buffer); - - /* - draw_rectangle_lines( - input_pos.x, - input_pos.y, - input_size.x, - input_size.y, - 1.5, - BLACK, - ); - */ - } - /* === UPDATING STUFF ==== */ pub fn update(&mut self) { @@ -246,12 +202,10 @@ impl GameClient { for key in get_keys_pressed() { match key { KeyCode::Enter => { - if !self.chat.message_buffer.is_empty() { - let _ = self // TODO! Check the message before sending - .cmd_sender - .try_send(GuiCommands::Send(self.chat.message_buffer.clone())); - self.chat.message_buffer.clear(); - } + self.chat.send_message(self.cmd_sender.clone()); // not sure about cloning this + // every message sent. Maybe + // Chat should have it's own + // clone? } _ => {} @@ -273,7 +227,7 @@ impl GameClient { ServerMessage::BroadcastCurrentTurn { active_player } => todo!(), ServerMessage::BroadCastTextMessage { sender, content } => { debug!("Got message from: {} with content: {}", sender, content); - self.chat.messages.push(Message { sender, content }); + self.chat.push_message(sender, content); } ServerMessage::GameEnd { result } => todo!(), @@ -304,11 +258,6 @@ impl GameClient { h: screen_height(), }; - self.chat.chat_area = Rect { - x: self.game_area.w, - y: 0.0, - w: screen_width() * 0.2, - h: screen_height(), - }; + self.chat.update(&self.game_area); } } diff --git a/src/ui/macroquad/game/mod.rs b/src/ui/macroquad/game/mod.rs new file mode 100644 index 0000000..34a8b29 --- /dev/null +++ b/src/ui/macroquad/game/mod.rs @@ -0,0 +1,2 @@ +mod chat; +pub mod game; diff --git a/src/ui/state.rs b/src/ui/state.rs index 419058b..9dade60 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -1,7 +1,7 @@ use std::sync::mpsc::{self, Receiver, Sender}; use crate::{ - network::client::Client, super_advanced_ai::BotDificulty, ui::macroquad::game::GameClient, + network::client::Client, super_advanced_ai::BotDificulty, ui::macroquad::game::game::GameClient, }; #[derive(Default)] @@ -36,16 +36,6 @@ pub struct GameContext { pub server_url_buffer: String, } -enum CliCommands { - Send, - - Ready, - Unready, - - Capture, - Move, -} - // TODO! Move this pub fn connect_to_server() -> Receiver> { let (tx, rc) = mpsc::channel::>(); From dee82cbae1a767870520eac94957f0d5fd3ce52b Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 17:06:05 +0200 Subject: [PATCH 18/48] feat: display messsages in chat --- src/ui/macroquad/game/chat.rs | 39 ++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/ui/macroquad/game/chat.rs b/src/ui/macroquad/game/chat.rs index 545c5d9..73af59d 100644 --- a/src/ui/macroquad/game/chat.rs +++ b/src/ui/macroquad/game/chat.rs @@ -1,14 +1,19 @@ +use log::debug; use macroquad::{ - color::WHITE, + color::{BLACK, WHITE}, math::{Rect, vec2}, shapes::draw_rectangle, - ui::{hash, root_ui, widgets::InputText}, + ui::{ + Skin, hash, root_ui, + widgets::{Group, InputText, Label}, + }, window::{screen_height, screen_width}, }; use tokio::sync::mpsc::Sender; use crate::ui::macroquad::game::game::GuiCommands; +#[derive(Debug)] struct Message { sender: String, content: String, @@ -45,7 +50,7 @@ impl Chat { } pub fn draw(&mut self) { - draw_rectangle(self.area.x, self.area.y, self.area.w, self.area.h, WHITE); + draw_rectangle(self.area.x, self.area.y, self.area.w, self.area.h, BLACK); let input_size = vec2(self.area.w, self.area.h * 0.1); let input_pos = vec2(self.area.x, self.area.h - input_size.y); @@ -54,5 +59,33 @@ impl Chat { .position(input_pos) .size(input_size) .ui(&mut root_ui(), &mut self.message_buffer); + + let chat_size = vec2(self.area.w, self.area.h - input_size.y); + let chat_pos = vec2(self.area.x, self.area.y); + + let font_size = 12; + + let label_style = root_ui() + .style_builder() + .font_size(font_size) + .text_color(WHITE) + .build(); + + let chat_skin: Skin = Skin { + label_style, + ..root_ui().default_skin() + }; + + root_ui().push_skin(&chat_skin); + + Group::new(hash!(), chat_size) + .position(chat_pos) + .ui(&mut root_ui(), |ui| { + for message in &self.messages { + ui.label(None, &format!("[{}] {}", message.sender, message.content)); + } + }); + + root_ui().pop_skin(); } } From c75322cf1d038e53ecfa31324ceb05b3654e79da Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 18:23:40 +0200 Subject: [PATCH 19/48] feat: add wrapping messages --- src/ui/macroquad/game/chat.rs | 36 ++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/ui/macroquad/game/chat.rs b/src/ui/macroquad/game/chat.rs index 73af59d..85c3a71 100644 --- a/src/ui/macroquad/game/chat.rs +++ b/src/ui/macroquad/game/chat.rs @@ -3,8 +3,9 @@ use macroquad::{ color::{BLACK, WHITE}, math::{Rect, vec2}, shapes::draw_rectangle, + text::measure_text, ui::{ - Skin, hash, root_ui, + Skin, Ui, hash, root_ui, widgets::{Group, InputText, Label}, }, window::{screen_height, screen_width}, @@ -63,7 +64,7 @@ impl Chat { let chat_size = vec2(self.area.w, self.area.h - input_size.y); let chat_pos = vec2(self.area.x, self.area.y); - let font_size = 12; + let font_size = (self.area.w * 0.1) as u16; let label_style = root_ui() .style_builder() @@ -82,10 +83,39 @@ impl Chat { .position(chat_pos) .ui(&mut root_ui(), |ui| { for message in &self.messages { - ui.label(None, &format!("[{}] {}", message.sender, message.content)); + ui.label(None, &format!("[{}]", message.sender)); + wrap_message(ui, &message.content, font_size, chat_size.x); } }); root_ui().pop_skin(); } } + +fn wrap_message(ui: &mut Ui, msg: &String, font_size: u16, chat_width: f32) { + let mut buffer = String::new(); + + for word in msg.split_whitespace() { + let test_string = if buffer.is_empty() { + word.to_string() + } else { + format!("{} {}", buffer, word) + }; + + let test_width = measure_text(&test_string, None, font_size, 1.0).width; + + if test_width < chat_width - 20.0 { + buffer = test_string; + } else { + if !buffer.is_empty() { + ui.label(None, &buffer); + } + + buffer = word.to_string(); + } + } + + if !buffer.is_empty() { + ui.label(None, &buffer); + } +} From bcd89fc5e9202e085f10df34199ba17d3ce3c4d4 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 20:22:34 +0200 Subject: [PATCH 20/48] feat: add wrapping messages --- src/ui/macroquad/game/chat.rs | 37 ++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/ui/macroquad/game/chat.rs b/src/ui/macroquad/game/chat.rs index 85c3a71..4f69033 100644 --- a/src/ui/macroquad/game/chat.rs +++ b/src/ui/macroquad/game/chat.rs @@ -93,9 +93,21 @@ impl Chat { } fn wrap_message(ui: &mut Ui, msg: &String, font_size: u16, chat_width: f32) { + let chat_width = chat_width - 20.0; // we leave some room + let mut buffer = String::new(); + if measure_text(msg, None, font_size, 1.0).width < chat_width { + ui.label(None, &msg); + return; + } + for word in msg.split_whitespace() { + if measure_text(word, None, font_size, 1.0).width >= chat_width { + wrap_one_word(ui, word, font_size, chat_width); + continue; + } + let test_string = if buffer.is_empty() { word.to_string() } else { @@ -104,7 +116,7 @@ fn wrap_message(ui: &mut Ui, msg: &String, font_size: u16, chat_width: f32) { let test_width = measure_text(&test_string, None, font_size, 1.0).width; - if test_width < chat_width - 20.0 { + if test_width < chat_width { buffer = test_string; } else { if !buffer.is_empty() { @@ -119,3 +131,26 @@ fn wrap_message(ui: &mut Ui, msg: &String, font_size: u16, chat_width: f32) { ui.label(None, &buffer); } } + +fn wrap_one_word(ui: &mut Ui, msg: &str, font_size: u16, chat_width: f32) { + if measure_text(msg, None, font_size, 1.0).width < chat_width { + return; + } + + let msg_half = msg.chars().count() / 2; + + let first_half: String = msg.chars().take(msg_half).collect(); + let second_half: String = msg.chars().skip(msg_half).collect(); + + if measure_text(&first_half, None, font_size, 1.0).width >= chat_width { + wrap_one_word(ui, &first_half, font_size, chat_width); + } else { + ui.label(None, &format!("{}-", first_half)); + } + + if measure_text(&second_half, None, font_size, 1.0).width >= chat_width { + wrap_one_word(ui, &second_half, font_size, chat_width); + } else { + ui.label(None, &format!("{}-", second_half)); // TODO! Last word always has - at the end. + } +} From a8de0f550d4104a356cee8c30efc8fe1e2a64a2a Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 22 Aug 2026 21:10:40 +0200 Subject: [PATCH 21/48] feat: group messages from the same sender --- src/ui/macroquad/game/chat.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ui/macroquad/game/chat.rs b/src/ui/macroquad/game/chat.rs index 4f69033..4969fe4 100644 --- a/src/ui/macroquad/game/chat.rs +++ b/src/ui/macroquad/game/chat.rs @@ -79,12 +79,22 @@ impl Chat { root_ui().push_skin(&chat_skin); + let mut prev_sender: &str = ""; + Group::new(hash!(), chat_size) .position(chat_pos) .ui(&mut root_ui(), |ui| { for message in &self.messages { - ui.label(None, &format!("[{}]", message.sender)); + if prev_sender != message.sender { + if prev_sender != "" { + // make space if it's not the first message + ui.label(None, ""); + } + ui.label(None, &format!("[{}]", message.sender)); + } + wrap_message(ui, &message.content, font_size, chat_size.x); + prev_sender = &message.sender; } }); From af04741a15fb2475d283d50dc1310d0f1b8a9f23 Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 23 Aug 2026 11:33:18 +0200 Subject: [PATCH 22/48] feat: add drawing board --- src/logic/board/board_view.rs | 18 +++++++++++ src/ui/macroquad/game/board.rs | 56 ++++++++++++++++++++++++++++++++++ src/ui/macroquad/game/game.rs | 44 ++++++++++++++++++++------ src/ui/macroquad/game/mod.rs | 1 + src/ui/state.rs | 12 +++++++- 5 files changed, 121 insertions(+), 10 deletions(-) create mode 100644 src/ui/macroquad/game/board.rs diff --git a/src/logic/board/board_view.rs b/src/logic/board/board_view.rs index 4850edb..8976784 100644 --- a/src/logic/board/board_view.rs +++ b/src/logic/board/board_view.rs @@ -31,6 +31,24 @@ impl Index for BoardView { } } +impl IntoIterator for BoardView { + type Item = Field; + type IntoIter = std::vec::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + self.board.into_iter() + } +} + +impl<'a> IntoIterator for &'a BoardView { + type Item = &'a Field; + type IntoIter = std::slice::Iter<'a, Field>; + + fn into_iter(self) -> Self::IntoIter { + self.board.iter() + } +} + impl BoardView { pub fn to_string(&self, owner: &Uuid) -> String { (0..self.size) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs new file mode 100644 index 0000000..17318d7 --- /dev/null +++ b/src/ui/macroquad/game/board.rs @@ -0,0 +1,56 @@ +use macroquad::{ + color::{BLACK, RED, WHITE}, + math::vec2, + shapes::{draw_circle, draw_rectangle}, +}; + +use crate::logic::{board::board_view::BoardView, math::position::Position}; + +pub struct Board { + board_view: BoardView, +} + +impl From for Board { + fn from(value: BoardView) -> Self { + Self { board_view: value } + } +} + +impl Default for Board { + fn default() -> Self { + Self::from(BoardView::default()) + } +} + +impl Board { + pub fn draw(&self) { + let field_size = 32.0; + + for field in &self.board_view { + let pos: Position = field.position; + + let is_row_even: bool = pos.row % 2 == 0; + let is_column_even: bool = pos.column % 2 == 0; + let is_field_black: bool = is_row_even ^ is_column_even; + + let abs_x = pos.column as f32 * field_size; + let abs_y = pos.row as f32 * field_size; + + if is_field_black { + draw_rectangle(abs_x, abs_y, field_size, field_size, BLACK); + } else { + draw_rectangle(abs_x, abs_y, field_size, field_size, WHITE); + } + + if field.pawn.is_some() { + // draw something for now + draw_circle( + abs_x + field_size * 0.5, + abs_y + field_size * 0.5, + 16.0, + RED, + ); + } + } + } +} diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 83a3877..6b74d63 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -1,3 +1,5 @@ +use std::convert::identity; + use tokio::sync::mpsc::{self, Sender}; use log::{debug, error, info}; @@ -17,7 +19,10 @@ use crate::{ client::Client, message::ServerMessage, network_identity::NetworkIdentity, server::ServerStage, }, - ui::{macroquad::game::chat::Chat, state::GameContext}, + ui::{ + macroquad::game::{board::Board, chat::Chat}, + state::GameContext, + }, }; pub struct GameClient { @@ -26,7 +31,8 @@ pub struct GameClient { identity: Option, - board: BoardView, + board: Board, + is_my_turn: bool, player_name: String, enemy_name: String, // TODO! Server should give this info to us (it doesn't rn) @@ -95,7 +101,7 @@ impl GameClient { }); }); - let board = BoardView::default(); + let board = Board::default(); let game_stage = ServerStage::default(); let mut lobby = Lobby::default(); @@ -119,6 +125,8 @@ impl GameClient { board, lobby, + is_my_turn: false, + player_name: "Morbius".to_string(), enemy_name: "Milo".to_string(), @@ -180,7 +188,7 @@ impl GameClient { } fn draw_game(&self) { - todo!(); + self.board.draw(); } fn draw_summary_screen(&self) { @@ -195,7 +203,8 @@ impl GameClient { match self.game_state { ServerStage::Lobby => self.update_lobby(), - ServerStage::Game => todo!(), + ServerStage::Game => {} + ServerStage::End => todo!(), } @@ -219,18 +228,35 @@ impl GameClient { ServerMessage::GameStart { identity } => { info!("We go identity!"); self.identity = Some(identity); + self.game_state = ServerStage::Game; } ServerMessage::AvailableCaptures { captures } => todo!(), - ServerMessage::AvailableMoves { moves } => todo!(), - ServerMessage::BroadcastBoardState { board } => todo!(), - ServerMessage::BroadcastCurrentTurn { active_player } => todo!(), + ServerMessage::AvailableMoves { moves } => { + // TODO! Implement this (no todo to test drawing board!!) + } + + ServerMessage::BroadcastBoardState { board } => { + self.board = Board::from(board); + } + + ServerMessage::BroadcastCurrentTurn { active_player } => { + if let Some(identity) = &self.identity + && identity.id == active_player + { + info!("It's out turn!"); + self.is_my_turn = true; + } + } + ServerMessage::BroadCastTextMessage { sender, content } => { debug!("Got message from: {} with content: {}", sender, content); self.chat.push_message(sender, content); } - ServerMessage::GameEnd { result } => todo!(), + ServerMessage::GameEnd { result } => { + self.game_state = ServerStage::End; + } _ => {} // ignore things that network client handled by itself }, diff --git a/src/ui/macroquad/game/mod.rs b/src/ui/macroquad/game/mod.rs index 34a8b29..661b9ac 100644 --- a/src/ui/macroquad/game/mod.rs +++ b/src/ui/macroquad/game/mod.rs @@ -1,2 +1,3 @@ mod chat; +mod board; pub mod game; diff --git a/src/ui/state.rs b/src/ui/state.rs index 9dade60..7a5d9c1 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -29,13 +29,23 @@ pub enum GameMode { }, } -#[derive(Default, Clone)] +#[derive(Clone)] pub struct GameContext { pub difficulty: BotDificulty, pub gamemode: GameMode, pub server_url_buffer: String, } +impl Default for GameContext { + fn default() -> Self { + Self { + difficulty: BotDificulty::default(), + gamemode: GameMode::default(), + server_url_buffer: "127.0.0.1".to_string(), + } + } +} + // TODO! Move this pub fn connect_to_server() -> Receiver> { let (tx, rc) = mpsc::channel::>(); From 0663a2513181239aea88ee90512b3f0f02f665ad Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 23 Aug 2026 12:31:58 +0200 Subject: [PATCH 23/48] feat: add highlithing fields --- src/ui/macroquad/game/board.rs | 82 +++++++++++++++++++++++++++++----- src/ui/macroquad/game/game.rs | 10 +++-- 2 files changed, 78 insertions(+), 14 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 17318d7..1d4b1ea 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -1,29 +1,63 @@ use macroquad::{ - color::{BLACK, RED, WHITE}, - math::vec2, - shapes::{draw_circle, draw_rectangle}, + color::{BLACK, GREEN, RED, WHITE}, + input::{is_mouse_button_pressed, mouse_position}, + math::{Rect, vec2}, + miniquad::window::high_dpi, + shapes::{draw_circle, draw_rectangle, draw_rectangle_ex}, }; +use uuid::Uuid; -use crate::logic::{board::board_view::BoardView, math::position::Position}; +use crate::logic::{ + board::{ + board_view::BoardView, + pawn::{CapturePath, MovePath}, + }, + math::position::Position, +}; pub struct Board { board_view: BoardView, -} -impl From for Board { - fn from(value: BoardView) -> Self { - Self { board_view: value } - } + my_id: Uuid, + current_highlight: Option, + + available_captures: Option>, + available_moves: Option>, } impl Default for Board { fn default() -> Self { - Self::from(BoardView::default()) + Self::new(Uuid::default()) } } impl Board { - pub fn draw(&self) { + pub fn new(player_id: Uuid) -> Self { + Self { + board_view: BoardView::default(), + my_id: player_id, + current_highlight: None, + + available_captures: None, + available_moves: None, + } + } + + pub fn update_board_view(&mut self, board_view: BoardView) { + self.board_view = board_view; + } + + pub fn update_available_captures(&mut self, captures: Vec) { + self.available_captures = Some(captures); + self.available_moves = None; + } + + pub fn update_available_moves(&mut self, moves: Vec) { + self.available_moves = Some(moves); + self.available_captures = None; + } + + pub fn draw(&mut self) { let field_size = 32.0; for field in &self.board_view { @@ -36,12 +70,30 @@ impl Board { let abs_x = pos.column as f32 * field_size; let abs_y = pos.row as f32 * field_size; + let (mouse_pos_x, mouse_pos_y) = mouse_position(); + + if abs_x < mouse_pos_x + && mouse_pos_x <= abs_x + field_size + && abs_y < mouse_pos_y + && mouse_pos_y <= abs_y + field_size + && is_mouse_button_pressed(macroquad::input::MouseButton::Left) + { + self.current_highlight = Some(pos); + } + if is_field_black { draw_rectangle(abs_x, abs_y, field_size, field_size, BLACK); } else { draw_rectangle(abs_x, abs_y, field_size, field_size, WHITE); } + if let Some(hihglith) = self.current_highlight { + let x = hihglith.column as f32 * field_size; + let y = hihglith.row as f32 * field_size; + + draw_rectangle(x, y, field_size, field_size, GREEN); + } + if field.pawn.is_some() { // draw something for now draw_circle( @@ -53,4 +105,12 @@ impl Board { } } } + + /* + pub fn update_current_highlight(&mut self) { + let (mut mouse_pos_x, mut mouse_pos_y) = mouse_position(); + mouse_pos_x /= self.board_view.size as f32; + mouse_pos_y /= self.board_view.size as f32; + } + */ } diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 6b74d63..e3c45ae 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -187,7 +187,7 @@ impl GameClient { } } - fn draw_game(&self) { + fn draw_game(&mut self) { self.board.draw(); } @@ -231,13 +231,17 @@ impl GameClient { self.game_state = ServerStage::Game; } - ServerMessage::AvailableCaptures { captures } => todo!(), + ServerMessage::AvailableCaptures { captures } => { + self.board.update_available_captures(captures); + } + ServerMessage::AvailableMoves { moves } => { // TODO! Implement this (no todo to test drawing board!!) + self.board.update_available_moves(moves); } ServerMessage::BroadcastBoardState { board } => { - self.board = Board::from(board); + self.board.update_board_view(board); } ServerMessage::BroadcastCurrentTurn { active_player } => { From 337eec8e09034eca066005bca0c208d6d1563fa4 Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 23 Aug 2026 15:15:41 +0200 Subject: [PATCH 24/48] refactor: add GuiField; split drawing and updating --- src/logic/board/mod.rs | 2 +- src/ui/macroquad/game/board.rs | 94 ++++++++++++++++++++++------------ src/ui/macroquad/game/game.rs | 4 +- 3 files changed, 66 insertions(+), 34 deletions(-) diff --git a/src/logic/board/mod.rs b/src/logic/board/mod.rs index 81d9a95..85d5161 100644 --- a/src/logic/board/mod.rs +++ b/src/logic/board/mod.rs @@ -1,4 +1,4 @@ pub mod board; pub mod board_view; -mod field; +pub mod field; pub mod pawn; diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 1d4b1ea..5127525 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -1,22 +1,31 @@ use macroquad::{ - color::{BLACK, GREEN, RED, WHITE}, + color::{BLACK, Color, GREEN, RED, WHITE}, input::{is_mouse_button_pressed, mouse_position}, - math::{Rect, vec2}, + math::{Circle, Rect, vec2}, miniquad::window::high_dpi, - shapes::{draw_circle, draw_rectangle, draw_rectangle_ex}, + shapes::{draw_circle, draw_circle_lines, draw_rectangle, draw_rectangle_ex}, }; use uuid::Uuid; use crate::logic::{ board::{ board_view::BoardView, + field::Field, pawn::{CapturePath, MovePath}, }, math::position::Position, }; +struct GuiField { + rect: Rect, + field: Field, + is_clickable: bool, + color: Color, +} + pub struct Board { board_view: BoardView, + fields: Vec, my_id: Uuid, current_highlight: Option, @@ -35,6 +44,8 @@ impl Board { pub fn new(player_id: Uuid) -> Self { Self { board_view: BoardView::default(), + fields: vec![], + my_id: player_id, current_highlight: None, @@ -57,7 +68,9 @@ impl Board { self.available_captures = None; } - pub fn draw(&mut self) { + pub fn update_state(&mut self) { + self.fields.clear(); + let field_size = 32.0; for field in &self.board_view { @@ -70,42 +83,59 @@ impl Board { let abs_x = pos.column as f32 * field_size; let abs_y = pos.row as f32 * field_size; - let (mouse_pos_x, mouse_pos_y) = mouse_position(); + let rect = Rect { + x: abs_x, + y: abs_y, + w: field_size, + h: field_size, + }; - if abs_x < mouse_pos_x - && mouse_pos_x <= abs_x + field_size - && abs_y < mouse_pos_y - && mouse_pos_y <= abs_y + field_size - && is_mouse_button_pressed(macroquad::input::MouseButton::Left) - { - self.current_highlight = Some(pos); - } + self.fields.push(GuiField { + rect, + field: field.clone(), + is_clickable: false, + color: if is_field_black { BLACK } else { WHITE }, + }); + } + } - if is_field_black { - draw_rectangle(abs_x, abs_y, field_size, field_size, BLACK); - } else { - draw_rectangle(abs_x, abs_y, field_size, field_size, WHITE); - } + pub fn draw(&self) { + for field in &self.fields { + draw_rectangle( + field.rect.x, + field.rect.y, + field.rect.w, + field.rect.h, + field.color, + ); - if let Some(hihglith) = self.current_highlight { - let x = hihglith.column as f32 * field_size; - let y = hihglith.row as f32 * field_size; - - draw_rectangle(x, y, field_size, field_size, GREEN); - } - - if field.pawn.is_some() { - // draw something for now - draw_circle( - abs_x + field_size * 0.5, - abs_y + field_size * 0.5, - 16.0, - RED, + if field.is_clickable { + draw_rectangle( + field.rect.x, + field.rect.y, + field.rect.w, + field.rect.h, + GREEN, ); } + + if let Some(pawn) = &field.field.pawn { + let color = if pawn.owner == self.my_id { WHITE } else { RED }; // TODO! This should + // be customizable + + let center = field.rect.center(); + + let r = field.rect.w * 0.5; + let thickness = 0.5; + + draw_circle(center.x, center.y, r, color); + draw_circle_lines(center.x, center.y, r, thickness, BLACK); + } } } + fn highligt_current_moves(&mut self) {} + /* pub fn update_current_highlight(&mut self) { let (mut mouse_pos_x, mut mouse_pos_y) = mouse_position(); diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index e3c45ae..897ec3a 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -227,7 +227,8 @@ impl GameClient { Ok(msg) => match msg { ServerMessage::GameStart { identity } => { info!("We go identity!"); - self.identity = Some(identity); + self.identity = Some(identity.clone()); + self.board = Board::new(identity.id); self.game_state = ServerStage::Game; } @@ -242,6 +243,7 @@ impl GameClient { ServerMessage::BroadcastBoardState { board } => { self.board.update_board_view(board); + self.board.update_state(); } ServerMessage::BroadcastCurrentTurn { active_player } => { From 90d3a3fc4c42df82cb095eaafc0d15359065ab92 Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 23 Aug 2026 21:24:53 +0200 Subject: [PATCH 25/48] feat: center board --- src/ui/macroquad/game/board.rs | 27 ++++++++++++++++++++------- src/ui/macroquad/game/game.rs | 23 ++++++++++++++++++++++- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 5127525..69864e6 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -19,16 +19,18 @@ use crate::logic::{ struct GuiField { rect: Rect, field: Field, + pos: Position, is_clickable: bool, color: Color, } pub struct Board { + rect: Rect, + board_view: BoardView, fields: Vec, my_id: Uuid, - current_highlight: Option, available_captures: Option>, available_moves: Option>, @@ -36,18 +38,19 @@ pub struct Board { impl Default for Board { fn default() -> Self { - Self::new(Uuid::default()) + Self::new(Rect::default(), Uuid::default()) } } impl Board { - pub fn new(player_id: Uuid) -> Self { + pub fn new(rect: Rect, player_id: Uuid) -> Self { Self { + rect, + board_view: BoardView::default(), fields: vec![], my_id: player_id, - current_highlight: None, available_captures: None, available_moves: None, @@ -68,10 +71,19 @@ impl Board { self.available_captures = None; } + pub fn update_board_rect(&mut self, rect: Rect) -> bool { + if self.rect != rect { + self.rect = rect; + return true; + } + + false + } + pub fn update_state(&mut self) { self.fields.clear(); - let field_size = 32.0; + let field_size = self.rect.w / self.board_view.size as f32; for field in &self.board_view { let pos: Position = field.position; @@ -80,8 +92,8 @@ impl Board { let is_column_even: bool = pos.column % 2 == 0; let is_field_black: bool = is_row_even ^ is_column_even; - let abs_x = pos.column as f32 * field_size; - let abs_y = pos.row as f32 * field_size; + let abs_x = self.rect.x + pos.column as f32 * field_size; + let abs_y = self.rect.y + pos.row as f32 * field_size; let rect = Rect { x: abs_x, @@ -94,6 +106,7 @@ impl Board { rect, field: field.clone(), is_clickable: false, + pos, color: if is_field_black { BLACK } else { WHITE }, }); } diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 897ec3a..7bfd596 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -39,6 +39,8 @@ pub struct GameClient { game_state: ServerStage, game_area: Rect, + board_area: Rect, + game_padding: f32, lobby: Lobby, @@ -115,6 +117,8 @@ impl GameClient { }; let game_padding = 25.0; + let board_area = Rect::default(); + let chat = Chat::default(); Some(Self { @@ -133,6 +137,8 @@ impl GameClient { game_state: game_stage, game_area, + board_area, + game_padding, chat, @@ -228,7 +234,7 @@ impl GameClient { ServerMessage::GameStart { identity } => { info!("We go identity!"); self.identity = Some(identity.clone()); - self.board = Board::new(identity.id); + self.board = Board::new(self.board_area, identity.id); self.game_state = ServerStage::Game; } @@ -291,5 +297,20 @@ impl GameClient { }; self.chat.update(&self.game_area); + + let w = self.game_area.w * 0.75; + let h = self.game_area.h * 0.75; + let side = w.min(h); + + self.board_area = Rect { + x: self.game_area.w / 2.0 - (side / 2.0), + y: self.game_area.h / 2.0 - (side / 2.0), + w: side, + h: side, + }; + + if self.board.update_board_rect(self.board_area) { + self.board.update_state(); + } } } From dacfc27636c71a15d4c232789744904d9468e3a0 Mon Sep 17 00:00:00 2001 From: szymon Date: Mon, 24 Aug 2026 18:12:39 +0200 Subject: [PATCH 26/48] feat: add highlithing fields with possible moves --- src/logic/board/field.rs | 2 +- src/logic/math/position.rs | 2 +- src/ui/macroquad/game/board.rs | 81 +++++++++++++++++++++++++++++----- 3 files changed, 73 insertions(+), 12 deletions(-) diff --git a/src/logic/board/field.rs b/src/logic/board/field.rs index 7ee3a18..f95e00b 100644 --- a/src/logic/board/field.rs +++ b/src/logic/board/field.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; use crate::logic::{board::pawn::Pawn, math::position::Position}; -#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone)] +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Default)] pub struct Field { pub position: Position, pub pawn: Option, diff --git a/src/logic/math/position.rs b/src/logic/math/position.rs index dbb7199..a5a904a 100644 --- a/src/logic/math/position.rs +++ b/src/logic/math/position.rs @@ -6,7 +6,7 @@ use serde::{Deserialize, Serialize}; use crate::logic::math::vector::Vector2D; -#[derive(Clone, Copy, PartialEq, Eq, Debug, Serialize, Deserialize)] +#[derive(Clone, Copy, PartialEq, Eq, Debug, Serialize, Deserialize, Default)] /// Position on the board. Consists of row and column. Should be treated like a point in space on /// unsigned grid. /// diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 69864e6..7e1cfb1 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -1,5 +1,7 @@ +use std::ops::{Index, IndexMut}; + use macroquad::{ - color::{BLACK, Color, GREEN, RED, WHITE}, + color::{BLACK, Color, GREEN, ORANGE, RED, WHITE}, input::{is_mouse_button_pressed, mouse_position}, math::{Circle, Rect, vec2}, miniquad::window::high_dpi, @@ -16,6 +18,10 @@ use crate::logic::{ math::position::Position, }; +const MOVE_HIGHLITGHT_COLOR: Color = GREEN; +const CAPTURE_HIGHLITGHT_COLOR: Color = ORANGE; + +#[derive(Default)] struct GuiField { rect: Rect, field: Field, @@ -24,11 +30,59 @@ struct GuiField { color: Color, } +#[derive(Default)] +struct GuiFieldVec { + gui_fields: Vec, +} + +impl GuiFieldVec { + pub fn push(&mut self, input: GuiField) { + self.gui_fields.push(input); + } + + pub fn clear(&mut self) { + self.gui_fields.clear(); + } + + pub fn size(&self) -> usize { + self.gui_fields.len() + } +} + +impl<'a> IntoIterator for &'a GuiFieldVec { + type Item = &'a GuiField; + type IntoIter = std::slice::Iter<'a, GuiField>; + + fn into_iter(self) -> Self::IntoIter { + self.gui_fields.iter() + } +} + +impl Index for GuiFieldVec { + type Output = GuiField; + + fn index(&self, index: Position) -> &Self::Output { + self.gui_fields + .iter() + .find(|field| field.pos == index) + .unwrap() + } +} + +impl IndexMut for GuiFieldVec { + fn index_mut(&mut self, index: Position) -> &mut Self::Output { + self.gui_fields + .iter_mut() + .find(|field| field.pos == index) + .unwrap() + } +} + pub struct Board { rect: Rect, board_view: BoardView, - fields: Vec, + fields: GuiFieldVec, my_id: Uuid, @@ -48,7 +102,7 @@ impl Board { rect, board_view: BoardView::default(), - fields: vec![], + fields: GuiFieldVec::default(), my_id: player_id, @@ -69,6 +123,7 @@ impl Board { pub fn update_available_moves(&mut self, moves: Vec) { self.available_moves = Some(moves); self.available_captures = None; + self.highlight_current_moves(); } pub fn update_board_rect(&mut self, rect: Rect) -> bool { @@ -147,13 +202,19 @@ impl Board { } } - fn highligt_current_moves(&mut self) {} + fn highlight_current_moves(&mut self) { + let mut from: Vec = vec![]; - /* - pub fn update_current_highlight(&mut self) { - let (mut mouse_pos_x, mut mouse_pos_y) = mouse_position(); - mouse_pos_x /= self.board_view.size as f32; - mouse_pos_y /= self.board_view.size as f32; + let Some(available_moves) = &self.available_moves else { + return; + }; + + for available_move in available_moves { + from.push(available_move.from); + } + + for pos in from { + self.fields[pos].color = MOVE_HIGHLITGHT_COLOR; + } } - */ } From 7f92435f89b6b09f675d8641dcccd2895c52912b Mon Sep 17 00:00:00 2001 From: szymon Date: Mon, 24 Aug 2026 18:22:47 +0200 Subject: [PATCH 27/48] feat: add getting clicked field --- src/ui/macroquad/game/board.rs | 21 +++++++++++++++++++++ src/ui/macroquad/game/game.rs | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 7e1cfb1..f65e51f 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -1,5 +1,6 @@ use std::ops::{Index, IndexMut}; +use log::info; use macroquad::{ color::{BLACK, Color, GREEN, ORANGE, RED, WHITE}, input::{is_mouse_button_pressed, mouse_position}, @@ -111,6 +112,12 @@ impl Board { } } + pub fn update(&mut self) { + if let Some(clicked_field) = self.get_clicked_field() { + info!("Field: {} was clicked!", clicked_field.pos); + } + } + pub fn update_board_view(&mut self, board_view: BoardView) { self.board_view = board_view; } @@ -202,6 +209,20 @@ impl Board { } } + fn get_clicked_field(&self) -> Option<&GuiField> { + let (mouse_x, mouse_y) = mouse_position(); + let mouse_point = vec2(mouse_x, mouse_y); + + if is_mouse_button_pressed(macroquad::input::MouseButton::Left) { + for field in &self.fields { + if field.rect.contains(mouse_point) { + return Some(field); + } + } + } + None + } + fn highlight_current_moves(&mut self) { let mut from: Vec = vec![]; diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 7bfd596..10d152a 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -209,7 +209,10 @@ impl GameClient { match self.game_state { ServerStage::Lobby => self.update_lobby(), - ServerStage::Game => {} + + ServerStage::Game => { + self.board.update(); + } ServerStage::End => todo!(), } From ba7100083e511f56992f9cdead7c7c706536519e Mon Sep 17 00:00:00 2001 From: szymon Date: Mon, 24 Aug 2026 19:04:52 +0200 Subject: [PATCH 28/48] feat: add connecting to singleplayer --- src/ui/macroquad/difficulty_selection.rs | 43 +++++++++++++++++++----- src/ui/state.rs | 27 ++++++++++++++- 2 files changed, 60 insertions(+), 10 deletions(-) diff --git a/src/ui/macroquad/difficulty_selection.rs b/src/ui/macroquad/difficulty_selection.rs index 5107df1..9fa91fe 100644 --- a/src/ui/macroquad/difficulty_selection.rs +++ b/src/ui/macroquad/difficulty_selection.rs @@ -1,3 +1,5 @@ +use std::sync::mpsc; + use macroquad::{ color::GRAY, math::vec2, @@ -6,12 +8,18 @@ use macroquad::{ window::{next_frame, screen_height, screen_width}, }; -use crate::ui::{ - macroquad::menu_builder::MenuBuilder, - state::{ - GameContext, - GuiState::{self}, - connect_to_server, +use crate::{ + settings::{ + client_settings::ClientSettings, + general_settings::{DEFAULT_URL, SettingsLike}, + }, + ui::{ + macroquad::menu_builder::MenuBuilder, + state::{ + GameContext, + GuiState::{self}, + connect_bot, connect_to_server, run_server, + }, }, }; @@ -35,17 +43,17 @@ pub async fn draw_dificulty_selection(state: &mut GuiState, context: &mut GameCo if menu_builder.button(ui, "Easy") { context.difficulty = crate::super_advanced_ai::BotDificulty::Easy; - *state = GuiState::Connecting(connect_to_server()); + start_single(state, context); } if menu_builder.button(ui, "Medium") { context.difficulty = crate::super_advanced_ai::BotDificulty::Normal; - *state = GuiState::Connecting(connect_to_server()); + start_single(state, context); } if menu_builder.button(ui, "Hard") { context.difficulty = crate::super_advanced_ai::BotDificulty::Hard; - *state = GuiState::Connecting(connect_to_server()); + start_single(state, context); } if menu_builder.button(ui, "Go back") { @@ -53,3 +61,20 @@ pub async fn draw_dificulty_selection(state: &mut GuiState, context: &mut GameCo } }); } + +fn start_single(state: &mut GuiState, context: &GameContext) { + let mut client_settings = ClientSettings::new(); + client_settings.server_url = DEFAULT_URL; // we overwrite server_url since we connect locally + + let (tx, rx) = mpsc::channel(); + + run_server(tx); + + let result = rx.recv(); + + if let Ok(result) = result { + connect_bot(context.difficulty); + } + + *state = GuiState::Connecting(connect_to_server()); +} diff --git a/src/ui/state.rs b/src/ui/state.rs index 7a5d9c1..49184bc 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -1,7 +1,9 @@ use std::sync::mpsc::{self, Receiver, Sender}; use crate::{ - network::client::Client, super_advanced_ai::BotDificulty, ui::macroquad::game::game::GameClient, + network::{client::Client, server::Server}, + super_advanced_ai::{Bot, BotDificulty}, + ui::macroquad::game::game::GameClient, }; #[derive(Default)] @@ -62,3 +64,26 @@ pub fn connect_to_server() -> Receiver> { rc } + +pub fn run_server(sender: Sender<()>) { + std::thread::spawn(move || { + let rt = tokio::runtime::Runtime::new().unwrap(); + + let mut server = rt.block_on(Server::new()); + let _ = rt.block_on(server.start()); + + let _ = sender.send(()); + + rt.block_on(server.update()); + }); +} + +pub fn connect_bot(dificluty: BotDificulty) { + std::thread::spawn(move || { + let rt = tokio::runtime::Runtime::new().unwrap(); + + let bot = rt.block_on(Bot::new(dificluty)); + + rt.block_on(bot.game_loop()); + }); +} From 94028a05fd7ed80953ced9db80ecbc2a163315a0 Mon Sep 17 00:00:00 2001 From: szymon Date: Mon, 24 Aug 2026 19:08:28 +0200 Subject: [PATCH 29/48] feat: add selfhosting for multiplayer --- src/ui/macroquad/server_selection.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ui/macroquad/server_selection.rs b/src/ui/macroquad/server_selection.rs index c7e8491..a80eb35 100644 --- a/src/ui/macroquad/server_selection.rs +++ b/src/ui/macroquad/server_selection.rs @@ -1,3 +1,5 @@ +use std::sync::mpsc; + use macroquad::{ color::GRAY, math::vec2, @@ -11,7 +13,7 @@ use crate::ui::{ state::{ GameContext, GuiState::{self}, - connect_to_server, + connect_to_server, run_server, }, }; @@ -32,6 +34,15 @@ pub async fn draw_server_selection(state: &mut GuiState, context: &mut GameConte menu_builder.label(ui, "Host"); if menu_builder.button(ui, "Start") { context.gamemode = crate::ui::state::GameMode::Multiplayer { is_hosting: true }; + + let (tx, rx) = mpsc::channel(); + run_server(tx); + + let result = rx.recv(); + + if let Ok(result) = result { + *state = GuiState::Connecting(connect_to_server()); + } } menu_builder.label(ui, "Server selection"); From 0ceaf21ad6d8c9607381f56b2bf23e88babca18c Mon Sep 17 00:00:00 2001 From: szymon Date: Mon, 24 Aug 2026 19:17:30 +0200 Subject: [PATCH 30/48] fix: highlight destroyed on dimension reshape --- src/ui/macroquad/game/board.rs | 4 +++- src/ui/macroquad/game/game.rs | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index f65e51f..2f345f7 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -142,7 +142,7 @@ impl Board { false } - pub fn update_state(&mut self) { + pub fn update_dimensions(&mut self) { self.fields.clear(); let field_size = self.rect.w / self.board_view.size as f32; @@ -172,6 +172,8 @@ impl Board { color: if is_field_black { BLACK } else { WHITE }, }); } + + self.highlight_current_moves(); // we rehighlithg as changing dimensions will destroy this } pub fn draw(&self) { diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 10d152a..c20c36d 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -252,7 +252,7 @@ impl GameClient { ServerMessage::BroadcastBoardState { board } => { self.board.update_board_view(board); - self.board.update_state(); + self.board.update_dimensions(); } ServerMessage::BroadcastCurrentTurn { active_player } => { @@ -313,7 +313,7 @@ impl GameClient { }; if self.board.update_board_rect(self.board_area) { - self.board.update_state(); + self.board.update_dimensions(); } } } From e45896f3d584be2552dad03fccfd0c917dc33072 Mon Sep 17 00:00:00 2001 From: szymon Date: Mon, 24 Aug 2026 19:39:29 +0200 Subject: [PATCH 31/48] feat: highlight next move --- src/ui/macroquad/game/board.rs | 52 +++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 2f345f7..7fe0e25 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -79,12 +79,22 @@ impl IndexMut for GuiFieldVec { } } +#[derive(Default)] +enum BoardState { + #[default] + View, + ChoosePawn, + ChooseMove(Position), +} + pub struct Board { rect: Rect, board_view: BoardView, fields: GuiFieldVec, + state: BoardState, + my_id: Uuid, available_captures: Option>, @@ -105,6 +115,8 @@ impl Board { board_view: BoardView::default(), fields: GuiFieldVec::default(), + state: BoardState::default(), + my_id: player_id, available_captures: None, @@ -113,8 +125,21 @@ impl Board { } pub fn update(&mut self) { - if let Some(clicked_field) = self.get_clicked_field() { - info!("Field: {} was clicked!", clicked_field.pos); + let clicked_field = self.get_clicked_field(); + + match self.state { + BoardState::View => {} + + BoardState::ChoosePawn => { + if let Some(clicked_field) = clicked_field { + self.state = BoardState::ChooseMove(clicked_field.pos); + } + self.highlight_current_moves(); + } + + BoardState::ChooseMove(from) => { + self.highlight_move_paths(from); + } } } @@ -128,9 +153,10 @@ impl Board { } pub fn update_available_moves(&mut self, moves: Vec) { + self.state = BoardState::ChoosePawn; + self.available_moves = Some(moves); self.available_captures = None; - self.highlight_current_moves(); } pub fn update_board_rect(&mut self, rect: Rect) -> bool { @@ -172,8 +198,6 @@ impl Board { color: if is_field_black { BLACK } else { WHITE }, }); } - - self.highlight_current_moves(); // we rehighlithg as changing dimensions will destroy this } pub fn draw(&self) { @@ -226,12 +250,12 @@ impl Board { } fn highlight_current_moves(&mut self) { - let mut from: Vec = vec![]; - let Some(available_moves) = &self.available_moves else { return; }; + let mut from: Vec = vec![]; + for available_move in available_moves { from.push(available_move.from); } @@ -240,4 +264,18 @@ impl Board { self.fields[pos].color = MOVE_HIGHLITGHT_COLOR; } } + + fn highlight_move_paths(&mut self, from: Position) { + let Some(available_moves) = &self.available_moves else { + return; + }; + + for available_move in available_moves { + if available_move.from == from { + for step in &available_move.available_steps { + self.fields[*step].color = MOVE_HIGHLITGHT_COLOR; + } + } + } + } } From b65f7e0e67dafd868444d1d18dbbbfe92807c405 Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 30 Aug 2026 13:03:42 +0200 Subject: [PATCH 32/48] refactor: split update_dimensions into repopulate and update_dimensions --- src/ui/macroquad/game/board.rs | 64 ++++++++++++++++++++++++++++++---- src/ui/macroquad/game/game.rs | 2 +- 2 files changed, 58 insertions(+), 8 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 7fe0e25..b2cc2ff 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -1,4 +1,7 @@ -use std::ops::{Index, IndexMut}; +use std::{ + ops::{Index, IndexMut}, + slice::IterMut, +}; use log::info; use macroquad::{ @@ -29,6 +32,7 @@ struct GuiField { pos: Position, is_clickable: bool, color: Color, + is_blac: bool, } #[derive(Default)] @@ -59,6 +63,15 @@ impl<'a> IntoIterator for &'a GuiFieldVec { } } +impl<'a> IntoIterator for &'a mut GuiFieldVec { + type Item = &'a mut GuiField; + type IntoIter = IterMut<'a, GuiField>; + + fn into_iter(self) -> Self::IntoIter { + self.gui_fields.iter_mut() + } +} + impl Index for GuiFieldVec { type Output = GuiField; @@ -85,6 +98,7 @@ enum BoardState { View, ChoosePawn, ChooseMove(Position), + ChooseCapture(Position), } pub struct Board { @@ -99,6 +113,8 @@ pub struct Board { available_captures: Option>, available_moves: Option>, + + field_size: f32, } impl Default for Board { @@ -121,10 +137,15 @@ impl Board { available_captures: None, available_moves: None, + + field_size: 32.0, } } pub fn update(&mut self) { + self.update_dimensions(); + self.reset_color(); + let clicked_field = self.get_clicked_field(); match self.state { @@ -140,6 +161,8 @@ impl Board { BoardState::ChooseMove(from) => { self.highlight_move_paths(from); } + + BoardState::ChooseCapture(from) => {} } } @@ -168,10 +191,11 @@ impl Board { false } - pub fn update_dimensions(&mut self) { + /// Recreate fields vec with new dimensions. Should be used when new board_view arrives + pub fn repopulate(&mut self) { self.fields.clear(); - let field_size = self.rect.w / self.board_view.size as f32; + self.field_size = self.rect.w / self.board_view.size as f32; for field in &self.board_view { let pos: Position = field.position; @@ -180,14 +204,14 @@ impl Board { let is_column_even: bool = pos.column % 2 == 0; let is_field_black: bool = is_row_even ^ is_column_even; - let abs_x = self.rect.x + pos.column as f32 * field_size; - let abs_y = self.rect.y + pos.row as f32 * field_size; + let abs_x = self.rect.x + pos.column as f32 * self.field_size; + let abs_y = self.rect.y + pos.row as f32 * self.field_size; let rect = Rect { x: abs_x, y: abs_y, - w: field_size, - h: field_size, + w: self.field_size, + h: self.field_size, }; self.fields.push(GuiField { @@ -196,10 +220,36 @@ impl Board { is_clickable: false, pos, color: if is_field_black { BLACK } else { WHITE }, + is_blac: is_field_black, }); } } + /// Updates dimensions of graphical squares + pub fn update_dimensions(&mut self) { + for field in &mut self.fields { + let pos: Position = field.pos; + + let abs_x = self.rect.x + pos.column as f32 * self.field_size; + let abs_y = self.rect.y + pos.row as f32 * self.field_size; + + let new_rect = Rect { + x: abs_x, + y: abs_y, + w: self.field_size, + h: self.field_size, + }; + + field.rect = new_rect; + } + } + + fn reset_color(&mut self) { + for field in &mut self.fields { + field.color = if field.is_blac { BLACK } else { WHITE }; + } + } + pub fn draw(&self) { for field in &self.fields { draw_rectangle( diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index c20c36d..a49f75d 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -252,7 +252,7 @@ impl GameClient { ServerMessage::BroadcastBoardState { board } => { self.board.update_board_view(board); - self.board.update_dimensions(); + self.board.repopulate(); } ServerMessage::BroadcastCurrentTurn { active_player } => { From d82efdf6f78bff7a5225660bfb57a85ecfe0b2d1 Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 30 Aug 2026 13:30:59 +0200 Subject: [PATCH 33/48] feat: add resigning from move --- src/ui/macroquad/game/board.rs | 49 +++++++++++++++++++++++++++++++--- src/ui/macroquad/game/game.rs | 4 +++ 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index b2cc2ff..6b10a15 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -110,6 +110,7 @@ pub struct Board { state: BoardState, my_id: Uuid, + is_my_turn: bool, available_captures: Option>, available_moves: Option>, @@ -134,6 +135,7 @@ impl Board { state: BoardState::default(), my_id: player_id, + is_my_turn: false, available_captures: None, available_moves: None, @@ -149,20 +151,53 @@ impl Board { let clicked_field = self.get_clicked_field(); match self.state { - BoardState::View => {} + BoardState::View => { + if self.is_my_turn { + self.state = BoardState::ChoosePawn; + } + } BoardState::ChoosePawn => { if let Some(clicked_field) = clicked_field { - self.state = BoardState::ChooseMove(clicked_field.pos); + self.delegate_move(clicked_field.pos); } + + if self.is_back_move_wanted_by_player() { + self.state = BoardState::View; + } + self.highlight_current_moves(); } BoardState::ChooseMove(from) => { + if self.is_back_move_wanted_by_player() { + self.state = BoardState::ChoosePawn; + } + self.highlight_move_paths(from); } - BoardState::ChooseCapture(from) => {} + BoardState::ChooseCapture(from) => { + if self.is_back_move_wanted_by_player() { + self.state = BoardState::ChoosePawn; + } + } + } + } + + fn delegate_move(&mut self, from: Position) { + if let Some(capture_path) = &self.available_captures + && capture_path.iter().any(|path| path.from == from) + { + self.state = BoardState::ChooseCapture(from); + return; + } + + if let Some(available_moves) = &self.available_moves + && available_moves.iter().any(|path| path.from == from) + { + self.state = BoardState::ChooseMove(from); + return; } } @@ -299,6 +334,14 @@ impl Board { None } + fn is_back_move_wanted_by_player(&self) -> bool { + is_mouse_button_pressed(macroquad::input::MouseButton::Right) + } + + pub fn set_my_turn(&mut self, is_my_turn: bool) { + self.is_my_turn = is_my_turn; + } + fn highlight_current_moves(&mut self) { let Some(available_moves) = &self.available_moves else { return; diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index a49f75d..fbdf77c 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -261,7 +261,11 @@ impl GameClient { { info!("It's out turn!"); self.is_my_turn = true; + } else { + self.is_my_turn = false; } + + self.board.set_my_turn(self.is_my_turn); } ServerMessage::BroadCastTextMessage { sender, content } => { From 913262276b1ca5545b55ff8147a2ae9ae36003d7 Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 30 Aug 2026 13:34:51 +0200 Subject: [PATCH 34/48] fix: board not scaling --- src/ui/macroquad/game/board.rs | 2 +- src/ui/macroquad/game/game.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 6b10a15..c790ec8 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -3,7 +3,7 @@ use std::{ slice::IterMut, }; -use log::info; +use log::{debug, info}; use macroquad::{ color::{BLACK, Color, GREEN, ORANGE, RED, WHITE}, input::{is_mouse_button_pressed, mouse_position}, diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index fbdf77c..8d6efe2 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -317,7 +317,7 @@ impl GameClient { }; if self.board.update_board_rect(self.board_area) { - self.board.update_dimensions(); + self.board.repopulate(); } } } From 5326f787ade3a6063a99a03de150d59907a1529b Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 30 Aug 2026 13:56:31 +0200 Subject: [PATCH 35/48] feat: add moving pawn --- src/ui/macroquad/game/board.rs | 28 ++++++++++++++++++++++++++++ src/ui/macroquad/game/game.rs | 26 +++++++++++++++++++++----- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index c790ec8..94bb279 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -113,7 +113,10 @@ pub struct Board { is_my_turn: bool, available_captures: Option>, + choosen_capture: Option, + available_moves: Option>, + choosen_move: Option, field_size: f32, } @@ -138,7 +141,10 @@ impl Board { is_my_turn: false, available_captures: None, + choosen_capture: None, + available_moves: None, + choosen_move: None, field_size: 32.0, } @@ -175,6 +181,20 @@ impl Board { } self.highlight_move_paths(from); + + if let Some(field) = &self.get_clicked_field() { + if let Some(available_moves) = &self.available_moves { + if available_moves.iter().any(|available_move| { + available_move.from == from + && available_move.available_steps.contains(&field.pos) + }) { + self.choosen_move = Some(MovePath { + from, + available_steps: vec![field.pos], + }); + } + } + } } BoardState::ChooseCapture(from) => { @@ -201,6 +221,14 @@ impl Board { } } + pub fn get_choosen_capture(&mut self) -> Option { + self.choosen_capture.take() + } + + pub fn get_choosen_move(&mut self) -> Option { + self.choosen_move.take() + } + pub fn update_board_view(&mut self, board_view: BoardView) { self.board_view = board_view; } diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 8d6efe2..c001490 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -14,7 +14,10 @@ use macroquad::{ use tokio::sync::mpsc::{Receiver, error::TryRecvError::Disconnected}; use crate::{ - logic::board::board_view::BoardView, + logic::board::{ + board_view::BoardView, + pawn::{CapturePath, MovePath}, + }, network::{ client::Client, message::ServerMessage, network_identity::NetworkIdentity, server::ServerStage, @@ -60,8 +63,8 @@ pub enum GuiCommands { Ready, Unready, - Capture, - Move, + Capture(CapturePath), + Move(MovePath), } impl GameClient { @@ -90,8 +93,13 @@ impl GameClient { GuiCommands::Unready => { client.revoke_readiness().await; } - GuiCommands::Capture => todo!(), - GuiCommands::Move => todo!(), + GuiCommands::Capture(capture_path) => todo!(), + + GuiCommands::Move(move_path) => { + client + .send_move(move_path.from, move_path.available_steps[0]) + .await; // ugly + } }, None => { @@ -229,6 +237,14 @@ impl GameClient { _ => {} } } + + if let Some(capture_path) = self.board.get_choosen_capture() { + let _ = self.cmd_sender.try_send(GuiCommands::Capture(capture_path)); + } + + if let Some(move_path) = self.board.get_choosen_move() { + let _ = self.cmd_sender.try_send(GuiCommands::Move(move_path)); + } } fn update_network(&mut self) { From 15b9f3675a64230aa9e39a8dbbf5c9c10a5b12c2 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 2 Sep 2026 13:43:24 +0200 Subject: [PATCH 36/48] fix: update_dimension not updating dimensions --- src/ui/macroquad/game/board.rs | 2 ++ src/ui/macroquad/game/game.rs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 94bb279..c1a5af0 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -290,6 +290,8 @@ impl Board { /// Updates dimensions of graphical squares pub fn update_dimensions(&mut self) { + self.field_size = self.rect.w / self.board_view.size as f32; + for field in &mut self.fields { let pos: Position = field.pos; diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index c001490..219d2b2 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -333,7 +333,7 @@ impl GameClient { }; if self.board.update_board_rect(self.board_area) { - self.board.repopulate(); + self.board.update_dimensions(); } } } From cff133fa61cf64c0c1edd0995d7df4d2d511eafe Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 2 Sep 2026 17:30:29 +0200 Subject: [PATCH 37/48] feat: add capturing --- src/ui/macroquad/game/board.rs | 66 ++++++++++++++++++++++++++++++++++ src/ui/macroquad/game/game.rs | 5 +-- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index c1a5af0..9c3161e 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -113,6 +113,8 @@ pub struct Board { is_my_turn: bool, available_captures: Option>, + current_deepness: usize, + current_capture_path: Vec, choosen_capture: Option, available_moves: Option>, @@ -141,6 +143,8 @@ impl Board { is_my_turn: false, available_captures: None, + current_capture_path: vec![], + current_deepness: 0, choosen_capture: None, available_moves: None, @@ -199,8 +203,64 @@ impl Board { BoardState::ChooseCapture(from) => { if self.is_back_move_wanted_by_player() { + debug!("Going back"); + self.current_capture_path.clear(); + self.current_deepness = 0; self.state = BoardState::ChoosePawn; + return; } + + let Some(available_captures) = &self.available_captures else { + return; + }; + + let possible_moves: Vec<_> = available_captures + .iter() + .filter_map(|capture| { + if capture.from == from + && capture.steps.starts_with(&self.current_capture_path) + { + Some(&capture.steps) + } else { + None + } + }) + .collect(); + + let current_highlight: Vec<_> = possible_moves + .iter() + .filter_map(|possible_move| possible_move.get(self.current_deepness)) + .copied() + .collect(); + + if let Some(clicked_field) = &self.get_clicked_field().map(|field| field.pos) { + if possible_moves.iter().any(|possible_move| { + if let Some(valid_move) = possible_move.get(self.current_deepness) { + valid_move == clicked_field + } else { + false + } + }) { + self.current_capture_path.push(*clicked_field); + self.current_deepness += 1; + } + } + + if current_highlight.is_empty() { + debug!("Capture path complete!"); + self.choosen_capture = available_captures + .iter() + .find(|capture| { + capture.from == from && capture.steps == self.current_capture_path + }) + .cloned(); + + self.current_capture_path.clear(); + self.current_deepness = 0; + self.state = BoardState::View; + } + + self.highlight_capture_path(current_highlight); } } } @@ -372,6 +432,12 @@ impl Board { self.is_my_turn = is_my_turn; } + fn highlight_capture_path(&mut self, fields: Vec) { + for field in fields { + self.fields[field].color = CAPTURE_HIGHLITGHT_COLOR; + } + } + fn highlight_current_moves(&mut self) { let Some(available_moves) = &self.available_moves else { return; diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 219d2b2..34b566b 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -93,7 +93,9 @@ impl GameClient { GuiCommands::Unready => { client.revoke_readiness().await; } - GuiCommands::Capture(capture_path) => todo!(), + GuiCommands::Capture(capture_path) => { + client.send_capture(capture_path).await; + } GuiCommands::Move(move_path) => { client @@ -262,7 +264,6 @@ impl GameClient { } ServerMessage::AvailableMoves { moves } => { - // TODO! Implement this (no todo to test drawing board!!) self.board.update_available_moves(moves); } From bee752ab6ae27072ed0f4fc61e34e4704aa36176 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 2 Sep 2026 17:44:03 +0200 Subject: [PATCH 38/48] fix: not highligthing pawns on capture --- src/ui/macroquad/game/board.rs | 67 ++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 9c3161e..49a7d58 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -3,13 +3,12 @@ use std::{ slice::IterMut, }; -use log::{debug, info}; +use log::debug; use macroquad::{ - color::{BLACK, Color, GREEN, ORANGE, RED, WHITE}, + color::{BLACK, Color, GREEN, RED, WHITE}, input::{is_mouse_button_pressed, mouse_position}, - math::{Circle, Rect, vec2}, - miniquad::window::high_dpi, - shapes::{draw_circle, draw_circle_lines, draw_rectangle, draw_rectangle_ex}, + math::{Rect, vec2}, + shapes::{draw_circle, draw_circle_lines, draw_rectangle}, }; use uuid::Uuid; @@ -23,7 +22,7 @@ use crate::logic::{ }; const MOVE_HIGHLITGHT_COLOR: Color = GREEN; -const CAPTURE_HIGHLITGHT_COLOR: Color = ORANGE; +const CAPTURE_HIGHLITGHT_COLOR: Color = RED; #[derive(Default)] struct GuiField { @@ -92,7 +91,7 @@ impl IndexMut for GuiFieldVec { } } -#[derive(Default)] +#[derive(Default, Debug)] enum BoardState { #[default] View, @@ -160,6 +159,8 @@ impl Board { let clicked_field = self.get_clicked_field(); + debug!("Current state: {:?}", self.state); + match self.state { BoardState::View => { if self.is_my_turn { @@ -196,6 +197,7 @@ impl Board { from, available_steps: vec![field.pos], }); + self.state = BoardState::View; } } } @@ -203,10 +205,7 @@ impl Board { BoardState::ChooseCapture(from) => { if self.is_back_move_wanted_by_player() { - debug!("Going back"); - self.current_capture_path.clear(); - self.current_deepness = 0; - self.state = BoardState::ChoosePawn; + self.reset_capture(); return; } @@ -255,9 +254,7 @@ impl Board { }) .cloned(); - self.current_capture_path.clear(); - self.current_deepness = 0; - self.state = BoardState::View; + self.reset_capture(); } self.highlight_capture_path(current_highlight); @@ -265,6 +262,12 @@ impl Board { } } + fn reset_capture(&mut self) { + self.current_capture_path.clear(); + self.current_deepness = 0; + self.state = BoardState::View; + } + fn delegate_move(&mut self, from: Position) { if let Some(capture_path) = &self.available_captures && capture_path.iter().any(|path| path.from == from) @@ -432,26 +435,22 @@ impl Board { self.is_my_turn = is_my_turn; } - fn highlight_capture_path(&mut self, fields: Vec) { - for field in fields { - self.fields[field].color = CAPTURE_HIGHLITGHT_COLOR; - } - } - fn highlight_current_moves(&mut self) { - let Some(available_moves) = &self.available_moves else { + if let Some(available_captures) = &self.available_captures { + for capture_path in available_captures { + self.fields[capture_path.from].color = MOVE_HIGHLITGHT_COLOR; + } + + return; + } + + if let Some(available_moves) = &self.available_moves { + for available_move in available_moves { + self.fields[available_move.from].color = MOVE_HIGHLITGHT_COLOR; + } + return; }; - - let mut from: Vec = vec![]; - - for available_move in available_moves { - from.push(available_move.from); - } - - for pos in from { - self.fields[pos].color = MOVE_HIGHLITGHT_COLOR; - } } fn highlight_move_paths(&mut self, from: Position) { @@ -467,4 +466,10 @@ impl Board { } } } + + fn highlight_capture_path(&mut self, fields: Vec) { + for field in fields { + self.fields[field].color = CAPTURE_HIGHLITGHT_COLOR; + } + } } From 4f8e799ee9be654c9efc9213ecab300e5e7897b1 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 2 Sep 2026 17:57:07 +0200 Subject: [PATCH 39/48] feat: add yellow border to dames --- src/ui/macroquad/game/board.rs | 13 +++++++++---- src/ui/macroquad/game/game.rs | 2 -- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 49a7d58..9bbc129 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -5,7 +5,7 @@ use std::{ use log::debug; use macroquad::{ - color::{BLACK, Color, GREEN, RED, WHITE}, + color::{BLACK, Color, GREEN, RED, WHITE, YELLOW}, input::{is_mouse_button_pressed, mouse_position}, math::{Rect, vec2}, shapes::{draw_circle, draw_circle_lines, draw_rectangle}, @@ -159,8 +159,6 @@ impl Board { let clicked_field = self.get_clicked_field(); - debug!("Current state: {:?}", self.state); - match self.state { BoardState::View => { if self.is_my_turn { @@ -408,7 +406,14 @@ impl Board { let thickness = 0.5; draw_circle(center.x, center.y, r, color); - draw_circle_lines(center.x, center.y, r, thickness, BLACK); + match pawn.state { + crate::logic::board::pawn::PawnState::Man => { + draw_circle_lines(center.x, center.y, r, thickness, BLACK); + } + crate::logic::board::pawn::PawnState::Dame => { + draw_circle_lines(center.x, center.y, r, thickness, YELLOW); + } + } } } } diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 34b566b..5a2a01e 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -1,5 +1,3 @@ -use std::convert::identity; - use tokio::sync::mpsc::{self, Sender}; use log::{debug, error, info}; From 92fa5d0d86b97ca36f163d9136549c4570555327 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 14:54:28 +0200 Subject: [PATCH 40/48] 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; + } + }); +} From c90b9b6f46454dc87f8181a0f9c6967503da25ba Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 15:38:22 +0200 Subject: [PATCH 41/48] feat: add some basic settings --- src/bin/macroquad_client.rs | 29 +++++++++---- src/ui/macroquad/menu_builder.rs | 4 +- src/ui/macroquad/server_selection.rs | 2 +- src/ui/macroquad/settings.rs | 62 ++++++++++++++++++++++++++-- src/ui/state.rs | 5 ++- 5 files changed, 87 insertions(+), 15 deletions(-) diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index 91a5181..c199c43 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -1,10 +1,16 @@ -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, settings::draw_settings, +use checkers::{ + settings::{ + client_settings::ClientSettings, general_settings::SettingsLike, + server_settings::ServerSettings, + }, + 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, settings::draw_settings, + }, + state::{GameContext, GuiState}, }, - state::{GameContext, GuiState}, }; use macroquad::{ color::{BLACK, WHITE}, @@ -62,6 +68,9 @@ pub async fn main() { let mut state = Default::default(); let mut context = GameContext::default(); + let mut client_settings = ClientSettings::new(); + let mut server_settings = ServerSettings::new(); + let background = load_texture("assets/background.png").await.unwrap(); let main_menu_style = get_general_style().await; @@ -121,7 +130,13 @@ pub async fn main() { } GuiState::Settings => { - draw_settings(&mut state).await; + draw_settings( + &mut state, + &mut context, + &mut client_settings, + &mut server_settings, + ) + .await; } GuiState::Game(client) => { diff --git a/src/ui/macroquad/menu_builder.rs b/src/ui/macroquad/menu_builder.rs index fd94cf4..cf88dce 100644 --- a/src/ui/macroquad/menu_builder.rs +++ b/src/ui/macroquad/menu_builder.rs @@ -24,8 +24,8 @@ impl MenuBuilder { } } - pub fn text_input(&mut self, ui: &mut Ui, buffer: &mut String) { - InputText::new(hash!()) + pub fn text_input(&mut self, ui: &mut Ui, id: &str, buffer: &mut String) { + InputText::new(hash!(id)) .position(vec2(self.center_x, self.current_y)) .size(self.button_size) .ui(ui, buffer); diff --git a/src/ui/macroquad/server_selection.rs b/src/ui/macroquad/server_selection.rs index a80eb35..0c465a5 100644 --- a/src/ui/macroquad/server_selection.rs +++ b/src/ui/macroquad/server_selection.rs @@ -47,7 +47,7 @@ pub async fn draw_server_selection(state: &mut GuiState, context: &mut GameConte menu_builder.label(ui, "Server selection"); - menu_builder.text_input(ui, &mut context.server_url_buffer); + menu_builder.text_input(ui, "server url", &mut context.server_url_buffer); //context.normalise_url(); if menu_builder.button(ui, "Connect") { diff --git a/src/ui/macroquad/settings.rs b/src/ui/macroquad/settings.rs index 29569c9..f231515 100644 --- a/src/ui/macroquad/settings.rs +++ b/src/ui/macroquad/settings.rs @@ -1,3 +1,4 @@ +use log::error; use macroquad::{ color::GRAY, math::vec2, @@ -6,9 +7,23 @@ use macroquad::{ window::{screen_height, screen_width}, }; -use crate::ui::{macroquad::menu_builder::MenuBuilder, state::GuiState}; +use crate::{ + settings::{ + client_settings::ClientSettings, general_settings::SettingsLike, + server_settings::ServerSettings, + }, + ui::{ + macroquad::menu_builder::MenuBuilder, + state::{GameContext, GuiState}, + }, +}; -pub async fn draw_settings(state: &mut GuiState) { +pub async fn draw_settings( + state: &mut GuiState, + context: &mut GameContext, + client_settings: &mut ClientSettings, + server_settings: &mut ServerSettings, +) { 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, @@ -21,11 +36,50 @@ pub async fn draw_settings(state: &mut GuiState) { Group::new(hash!(), menu_size) .position(menu_pos) .ui(&mut root_ui(), |ui| { + // Client menu_builder.label(ui, "Game settings"); - menu_builder.label(ui, "Server settings"); + menu_builder.label(ui, "Name"); + menu_builder.text_input(ui, "name input", &mut client_settings.name); - if menu_builder.button(ui, "Go back") { + menu_builder.label(ui, "Default server url"); + menu_builder.text_input(ui, "url input", &mut context.server_url_buffer); + + menu_builder.label(ui, ""); + + // Server + menu_builder.label(ui, "Server settings"); + menu_builder.label(ui, "TODO"); + + if let Some(error_msg) = &context.latest_error_message { + menu_builder.label(ui, &error_msg); + } + + // Exit + if menu_builder.button(ui, "Save and back") { + client_settings.server_url = match context.server_url_buffer.parse() { + Ok(result) => result, + + Err(e) => { + context.latest_error_message = + Some(format!("Error while parsing url: {}", e)); + return; + } + }; + + if let Err(e) = client_settings.save_to_file() { + context.latest_error_message = Some(format!("Error: {}", e)); + error!("Error while saving client settings to file: {}", e); + return; + } + + if let Err(e) = server_settings.save_to_file() { + context.latest_error_message = Some(format!("Error: {}", e)); + error!("Error while saving server settings to file: {}", e); + return; + } + + context.latest_error_message = None; *state = GuiState::MainMenu; } }); diff --git a/src/ui/state.rs b/src/ui/state.rs index 49184bc..c165193 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -36,6 +36,8 @@ pub struct GameContext { pub difficulty: BotDificulty, pub gamemode: GameMode, pub server_url_buffer: String, + + pub latest_error_message: Option, } impl Default for GameContext { @@ -43,7 +45,8 @@ impl Default for GameContext { Self { difficulty: BotDificulty::default(), gamemode: GameMode::default(), - server_url_buffer: "127.0.0.1".to_string(), + server_url_buffer: "127.0.0.1:6767".to_string(), + latest_error_message: None, } } } From e90aa63cbf31bfccbe007440b59fd666d1d957a5 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 15:47:13 +0200 Subject: [PATCH 42/48] feat: stuff --- src/ui/macroquad/settings.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/ui/macroquad/settings.rs b/src/ui/macroquad/settings.rs index f231515..7708eaa 100644 --- a/src/ui/macroquad/settings.rs +++ b/src/ui/macroquad/settings.rs @@ -61,20 +61,19 @@ pub async fn draw_settings( Ok(result) => result, Err(e) => { - context.latest_error_message = - Some(format!("Error while parsing url: {}", e)); + context.latest_error_message = Some(e.to_string()); return; } }; if let Err(e) = client_settings.save_to_file() { - context.latest_error_message = Some(format!("Error: {}", e)); + context.latest_error_message = Some(e.to_string()); error!("Error while saving client settings to file: {}", e); return; } if let Err(e) = server_settings.save_to_file() { - context.latest_error_message = Some(format!("Error: {}", e)); + context.latest_error_message = Some(e.to_string()); error!("Error while saving server settings to file: {}", e); return; } From 1a214059271720e4020c5e3c41c53aae9d9798f8 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 15:48:21 +0200 Subject: [PATCH 43/48] fix: formatting --- src/ui/macroquad/game/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/macroquad/game/mod.rs b/src/ui/macroquad/game/mod.rs index 661b9ac..1d4e5b3 100644 --- a/src/ui/macroquad/game/mod.rs +++ b/src/ui/macroquad/game/mod.rs @@ -1,3 +1,3 @@ -mod chat; mod board; +mod chat; pub mod game; From f580adf7434baa52a8914f40d2592d22fe5804e7 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 15:50:52 +0200 Subject: [PATCH 44/48] fix: clippy --- src/bin/client.rs | 17 +++------------- src/logic/board/board.rs | 26 +++++++++++------------- src/logic/board/board_view.rs | 6 +++--- src/logic/game_master.rs | 2 +- src/network/client.rs | 2 +- src/network/connection.rs | 9 ++++---- src/network/server.rs | 3 +-- src/super_advanced_ai.rs | 4 ++-- src/ui/macroquad/difficulty_selection.rs | 4 ++-- src/ui/macroquad/game/board.rs | 22 ++++++++------------ src/ui/macroquad/game/chat.rs | 7 +++---- src/ui/macroquad/game/game.rs | 23 ++++++++------------- src/ui/macroquad/main_menu.rs | 6 +++--- src/ui/macroquad/mode_selection.rs | 2 +- src/ui/macroquad/server_selection.rs | 4 ++-- src/ui/macroquad/settings.rs | 2 +- src/ui/state.rs | 2 +- 17 files changed, 56 insertions(+), 85 deletions(-) diff --git a/src/bin/client.rs b/src/bin/client.rs index e14a2d0..9862a4d 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -63,6 +63,7 @@ impl TryFrom<&str> for CliCommands { } } +#[derive(Default)] struct ClientContext { pub identity: Option, pub is_my_turn: bool, @@ -71,17 +72,6 @@ struct ClientContext { pub available_moves: Option>, } -impl Default for ClientContext { - fn default() -> Self { - Self { - identity: None, - is_my_turn: false, - - available_captures: None, - available_moves: None, - } - } -} async fn run_bot() { let bot = Bot::new(BotDificulty::Easy).await; @@ -106,11 +96,10 @@ async fn main() -> Result<(), Box> { loop { let mut buffer = String::new(); - if stdin.read_line(&mut buffer).is_ok() { - if stdin_sender.blocking_send(buffer).is_err() { + if stdin.read_line(&mut buffer).is_ok() + && stdin_sender.blocking_send(buffer).is_err() { break; } - } } }); diff --git a/src/logic/board/board.rs b/src/logic/board/board.rs index b5eda57..95cc1c1 100644 --- a/src/logic/board/board.rs +++ b/src/logic/board/board.rs @@ -218,7 +218,7 @@ impl Board { from, to ); - if !self.is_player_owner_of_the_pawn(player, &pawn) { + if !self.is_player_owner_of_the_pawn(player, pawn) { debug!("Player wasn't owner of the pawn..."); return false; } @@ -279,9 +279,8 @@ impl Board { let target_option: Option = current_pos.checked_add(direction); if let Some(target) = target_option - && self.can_capture(current_pos, target, player, captured_enemies, &pawn) - { - if let Some(path_after_capture) = target.checked_add(direction) { + && self.can_capture(current_pos, target, player, captured_enemies, pawn) + && let Some(path_after_capture) = target.checked_add(direction) { debug!( "Found possible capture: {} -> {}", current_pos, path_after_capture @@ -303,10 +302,9 @@ impl Board { available_directions, player, all_paths, - &pawn, + pawn, ); } - } } if !found_any_capture && !current_path.is_empty() && !captured_enemies.is_empty() { @@ -415,7 +413,7 @@ impl Board { return false; } - if !self.is_player_owner_of_the_pawn(&player, self[from].pawn.as_ref().unwrap()) { + if !self.is_player_owner_of_the_pawn(player, self[from].pawn.as_ref().unwrap()) { warn!("Player {} tried moving a pawn which he doesn own!", player); debug!("Tried moving from {} to {}", from, to); return false; @@ -462,7 +460,7 @@ impl Board { return false; } - if !self.is_player_owner_of_the_pawn(player, &pawn) { + if !self.is_player_owner_of_the_pawn(player, pawn) { warn!("Player {} tried moving a pawn which he doesn own!", player); return false; } @@ -491,9 +489,9 @@ impl Board { impl Index for Board { type Output = [Field]; - fn index<'a>(&'a self, i: usize) -> &'a [Field] { - let start = i * &self.size; - let end: usize = start + &self.size; + fn index(&self, i: usize) -> &[Field] { + let start = i * self.size; + let end: usize = start + self.size; &self.board[start..end] } } @@ -507,9 +505,9 @@ impl Index for Board { } impl IndexMut for Board { - fn index_mut<'a>(&'a mut self, i: usize) -> &'a mut [Field] { - let start = i * &self.size; - let end: usize = start + &self.size; + fn index_mut(&mut self, i: usize) -> &mut [Field] { + let start = i * self.size; + let end: usize = start + self.size; &mut self.board[start..end] } } diff --git a/src/logic/board/board_view.rs b/src/logic/board/board_view.rs index 8976784..480ce14 100644 --- a/src/logic/board/board_view.rs +++ b/src/logic/board/board_view.rs @@ -24,9 +24,9 @@ impl From for BoardView { impl Index for BoardView { type Output = [Field]; - fn index<'a>(&'a self, i: usize) -> &'a [Field] { - let start = i * &self.size; - let end: usize = start + &self.size; + fn index(&self, i: usize) -> &[Field] { + let start = i * self.size; + let end: usize = start + self.size; &self.board[start..end] } } diff --git a/src/logic/game_master.rs b/src/logic/game_master.rs index bbcd997..76741a1 100644 --- a/src/logic/game_master.rs +++ b/src/logic/game_master.rs @@ -105,7 +105,7 @@ impl GameMaster { fn is_player_lost(&self, player: &Player) -> bool { let player_pawns = self.board.get_player_pawns_positions(player); - player_pawns.len() == 0 + player_pawns.is_empty() || player_pawns.iter().all(|pos| { self.board.get_available_moves(*pos, player).is_none() && self.board.get_available_captures(*pos, player).is_none() diff --git a/src/network/client.rs b/src/network/client.rs index 47bce56..1e1362c 100644 --- a/src/network/client.rs +++ b/src/network/client.rs @@ -129,7 +129,7 @@ impl Client { async fn send_message(&mut self, msg: Result, postcard::Error>) { debug!("Sending message to the server!"); - let _ = match msg { + match msg { Err(e) => { error!("There was an error while creating the message: {}", e); return; diff --git a/src/network/connection.rs b/src/network/connection.rs index 7d58775..514738c 100644 --- a/src/network/connection.rs +++ b/src/network/connection.rs @@ -110,8 +110,7 @@ where if let Err(e) = tcp.write_all(&msg).await { error!("Error while sending content to: {:?}\n{}", self.peer, e); - return; - }; + } } pub async fn start_listening(&mut self) { @@ -202,20 +201,20 @@ where { error!("Erro while sending message to main thread: {}", e); } - return Ok(()); + Ok(()) } Err(e) => { error!( "Error while preparing message in read_content for sender: {}", e ); - return Ok(()); + Ok(()) } } } Err(e) => { error!("Error while getting the message from bits: {}", e); - return Ok(()); + Ok(()) } } } diff --git a/src/network/server.rs b/src/network/server.rs index 6f886be..a3ea6cf 100644 --- a/src/network/server.rs +++ b/src/network/server.rs @@ -156,7 +156,7 @@ impl Server { let reason = "There is currently game going and it doesn't allow spectators".to_string(); info!("Rejecting {}, because {}", addr, reason); - let msg = Message::new(ServerMessage::DeclineHandshake { reason: reason }); + let msg = Message::new(ServerMessage::DeclineHandshake { reason }); if let Ok(msg) = msg { let _ = sender.send(msg).await; // we can't use send_message because we @@ -500,7 +500,6 @@ impl Server { } Err(e) => { error!("Error while broadcasting the message: {}", e); - return; } } } diff --git a/src/super_advanced_ai.rs b/src/super_advanced_ai.rs index d004e03..e824135 100644 --- a/src/super_advanced_ai.rs +++ b/src/super_advanced_ai.rs @@ -66,12 +66,12 @@ impl Bot { .choose(&mut rand::rng()) .expect("Could not get random move"); - client.send_move(rand_pawn.from, rand_move.clone()).await; + client.send_move(rand_pawn.from, *rand_move).await; } crate::network::message::ServerMessage::BroadcastBoardState { board: _ } => { info!("Got server state!"); - match dificulty.clone() { + match dificulty { BotDificulty::Easy => {} // we do nothing with it because easy bot // just does random stuff. In future // board_view can be used to calculate the diff --git a/src/ui/macroquad/difficulty_selection.rs b/src/ui/macroquad/difficulty_selection.rs index 9fa91fe..0718f3c 100644 --- a/src/ui/macroquad/difficulty_selection.rs +++ b/src/ui/macroquad/difficulty_selection.rs @@ -5,7 +5,7 @@ use macroquad::{ math::vec2, shapes::draw_rectangle, ui::{hash, root_ui, widgets::Group}, - window::{next_frame, screen_height, screen_width}, + window::{screen_height, screen_width}, }; use crate::{ @@ -72,7 +72,7 @@ fn start_single(state: &mut GuiState, context: &GameContext) { let result = rx.recv(); - if let Ok(result) = result { + if let Ok(_result) = result { connect_bot(context.difficulty); } diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 9bbc129..c51f942 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -185,9 +185,9 @@ impl Board { self.highlight_move_paths(from); - if let Some(field) = &self.get_clicked_field() { - if let Some(available_moves) = &self.available_moves { - if available_moves.iter().any(|available_move| { + if let Some(field) = &self.get_clicked_field() + && let Some(available_moves) = &self.available_moves + && available_moves.iter().any(|available_move| { available_move.from == from && available_move.available_steps.contains(&field.pos) }) { @@ -197,8 +197,6 @@ impl Board { }); self.state = BoardState::View; } - } - } } BoardState::ChooseCapture(from) => { @@ -230,8 +228,8 @@ impl Board { .copied() .collect(); - if let Some(clicked_field) = &self.get_clicked_field().map(|field| field.pos) { - if possible_moves.iter().any(|possible_move| { + if let Some(clicked_field) = &self.get_clicked_field().map(|field| field.pos) + && possible_moves.iter().any(|possible_move| { if let Some(valid_move) = possible_move.get(self.current_deepness) { valid_move == clicked_field } else { @@ -241,7 +239,6 @@ impl Board { self.current_capture_path.push(*clicked_field); self.current_deepness += 1; } - } if current_highlight.is_empty() { debug!("Capture path complete!"); @@ -278,7 +275,6 @@ impl Board { && available_moves.iter().any(|path| path.from == from) { self.state = BoardState::ChooseMove(from); - return; } } @@ -324,8 +320,8 @@ impl Board { for field in &self.board_view { let pos: Position = field.position; - let is_row_even: bool = pos.row % 2 == 0; - let is_column_even: bool = pos.column % 2 == 0; + let is_row_even: bool = pos.row.is_multiple_of(2); + let is_column_even: bool = pos.column.is_multiple_of(2); let is_field_black: bool = is_row_even ^ is_column_even; let abs_x = self.rect.x + pos.column as f32 * self.field_size; @@ -453,9 +449,7 @@ impl Board { for available_move in available_moves { self.fields[available_move.from].color = MOVE_HIGHLITGHT_COLOR; } - - return; - }; + } } fn highlight_move_paths(&mut self, from: Position) { diff --git a/src/ui/macroquad/game/chat.rs b/src/ui/macroquad/game/chat.rs index 4969fe4..e775fd0 100644 --- a/src/ui/macroquad/game/chat.rs +++ b/src/ui/macroquad/game/chat.rs @@ -1,4 +1,3 @@ -use log::debug; use macroquad::{ color::{BLACK, WHITE}, math::{Rect, vec2}, @@ -6,7 +5,7 @@ use macroquad::{ text::measure_text, ui::{ Skin, Ui, hash, root_ui, - widgets::{Group, InputText, Label}, + widgets::{Group, InputText}, }, window::{screen_height, screen_width}, }; @@ -86,7 +85,7 @@ impl Chat { .ui(&mut root_ui(), |ui| { for message in &self.messages { if prev_sender != message.sender { - if prev_sender != "" { + if !prev_sender.is_empty() { // make space if it's not the first message ui.label(None, ""); } @@ -108,7 +107,7 @@ fn wrap_message(ui: &mut Ui, msg: &String, font_size: u16, chat_width: f32) { let mut buffer = String::new(); if measure_text(msg, None, font_size, 1.0).width < chat_width { - ui.label(None, &msg); + ui.label(None, msg); return; } diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 5a2a01e..23f4660 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -12,10 +12,7 @@ use macroquad::{ use tokio::sync::mpsc::{Receiver, error::TryRecvError::Disconnected}; use crate::{ - logic::board::{ - board_view::BoardView, - pawn::{CapturePath, MovePath}, - }, + logic::board::pawn::{CapturePath, MovePath}, network::{ client::Client, message::ServerMessage, network_identity::NetworkIdentity, server::ServerStage, @@ -66,7 +63,7 @@ pub enum GuiCommands { } impl GameClient { - pub fn new(mut client: Client, context: &GameContext) -> Option { + pub fn new(mut client: Client, _context: &GameContext) -> Option { let Some(update_receiver) = client.get_update_receiver() else { return None; }; @@ -226,15 +223,11 @@ impl GameClient { } for key in get_keys_pressed() { - match key { - KeyCode::Enter => { - self.chat.send_message(self.cmd_sender.clone()); // not sure about cloning this - // every message sent. Maybe - // Chat should have it's own - // clone? - } - - _ => {} + if key == KeyCode::Enter { + self.chat.send_message(self.cmd_sender.clone()); // not sure about cloning this + // every message sent. Maybe + // Chat should have it's own + // clone? } } @@ -288,7 +281,7 @@ impl GameClient { self.chat.push_message(sender, content); } - ServerMessage::GameEnd { result } => { + ServerMessage::GameEnd { result: _ } => { self.game_state = ServerStage::End; } diff --git a/src/ui/macroquad/main_menu.rs b/src/ui/macroquad/main_menu.rs index 5719574..286134f 100644 --- a/src/ui/macroquad/main_menu.rs +++ b/src/ui/macroquad/main_menu.rs @@ -1,9 +1,9 @@ use macroquad::{ - color::{BLACK, GRAY, WHITE}, + color::GRAY, math::vec2, shapes::draw_rectangle, - ui::{Skin, hash, root_ui, widgets::Group}, - window::{next_frame, screen_height, screen_width}, + ui::{hash, root_ui, widgets::Group}, + window::{screen_height, screen_width}, }; use crate::ui::{macroquad::menu_builder::MenuBuilder, state::GuiState}; diff --git a/src/ui/macroquad/mode_selection.rs b/src/ui/macroquad/mode_selection.rs index 93bb956..2cb6757 100644 --- a/src/ui/macroquad/mode_selection.rs +++ b/src/ui/macroquad/mode_selection.rs @@ -3,7 +3,7 @@ use macroquad::{ math::vec2, shapes::draw_rectangle, ui::{hash, root_ui, widgets::Group}, - window::{next_frame, screen_height, screen_width}, + window::{screen_height, screen_width}, }; use crate::ui::{ diff --git a/src/ui/macroquad/server_selection.rs b/src/ui/macroquad/server_selection.rs index 0c465a5..55a6a90 100644 --- a/src/ui/macroquad/server_selection.rs +++ b/src/ui/macroquad/server_selection.rs @@ -5,7 +5,7 @@ use macroquad::{ math::vec2, shapes::draw_rectangle, ui::{hash, root_ui, widgets::Group}, - window::{next_frame, screen_height, screen_width}, + window::{screen_height, screen_width}, }; use crate::ui::{ @@ -40,7 +40,7 @@ pub async fn draw_server_selection(state: &mut GuiState, context: &mut GameConte let result = rx.recv(); - if let Ok(result) = result { + if let Ok(_result) = result { *state = GuiState::Connecting(connect_to_server()); } } diff --git a/src/ui/macroquad/settings.rs b/src/ui/macroquad/settings.rs index 7708eaa..7e336f1 100644 --- a/src/ui/macroquad/settings.rs +++ b/src/ui/macroquad/settings.rs @@ -52,7 +52,7 @@ pub async fn draw_settings( menu_builder.label(ui, "TODO"); if let Some(error_msg) = &context.latest_error_message { - menu_builder.label(ui, &error_msg); + menu_builder.label(ui, error_msg); } // Exit diff --git a/src/ui/state.rs b/src/ui/state.rs index c165193..827945a 100644 --- a/src/ui/state.rs +++ b/src/ui/state.rs @@ -73,7 +73,7 @@ pub fn run_server(sender: Sender<()>) { let rt = tokio::runtime::Runtime::new().unwrap(); let mut server = rt.block_on(Server::new()); - let _ = rt.block_on(server.start()); + rt.block_on(server.start()); let _ = sender.send(()); From f6f19572319fb521c065f662f17bad777e20dda3 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 15:53:11 +0200 Subject: [PATCH 45/48] fix: formatting again --- src/bin/client.rs | 8 +++---- src/logic/board/board.rs | 43 +++++++++++++++++----------------- src/ui/macroquad/game/board.rs | 30 +++++++++++++----------- 3 files changed, 41 insertions(+), 40 deletions(-) diff --git a/src/bin/client.rs b/src/bin/client.rs index 9862a4d..95e7585 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -72,7 +72,6 @@ struct ClientContext { pub available_moves: Option>, } - async fn run_bot() { let bot = Bot::new(BotDificulty::Easy).await; bot.game_loop().await; @@ -96,10 +95,9 @@ async fn main() -> Result<(), Box> { loop { let mut buffer = String::new(); - if stdin.read_line(&mut buffer).is_ok() - && stdin_sender.blocking_send(buffer).is_err() { - break; - } + if stdin.read_line(&mut buffer).is_ok() && stdin_sender.blocking_send(buffer).is_err() { + break; + } } }); diff --git a/src/logic/board/board.rs b/src/logic/board/board.rs index 95cc1c1..b9e5c80 100644 --- a/src/logic/board/board.rs +++ b/src/logic/board/board.rs @@ -280,31 +280,32 @@ impl Board { if let Some(target) = target_option && self.can_capture(current_pos, target, player, captured_enemies, pawn) - && let Some(path_after_capture) = target.checked_add(direction) { - debug!( - "Found possible capture: {} -> {}", - current_pos, path_after_capture - ); + && let Some(path_after_capture) = target.checked_add(direction) + { + debug!( + "Found possible capture: {} -> {}", + current_pos, path_after_capture + ); - found_any_capture = true; + found_any_capture = true; - let mut new_path = current_path.clone(); - new_path.push(path_after_capture); + let mut new_path = current_path.clone(); + new_path.push(path_after_capture); - let mut new_enemies = captured_enemies.clone(); - new_enemies.push(target); + let mut new_enemies = captured_enemies.clone(); + new_enemies.push(target); - self.find_captures( - start_pos, - path_after_capture, - &mut new_path, - &new_enemies, - available_directions, - player, - all_paths, - pawn, - ); - } + self.find_captures( + start_pos, + path_after_capture, + &mut new_path, + &new_enemies, + available_directions, + player, + all_paths, + pawn, + ); + } } if !found_any_capture && !current_path.is_empty() && !captured_enemies.is_empty() { diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index c51f942..7bff631 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -187,16 +187,17 @@ impl Board { if let Some(field) = &self.get_clicked_field() && let Some(available_moves) = &self.available_moves - && available_moves.iter().any(|available_move| { - available_move.from == from - && available_move.available_steps.contains(&field.pos) - }) { - self.choosen_move = Some(MovePath { - from, - available_steps: vec![field.pos], - }); - self.state = BoardState::View; - } + && available_moves.iter().any(|available_move| { + available_move.from == from + && available_move.available_steps.contains(&field.pos) + }) + { + self.choosen_move = Some(MovePath { + from, + available_steps: vec![field.pos], + }); + self.state = BoardState::View; + } } BoardState::ChooseCapture(from) => { @@ -235,10 +236,11 @@ impl Board { } else { false } - }) { - self.current_capture_path.push(*clicked_field); - self.current_deepness += 1; - } + }) + { + self.current_capture_path.push(*clicked_field); + self.current_deepness += 1; + } if current_highlight.is_empty() { debug!("Capture path complete!"); From ef99710d0f4a5931659185e763c5190113139183 Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 16:33:25 +0200 Subject: [PATCH 46/48] feat: add game end screen --- src/bin/macroquad_client.rs | 20 +++++++++- src/ui/macroquad/game/game.rs | 74 +++++++++++++++++++++++++++-------- 2 files changed, 76 insertions(+), 18 deletions(-) diff --git a/src/bin/macroquad_client.rs b/src/bin/macroquad_client.rs index c199c43..9b21907 100644 --- a/src/bin/macroquad_client.rs +++ b/src/bin/macroquad_client.rs @@ -140,8 +140,24 @@ pub async fn main() { } GuiState::Game(client) => { - client.update(); - client.draw(); + while !client.should_close { + draw_texture_ex( + &background, + 0.0, + 0.0, + WHITE, + DrawTextureParams { + dest_size: Some(vec2(screen_width(), screen_height())), + ..DrawTextureParams::default() + }, + ); + + client.update(); + client.draw(); + next_frame().await; + } + + state = GuiState::MainMenu; } GuiState::Exit => { diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 23f4660..240ac80 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -6,7 +6,10 @@ use macroquad::{ input::{KeyCode, get_keys_pressed}, math::{Rect, Vec2, vec2}, shapes::draw_rectangle, - ui::{hash, root_ui, widgets::Checkbox}, + ui::{ + hash, root_ui, + widgets::{Checkbox, Group}, + }, window::{screen_height, screen_width}, }; use tokio::sync::mpsc::{Receiver, error::TryRecvError::Disconnected}; @@ -18,7 +21,10 @@ use crate::{ server::ServerStage, }, ui::{ - macroquad::game::{board::Board, chat::Chat}, + macroquad::{ + game::{board::Board, chat::Chat}, + menu_builder::MenuBuilder, + }, state::GameContext, }, }; @@ -31,18 +37,17 @@ pub struct GameClient { board: Board, is_my_turn: bool, - player_name: String, - enemy_name: String, // TODO! Server should give this info to us (it doesn't rn) game_state: ServerStage, game_area: Rect, board_area: Rect, - game_padding: f32, - lobby: Lobby, chat: Chat, + + game_result: Option, + pub should_close: bool, } #[derive(Default)] @@ -120,7 +125,6 @@ impl GameClient { w: screen_width() * 0.8, h: screen_height(), }; - let game_padding = 25.0; let board_area = Rect::default(); @@ -136,17 +140,15 @@ impl GameClient { is_my_turn: false, - player_name: "Morbius".to_string(), - enemy_name: "Milo".to_string(), - game_state: game_stage, game_area, board_area, - game_padding, - chat, + + game_result: None, + should_close: false, }) } @@ -202,8 +204,37 @@ impl GameClient { self.board.draw(); } - fn draw_summary_screen(&self) { - todo!(); + fn draw_summary_screen(&mut self) { + // this function doesn't only draw but i'm to lazy to change + // this name everywhere + let mut menu_builder = MenuBuilder::new(self.game_area.w, self.game_area.h * 0.1); + let menu_pos = vec2(self.game_area.x, self.game_area.y); + + draw_rectangle( + menu_pos.x, + menu_pos.y, + self.game_area.w, + self.game_area.h, + GRAY, + ); + + Group::new(hash!(), vec2(self.game_area.w, self.game_area.h)) + .position(menu_pos) + .ui(&mut root_ui(), |ui| { + menu_builder.label(ui, "Game ended!"); + + if let Some(result) = &self.game_result { + menu_builder.label(ui, &result); + } else { + menu_builder.label(ui, "Could not get result"); + } + + if menu_builder.button(ui, "Main menu") { + // TODO! Should also close the connection + // and cleanup + self.should_close = true; + } + }); } /* === UPDATING STUFF ==== */ @@ -219,7 +250,7 @@ impl GameClient { self.board.update(); } - ServerStage::End => todo!(), + ServerStage::End => {} } for key in get_keys_pressed() { @@ -281,7 +312,18 @@ impl GameClient { self.chat.push_message(sender, content); } - ServerMessage::GameEnd { result: _ } => { + ServerMessage::GameEnd { result } => { + self.game_result = match result { + crate::logic::game_master::GameResult::Lost(uuid) => { + if self.identity.clone().unwrap().id == uuid { + Some("You lost!".to_string()) + } else { + Some("You won!".to_string()) + } + } + crate::logic::game_master::GameResult::Draw => Some("Draw!".to_string()), + }; + self.game_state = ServerStage::End; } From 89c127b10ec88c5fbd78eac0b8e0e3eeccdc5c8f Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 16:40:46 +0200 Subject: [PATCH 47/48] fix: formatting --- src/logic/board/board.rs | 3 +++ src/ui/macroquad/game/board.rs | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/logic/board/board.rs b/src/logic/board/board.rs index b9e5c80..e60013a 100644 --- a/src/logic/board/board.rs +++ b/src/logic/board/board.rs @@ -79,6 +79,7 @@ impl Board { } /// For testing + #[allow(dead_code)] fn new_empty(player1: &mut Player, player2: &mut Player, size: Option) -> Self { debug!("Creating new empty board!"); let size = size.unwrap_or(8); @@ -104,6 +105,7 @@ impl Board { Board { board, size } } + #[allow(dead_code)] fn place_pawn(&mut self, target: Position, owner: &Player) { debug!("Placing new pawn by hand!"); self[target].pawn = Some(Pawn::new(owner)); @@ -131,6 +133,7 @@ impl Board { pos.is_in_range(self.size) && self[pos].pawn.is_none() } + #[allow(dead_code)] fn is_pawn_movable(&self, pos: Position, player: &Player) -> bool { self.get_available_moves(pos, player) .is_some_and(|moves| !moves.is_empty()) diff --git a/src/ui/macroquad/game/board.rs b/src/ui/macroquad/game/board.rs index 7bff631..35579a6 100644 --- a/src/ui/macroquad/game/board.rs +++ b/src/ui/macroquad/game/board.rs @@ -47,10 +47,6 @@ impl GuiFieldVec { pub fn clear(&mut self) { self.gui_fields.clear(); } - - pub fn size(&self) -> usize { - self.gui_fields.len() - } } impl<'a> IntoIterator for &'a GuiFieldVec { From 24acdbe315d52012456d9d3069c56f80efdd0d3f Mon Sep 17 00:00:00 2001 From: szymon Date: Sat, 5 Sep 2026 16:44:23 +0200 Subject: [PATCH 48/48] fix: clippy --- src/network/client.rs | 3 +-- src/ui/macroquad/game/game.rs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/network/client.rs b/src/network/client.rs index 1e1362c..e5dd638 100644 --- a/src/network/client.rs +++ b/src/network/client.rs @@ -137,10 +137,9 @@ impl Client { Ok(msg) => { if let Err(e) = self.conn_sender_outgoing.send(msg).await { error!("Error while sending a message to connection thread: {}", e); - return; } } - }; + } } pub async fn send_capture(&mut self, capture_path: CapturePath) { diff --git a/src/ui/macroquad/game/game.rs b/src/ui/macroquad/game/game.rs index 240ac80..169a01a 100644 --- a/src/ui/macroquad/game/game.rs +++ b/src/ui/macroquad/game/game.rs @@ -224,7 +224,7 @@ impl GameClient { menu_builder.label(ui, "Game ended!"); if let Some(result) = &self.game_result { - menu_builder.label(ui, &result); + menu_builder.label(ui, result); } else { menu_builder.label(ui, "Could not get result"); }

`<2+hmi4g+~I3&})^=hq#7Rt%@udfWT-n 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⋘qyr-CJ+Db>N$j9fEE39l+9)I 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 z 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