From b0f6aa53bd1befda24b01e191348d1f5195a5065 Mon Sep 17 00:00:00 2001 From: Able Date: Thu, 14 Nov 2024 18:33:29 -0600 Subject: [PATCH] Mouse updates --- sysdata/programs/sunset_server/src/main.hb | 49 +++++++++++++++++----- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/sysdata/programs/sunset_server/src/main.hb b/sysdata/programs/sunset_server/src/main.hb index b0ad252..5a64e66 100644 --- a/sysdata/programs/sunset_server/src/main.hb +++ b/sysdata/programs/sunset_server/src/main.hb @@ -2,13 +2,33 @@ sunset := @use("../../../libraries/sunset_proto/src/lib.hb") render := @use("../../../libraries/render/src/lib.hb") intouch := @use("../../../libraries/intouch/src/lib.hb") -main := fn(): void { - screen := render.init(true) +horizon_api := @use("../../../libraries/horizon_api/src/lib.hb"); +.{new_label, render_label_to_surface, set_label_text} := horizon_api.widgets.label + +stn := @use("../../../libraries/stn/src/lib.hb"); +.{Vec2} := stn.math + +psf := @embed("../../../assets/consolefonts/tamsyn/10x20r.psf") +img := @embed("../../../assets/wallpaper.qoi") + +main := fn(): int { sunset.server.start() + + screen := render.init(true) render.clear(screen, render.black) - mouse_x := 0 - mouse_y := 0 + font := @unwrap(render.text.font_from_psf2(@bitcast(&psf), false)) + + wallpaper := render.image.from(@bitcast(&img)) + if wallpaper == null { + // stn.panic("Wallpaper not loaded\0") + return 1 + } + + mouse_x := 100 + mouse_y := 100 + + text_label := new_label("Hi\0") loop { mouse_event := intouch.recieve_mouse_event() @@ -38,26 +58,33 @@ main := fn(): void { mouse_y -= change_y if mouse_event.left { - // set_label_text(text_label, "LEFT CLICK\0") + set_label_text(text_label, "LEFT CLICK\0") } if mouse_event.middle { - // set_label_text(text_label, "MIDDLE CLICK\0") + set_label_text(text_label, "MIDDLE CLICK\0") } if mouse_event.right { - // set_label_text(text_label, "RIGHT CLICK\0") + set_label_text(text_label, "RIGHT CLICK\0") } } { - // render.clear(screen, render.black) + render.clear(screen, render.black) + render.put_surface(screen, wallpaper, .(0, 0), false) + + render.put_rect(screen, .(0, 0), .(screen.width - 1, screen.height - 1), render.white) } if sunset.server.incoming() { - // render.clear(screen, render.black) - // sunset.server.collect_frames() sunset.server.render_clients(screen) } + { + pos := Vec2(uint).(1, screen.height - 21) + render_label_to_surface(screen, text_label, font, pos) + render.put_rect(screen, .(0, screen.height - 21), .(screen.width - 1, 20), render.white) + } + // Mouse cursor { render.put_filled_rect(screen, .(mouse_x, mouse_y), .(20, 20), render.black) @@ -66,4 +93,6 @@ main := fn(): void { render.sync(screen) } + + return 0 } \ No newline at end of file