diff options
Diffstat (limited to 'src/gui.rs')
| -rw-r--r-- | src/gui.rs | 25 |
1 files changed, 24 insertions, 1 deletions
@@ -52,6 +52,7 @@ struct BoardRenderer { white_colour: Color, stone_size: f32, game_size: i32, + frame_pad: i32, } impl BoardRenderer { @@ -68,6 +69,7 @@ impl BoardRenderer { stone_size: 0.8, // I'm not sure where this should go game_size: 5, + frame_pad: 5, } } @@ -235,10 +237,30 @@ impl GUIBoard { return g; } + fn to_square(&self, x: i32, y: i32) -> (i32, i32) { + // Irritatingly we have to basically inline the exact same + // BoardRendererDetails code here as elsewhere, because + // *.draw2 wants to own the closure and i can't find a way to + // juggle this properly + + let mut details = BoardRendererDetails::default(); + details.set( + &self.button, + self.renderer.frame_pad, + self.renderer.game_size, + ); + + let x = x - details.xorg; + let y = y - details.yorg; + + (x / details.square_size, y / details.square_size) + } + fn render(&self) -> impl FnMut(&mut Button) { let renderer = self.renderer.clone(); let game_size = self.size; + // test code let stack = vec