From 7f92435f89b6b09f675d8641dcccd2895c52912b Mon Sep 17 00:00:00 2001 From: szymon Date: Mon, 24 Aug 2026 18:22:47 +0200 Subject: [PATCH] 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!(), }