feat: add getting clicked field

This commit is contained in:
2026-08-24 18:22:47 +02:00
parent dacfc27636
commit 7f92435f89
2 changed files with 25 additions and 1 deletions

View File

@@ -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<Position> = vec![];

View File

@@ -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!(),
}