diff options
author | ubq323 <ubq323@ubq323.website> | 2024-04-14 18:38:10 +0100 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2024-04-14 18:38:34 +0100 |
commit | 1f8e6e98b924ee4661be2e7b75cf09a6a8bb7cd3 (patch) | |
tree | 057c24efd61e8d417199be70cdd487722c652f6c /client/paintui | |
parent | 047718ad845ee5850fe70316d7c1ac9dec10b6dd (diff) |
change brush size and colour
Diffstat (limited to 'client/paintui')
-rw-r--r-- | client/paintui/paintui.ha | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/client/paintui/paintui.ha b/client/paintui/paintui.ha index ce55bb7..212e16b 100644 --- a/client/paintui/paintui.ha +++ b/client/paintui/paintui.ha @@ -10,12 +10,31 @@ use drawing; use drawing::{pos}; +export const sizes: [_]u8 = [ + 1, 2, 4, 8, 16, 32, 48, 64, 80, 96, 112, 128 +]; + +const colors: [_]u32 = [ + 0xffffff, // white + 0xff4040, // red + 0xff8000, // orange + 0xc0c040, // yellow + 0x00c000, // green + 0x00c0c0, // teal + 0x4040ff, // blue + 0xc000c0, // purple + 0x808080, // grey + 0x000000, // black +]; + export type state = struct { // last known mouse position, in world coordinates last_mouse_pos: pos, // last known mouse pressed-ness - last_mouse_pressed: bool + last_mouse_pressed: bool, + size_idx: size, + color: u32 }; export fn tick( @@ -32,7 +51,23 @@ export fn tick( && (mouse_pos.0 != pstate.last_mouse_pos.0 || mouse_pos.1 != pstate.last_mouse_pos.1 || (!pstate.last_mouse_pressed))) - mouse_pos: drawing::op_circle + drawing::op_circle { + pos = mouse_pos, + radius = sizes[pstate.size_idx], + color = pstate.color, + } else void; }; +export fn mousewheel(pstate: *state, amt: i32) void = { + if (amt < 0 && pstate.size_idx > 0) + pstate.size_idx -= 1 + else if (amt > 0 && pstate.size_idx < len(sizes) - 1) + pstate.size_idx += 1; +}; + +export fn key(pstate: *state, key: uint) void = { + assert(key <= 9, "what what what what what"); + pstate.color = colors[key]; +}; + |