From 1f8e6e98b924ee4661be2e7b75cf09a6a8bb7cd3 Mon Sep 17 00:00:00 2001 From: ubq323 Date: Sun, 14 Apr 2024 18:38:10 +0100 Subject: change brush size and colour --- client/main.ha | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'client/main.ha') diff --git a/client/main.ha b/client/main.ha index 2a341c4..04e6854 100644 --- a/client/main.ha +++ b/client/main.ha @@ -47,8 +47,6 @@ export fn main() void = { case let err: net::error => fmt::fatal("couldn't connect to server:",net::strerror(err)); }; - - const pollfd: [1]poll::pollfd = [ poll::pollfd { fd = conn, events=poll::event::POLLIN, revents = 0 @@ -56,7 +54,7 @@ export fn main() void = { const packet_reader = packet_reader::new(); // paintui state - let pstate = paintui::state { ... }; + let pstate = paintui::state { size_idx = 4, ... }; let camera_pos: pos = (25, 50); let quit = false; @@ -65,10 +63,14 @@ export fn main() void = { let requested_chunks: []pos = []; - // in WORLD coords + // in SCREEN coords let mouse_pos: pos = (0,0); let mouse_down = false; request_visible_chunks(pictures, conn, camera_pos, &requested_chunks); + + + const win_pic = picture_from_surface(wsurf, (9,9)); + for (!quit) { const did_move = do_movement(&camera_pos); @@ -86,20 +88,27 @@ export fn main() void = { case sdl2::SDL_EventType::QUIT => quit = true; case sdl2::SDL_EventType::KEYDOWN => const keysym = ev.key.keysym.sym; - if (keysym == sdl2::SDL_Keycode::ESCAPE) quit = true; + if (keysym == sdl2::SDL_Keycode::ESCAPE) quit = true + else if (sdl2::SDL_Keycode::ZERO <= keysym + && keysym <= sdl2::SDL_Keycode::NINE) + paintui::key(&pstate, keysym - sdl2::SDL_Keycode::ZERO); case sdl2::SDL_EventType::MOUSEBUTTONDOWN, sdl2::SDL_EventType::MOUSEBUTTONUP => const edata = ev.button; - mouse_pos = (edata.x + camera_pos.0, edata.y + camera_pos.1); + mouse_pos = (edata.x, edata.y); if (edata.button == 1) mouse_down = (edata.state == 1); case sdl2::SDL_EventType::MOUSEMOTION => const edata = ev.motion; - mouse_pos = (edata.x + camera_pos.0, edata.y + camera_pos.1); + mouse_pos = (edata.x, edata.y); + case sdl2::SDL_EventType::MOUSEWHEEL => + const edata = ev.wheel; + paintui::mousewheel(&pstate, edata.y); case => void; }; - match (paintui::tick(&pstate, mouse_pos, mouse_down)) { + const mouse_pos_world = (mouse_pos.0 + camera_pos.0, mouse_pos.1 + camera_pos.1); + match (paintui::tick(&pstate, mouse_pos_world, mouse_down)) { case void => yield; case let op: drawing::op => drawing::perform(pictures, op); @@ -140,7 +149,8 @@ export fn main() void = { }; }; - drawing::clear_picture(&picture_from_surface(wsurf,(9,9)), 0xff0000); + + drawing::clear_picture(&win_pic, 0xff0000); for (let i = 0z; i < len(pictures); i += 1) { const psurf = picture_surfaces[i]; @@ -148,6 +158,7 @@ export fn main() void = { render_picture(pic, psurf, wsurf, camera_pos); }; + drawing::circle_hollow(&win_pic, mouse_pos, paintui::sizes[pstate.size_idx]: i32, pstate.color); sdl2::SDL_UpdateWindowSurface(win)!; n += 1; -- cgit v1.2.3