diff options
| author | tslil clingman <> | 2020-11-05 23:02:25 -0500 |
|---|---|---|
| committer | tslil clingman <> | 2020-11-05 23:02:25 -0500 |
| commit | 9d8ef22f2c5645d6911f2677e877569874ccda38 (patch) | |
| tree | 8872cbe803e2ff7fd3d626016074239819badd90 | |
| parent | 3d0db59214805cacd581038e6b0aa170bdf98410 (diff) | |
Bleh this is not a good hierarchy. How does software design work?
| -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