diff --git a/kifu/kifu-core/src/types.rs b/kifu/kifu-core/src/types.rs index e37992a..9b4eea9 100644 --- a/kifu/kifu-core/src/types.rs +++ b/kifu/kifu-core/src/types.rs @@ -1,6 +1,6 @@ use std::time::Duration; -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum Color { Black, White, diff --git a/kifu/kifu-core/src/ui/types.rs b/kifu/kifu-core/src/ui/types.rs index 98bbaf1..f607356 100644 --- a/kifu/kifu-core/src/ui/types.rs +++ b/kifu/kifu-core/src/ui/types.rs @@ -1,12 +1,12 @@ use crate::types::{Color, Size}; -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, PartialEq)] pub struct Jitter { pub x: i8, pub y: i8, } -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, PartialEq)] pub struct StoneElement { pub color: Color, pub jitter: Jitter, @@ -21,13 +21,13 @@ impl StoneElement { } } -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, PartialEq)] pub struct PlayStoneRequest { col: u8, row: u8, } -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, PartialEq)] pub enum IntersectionElement { Unplayable, Empty(PlayStoneRequest), diff --git a/kifu/kifu-gtk/src/ui/board.rs b/kifu/kifu-gtk/src/ui/board.rs index 20ae649..58ce1b1 100644 --- a/kifu/kifu-gtk/src/ui/board.rs +++ b/kifu/kifu-gtk/src/ui/board.rs @@ -131,7 +131,15 @@ impl ObjectImpl for BoardPrivate { }); let cursor = cursor_location.borrow(); - pen.ghost_stone(context, cursor.row, cursor.column, *current_player.borrow()); + match board.stone(cursor.row, cursor.column) { + IntersectionElement::Empty(_) => pen.ghost_stone( + context, + cursor.row, + cursor.column, + *current_player.borrow(), + ), + _ => {} + } }); let motion_controller = gtk::EventControllerMotion::new(); diff --git a/kifu/kifu-gtk/src/ui/playing_field.rs b/kifu/kifu-gtk/src/ui/playing_field.rs index 742754c..ac6708b 100644 --- a/kifu/kifu-gtk/src/ui/playing_field.rs +++ b/kifu/kifu-gtk/src/ui/playing_field.rs @@ -90,9 +90,13 @@ impl PlayingField { #[cfg(feature = "screenplay")] pub fn playing_field_view() -> PlayingFieldView { - let mut board = Board::default(); - *board.stone_mut(4, 4) = Some(StoneElement::new(Color::White)); - *board.stone_mut(15, 15) = Some(StoneElement::new(Color::Black)); + let mut board = BoardElement::new(Size { + width: 19, + height: 19, + }); + *board.stone_mut(4, 4) = IntersectionElement::Filled(StoneElement::new(Color::White)); + *board.stone_mut(15, 15) = IntersectionElement::Filled(StoneElement::new(Color::Black)); + *board.stone_mut(18, 18) = IntersectionElement::Unplayable; let player_card_black = PlayerCardElement { color: Color::Black, name: "Savanni".to_owned(), diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 1cae25b..0000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,3 +0,0 @@ -[toolchain] -channel = "1.68.2" -components = ["rust-src"]