From: Brendan Hansen Date: Tue, 8 Feb 2022 14:53:06 +0000 (-0600) Subject: cleaned up enum editor code X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=404bb4948c93991a26869b6c40dd975497cafb47;p=bar-game.git cleaned up enum editor code --- diff --git a/src/entity/editor.onyx b/src/entity/editor.onyx index efedda2..3cdb998 100644 --- a/src/entity/editor.onyx +++ b/src/entity/editor.onyx @@ -313,10 +313,17 @@ editor_draw :: () { y += 20; checkbox_value := (value & it.value) != 0; if draw_checkbox(.{x, y, w, 20}, ^checkbox_value, it.name, increment=~~y) { - println(checkbox_value); - - if !checkbox_value do *cast(^u32) v.data = ~~(value & ~it.value); - else do *cast(^u32) v.data = ~~(value | it.value); + switch enum_info.backing_type { + case i8, u8 do set_value(u8); + case i16, u16 do set_value(u16); + case i32, u32 do set_value(u32); + case i64, u64 do set_value(u64); + } + + set_value :: macro (T: type_expr) { + if !checkbox_value do *cast(^T) v.data = ~~(value & ~it.value); + else do *cast(^T) v.data = ~~(value | it.value); + } } } } else {