diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gui.rs | 23 |
1 files changed, 15 insertions, 8 deletions
@@ -15,7 +15,7 @@ along with Foobar. If not, see <https://www.gnu.org/licenses/>. */ -use fltk::{app::*, button::*, draw::*, frame::*, menu::*, text::*, window::*}; +use fltk::{app::*, button::*, draw::*, menu::*, text::*, window::*}; use crate::game::*; @@ -26,7 +26,7 @@ struct BoardRendererBackend { } impl BoardRendererBackend { - fn initialise(frame: &Frame, frame_pad: i32, game_size: i32) -> BoardRendererBackend { + fn initialise(frame: &Button, frame_pad: i32, game_size: i32) -> BoardRendererBackend { let x0 = frame.x(); let y0 = frame.y(); let xorg = x0 + frame_pad; @@ -215,13 +215,13 @@ impl BoardRenderer { } struct GUIBoard { - frame: Frame, + frame: Button, renderer: BoardRenderer, size: i32, } impl GUIBoard { - fn new(frame: Frame, size: i32) -> GUIBoard { + fn new(frame: Button, size: i32) -> GUIBoard { let renderer = BoardRenderer::default().with_size(size); let mut g = GUIBoard { frame, @@ -232,7 +232,7 @@ impl GUIBoard { return g; } - fn render(&self) -> impl Fn(&mut Frame) { + fn render(&self) -> impl Fn(&mut Button) { let renderer = self.renderer; let game_size = self.size; @@ -279,7 +279,7 @@ impl GUIBoard { }, ]; - move |frame: &mut Frame| { + move |frame: &mut Button| { let backend = BoardRendererBackend::initialise(frame, 5, game_size); renderer.render_board(&backend); @@ -295,6 +295,7 @@ impl GUIBoard { enum GUIMessage { None, Test, + BoardClick, } pub struct GUI { @@ -347,12 +348,13 @@ impl GUI { .with_size(LOG_WIDTH, 600 - menu.height()) .with_pos(800 - LOG_WIDTH, menu.height()); log.set_buffer(Some(TextBuffer::default())); - log.insert("test"); + log.insert("test\n"); - let mut board_frame = Frame::default() + let mut board_frame = Button::default() .with_size(800 - LOG_WIDTH, 600 - menu.height()) .below_of(&menu, 0); board_frame.set_frame(FrameType::EmbossedBox); + board_frame.emit(sender, GUIMessage::BoardClick); window.resizable(&mut board_frame); window.end(); @@ -376,6 +378,11 @@ impl GUI { while self.app.wait() { if let Some(msg) = self.receiver.recv() { match msg { + GUIMessage::BoardClick => { + let x = event_x(); + let y = event_y(); + self.log.insert(&format!("Board click ({},{})\n", x, y)); + } _ => (), } } |
