From 91b851acd6c17a13574750281be891288fc178d2 Mon Sep 17 00:00:00 2001 From: Masashi Date: Wed, 17 Dec 2025 20:07:00 +0530 Subject: [PATCH] ui --- libsuicmez/libsuicmez.c | 25 ++++++++++++++++ libsuicmez/libsuicmez.h | 8 +++++ soup/main.c | 34 +++++++++++++++++++++ soup/main.o | Bin 50712 -> 78448 bytes soup/main.sui | 61 +++++++++++++++++++++++++++++++++++++- src/codegen/transpiler.rs | 33 ++++++++++++++++----- src/typechecker.rs | 51 +++++++++++++++++++++++++++++++ tests/fps_game.o | Bin 0 -> 78456 bytes 8 files changed, 204 insertions(+), 8 deletions(-) create mode 100755 tests/fps_game.o diff --git a/libsuicmez/libsuicmez.c b/libsuicmez/libsuicmez.c index 4f8d5fb..a9f1f9b 100644 --- a/libsuicmez/libsuicmez.c +++ b/libsuicmez/libsuicmez.c @@ -148,6 +148,31 @@ void suic_draw_cube_wires(float x, float y, float z, float width, float height, DrawCubeWires((Vector3){x, y, z}, width, height, length, (Color){r, g, b, a}); } +// 2D Drawing (UI Framework Utils) +void suic_draw_text(const char *text, int x, int y, int font_size, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + DrawText(text, x, y, font_size, (Color){r, g, b, a}); +} + +void suic_draw_rectangle(int x, int y, int width, int height, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + DrawRectangle(x, y, width, height, (Color){r, g, b, a}); +} + +void suic_draw_rectangle_lines(int x, int y, int width, int height, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + DrawRectangleLines(x, y, width, height, (Color){r, g, b, a}); +} + +int suic_measure_text(const char *text, int font_size) { + return MeasureText(text, font_size); +} + +void suic_draw_circle(int center_x, int center_y, float radius, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + DrawCircle(center_x, center_y, radius, (Color){r, g, b, a}); +} + +void suic_draw_line(int start_x, int start_y, int end_x, int end_y, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + DrawLine(start_x, start_y, end_x, end_y, (Color){r, g, b, a}); +} + // Input - Keyboard bool suic_is_key_down(int key) { return IsKeyDown(key); } diff --git a/libsuicmez/libsuicmez.h b/libsuicmez/libsuicmez.h index 94da220..07d6ef9 100644 --- a/libsuicmez/libsuicmez.h +++ b/libsuicmez/libsuicmez.h @@ -128,6 +128,14 @@ void suic_end_mode3d(void); void suic_draw_cube(float x, float y, float z, float width, float height, float length, unsigned char r, unsigned char g, unsigned char b, unsigned char a); void suic_draw_cube_wires(float x, float y, float z, float width, float height, float length, unsigned char r, unsigned char g, unsigned char b, unsigned char a); +// 2D Drawing (UI Framework Utils) +void suic_draw_text(const char *text, int x, int y, int font_size, unsigned char r, unsigned char g, unsigned char b, unsigned char a); +void suic_draw_rectangle(int x, int y, int width, int height, unsigned char r, unsigned char g, unsigned char b, unsigned char a); +void suic_draw_rectangle_lines(int x, int y, int width, int height, unsigned char r, unsigned char g, unsigned char b, unsigned char a); +int suic_measure_text(const char *text, int font_size); +void suic_draw_circle(int center_x, int center_y, float radius, unsigned char r, unsigned char g, unsigned char b, unsigned char a); +void suic_draw_line(int start_x, int start_y, int end_x, int end_y, unsigned char r, unsigned char g, unsigned char b, unsigned char a); + // Input - Keyboard bool suic_is_key_down(int key); bool suic_is_key_pressed(int key); diff --git a/soup/main.c b/soup/main.c index 0b35402..fdd6c5c 100644 --- a/soup/main.c +++ b/soup/main.c @@ -76,6 +76,8 @@ int suic_main(void) { float pitch = 0.000000; float mouse_sensitivity = 0.003000; int fps_meter_visible = 1; + char** inventory = suic_alloc_array(NULL, sizeof(char*), 3, (char*[]){suic_alloc_array(NULL, sizeof(char), 6, "Sword"), suic_alloc_array(NULL, sizeof(char), 7, "Shield"), suic_alloc_array(NULL, sizeof(char), 7, "Potion")}); + bool inventory_open = false; float cube1_x = 0.000000; float cube1_y = 0.000000; float cube1_z = 0.000000; @@ -168,6 +170,15 @@ int suic_main(void) { if ((suic_is_key_pressed(KEY_F3) != 0)) { suic_show_fps_meter((suic_vec2){ .x = 10.000000, .y = 10.000000 }); fps_meter_visible = 1; + } + if ((suic_is_key_pressed(KEY_I) != 0)) { + if (inventory_open) { + inventory_open = false; + suic_disable_cursor(); + } else { + inventory_open = true; + suic_enable_cursor(); + } } camera_x = (player_x + (forward_x * 0.500000)); camera_y = (player_y + 0.900000); @@ -194,6 +205,29 @@ int suic_main(void) { suic_draw_cube_wires(0.000000, 0.000000, 0.000000, 0.800000, 1.600000, 0.800000, 0, 0, 0, 255); suic_rl_pop_matrix(); suic_end_mode3d(); + suic_draw_text(suic_alloc_array(NULL, sizeof(char), 2, "N"), 1260, 20, 20, 255, 255, 255, 255); + suic_draw_line(1270, 40, 1270, 60, 255, 255, 255, 255); + suic_draw_rectangle(1100, 20, 150, 150, 0, 0, 0, 128); + suic_draw_rectangle_lines(1100, 20, 150, 150, 255, 255, 255, 128); + int minimap_center_x = 1175; + int minimap_center_y = 95; + suic_draw_circle(minimap_center_x, minimap_center_y, 3.000000, 255, 255, 0, 128); + if (inventory_open) { + suic_draw_rectangle(200, 100, 400, 300, 0, 0, 0, 200); + suic_draw_text(suic_alloc_array(NULL, sizeof(char), 10, "Inventory"), 220, 120, 24, 255, 255, 255, 255); + suic_draw_text(suic_alloc_array(NULL, sizeof(char), 6, "Sword"), 220, 160, 18, 200, 200, 200, 255); + suic_draw_text(suic_alloc_array(NULL, sizeof(char), 7, "Shield"), 220, 190, 18, 200, 200, 200, 255); + suic_draw_text(suic_alloc_array(NULL, sizeof(char), 7, "Potion"), 220, 220, 18, 200, 200, 200, 255); + suic_draw_text(suic_alloc_array(NULL, sizeof(char), 17, "Press I to close"), 220, 350, 16, 150, 150, 150, 255); + } + suic_draw_rectangle(20, 680, 200, 20, 255, 0, 0, 128); + suic_draw_rectangle(20, 680, 150, 20, 0, 255, 0, 128); + int screen_width = 1280; + int screen_height = 720; + int crosshair_x = (screen_width / 2); + int crosshair_y = (screen_height / 2); + suic_draw_line((crosshair_x - 10), crosshair_y, (crosshair_x + 10), crosshair_y, 255, 255, 255, 255); + suic_draw_line(crosshair_x, (crosshair_y - 10), crosshair_x, (crosshair_y + 10), 255, 255, 255, 255); suic_end_drawing(); } suic_ode_geom_destroy(cube3_geom); diff --git a/soup/main.o b/soup/main.o index 1a3592b35c3db32752d08de1ff8efc9b09cde006..0511bc5c8029eee88f438fd01a740b04736e2a72 100755 GIT binary patch literal 78448 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 XE!SeaKVB*SiFX^$O9L4Kr_TQZi5-_u literal 50712 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 int do # FPS meter toggle let mut fps_meter_visible = 1 + + # Inventory system + let mut inventory = ["Sword", "Shield", "Potion"] # Array of item names + let mut inventory_open = false # Whether inventory UI is open # Cube position variables let mut cube1_x = 0.0 @@ -235,6 +239,17 @@ fn main() -> int do fps_meter_visible = 1 end + # Toggle inventory with I key + if is_key_pressed(KEY_I) != 0 do + if inventory_open do + inventory_open = false + disable_cursor() # Hide cursor when inventory is closed + end else do + inventory_open = true + enable_cursor() # Show cursor when inventory is open + end + end + # Direction vectors are updated above # Camera follows player (at eye position, slightly in front) @@ -280,7 +295,51 @@ fn main() -> int do rl_pop_matrix() end_mode3d() - + + # 2D UI Rendering + # Direction indicator (compass) + draw_text("N", 1260, 20, 20, 255, 255, 255, 255) + draw_line(1270, 40, 1270, 60, 255, 255, 255, 255) # North indicator line + + # Simple minimap (top-right corner) + draw_rectangle(1100, 20, 150, 150, 0, 0, 0, 128) # Semi-transparent background + draw_rectangle_lines(1100, 20, 150, 150, 255, 255, 255, 128) # Border + + # Player position on minimap (center) + let minimap_center_x = 1175 + let minimap_center_y = 95 + draw_circle(minimap_center_x, minimap_center_y, 3.0, 255, 255, 0, 128) # Yellow dot for player + + # Inventory UI (when open) + if inventory_open do + # Semi-transparent background + draw_rectangle(200, 100, 400, 300, 0, 0, 0, 200) + + # Title + draw_text("Inventory", 220, 120, 24, 255, 255, 255, 255) + + # Inventory items (hardcoded for now) + draw_text("Sword", 220, 160, 18, 200, 200, 200, 255) + draw_text("Shield", 220, 190, 18, 200, 200, 200, 255) + draw_text("Potion", 220, 220, 18, 200, 200, 200, 255) + + # Instructions + draw_text("Press I to close", 220, 350, 16, 150, 150, 150, 255) + end + + # HUD elements (always visible) + # Health bar + draw_rectangle(20, 680, 200, 20, 255, 0, 0, 128) # Red background + draw_rectangle(20, 680, 150, 20, 0, 255, 0, 128) # Green fill (75% health) + + # Crosshair + let screen_width = 1280 + let screen_height = 720 + let crosshair_x = screen_width / 2 + let crosshair_y = screen_height / 2 + draw_line(crosshair_x - 10, crosshair_y, crosshair_x + 10, crosshair_y, 255, 255, 255, 255) + draw_line(crosshair_x, crosshair_y - 10, crosshair_x, crosshair_y + 10, 255, 255, 255, 255) + end_drawing() end diff --git a/src/codegen/transpiler.rs b/src/codegen/transpiler.rs index d27b389..eed43eb 100644 --- a/src/codegen/transpiler.rs +++ b/src/codegen/transpiler.rs @@ -637,6 +637,13 @@ impl Transpiler { "rl_pop_matrix" => "suic_rl_pop_matrix", "rl_translate_f" => "suic_rl_translate_f", "rl_rotate_f" => "suic_rl_rotate_f", + // UI Framework Utils + "draw_text" => "suic_draw_text", + "draw_rectangle" => "suic_draw_rectangle", + "draw_rectangle_lines" => "suic_draw_rectangle_lines", + "measure_text" => "suic_measure_text", + "draw_circle" => "suic_draw_circle", + "draw_line" => "suic_draw_line", // Player controller functions "player_controller_create" => "suic_player_controller_create", "player_controller_destroy" => "suic_player_controller_destroy", @@ -779,13 +786,25 @@ impl Transpiler { .iter() .map(|expr| self.generate_expr(expr)) .collect(); - // Generate heap-allocated array using helper function - // Use NULL for TypeInfo since arrays of primitives don't contain pointers - format!( - "suic_alloc_array(NULL, sizeof(int), {}, (int[]){{{}}})", - vec.len(), - vec.join(", ") - ) + + // Check if this is a string array (all elements are string allocations) + let is_string_array = vec.iter().all(|elem| elem.starts_with("suic_alloc_array(NULL, sizeof(char), ")); + + if is_string_array { + // String array: use char* elements + format!( + "suic_alloc_array(NULL, sizeof(char*), {}, (char*[]){{{}}})", + vec.len(), + vec.join(", ") + ) + } else { + // Regular primitive array + format!( + "suic_alloc_array(NULL, sizeof(int), {}, (int[]){{{}}})", + vec.len(), + vec.join(", ") + ) + } } } CExpr::Assign(lhs, rhs) => { diff --git a/src/typechecker.rs b/src/typechecker.rs index 5170fa8..2e4b122 100644 --- a/src/typechecker.rs +++ b/src/typechecker.rs @@ -743,6 +743,7 @@ impl TypeChecker { "KEY_A", "KEY_S", "KEY_D", + "KEY_I", "KEY_SPACE", "KEY_LEFT_SHIFT", "KEY_EQUAL", @@ -1210,6 +1211,56 @@ impl TypeChecker { }, ); + // ===== UI FRAMEWORK UTILS ===== + self.env.functions.insert( + "draw_text".to_string(), + FunctionType { + type_params: vec![], + params: vec![Type::String, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int], // text, x, y, font_size, r, g, b, a + return_type: Type::Unit, + }, + ); + self.env.functions.insert( + "draw_rectangle".to_string(), + FunctionType { + type_params: vec![], + params: vec![Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int], // x, y, width, height, r, g, b, a + return_type: Type::Unit, + }, + ); + self.env.functions.insert( + "draw_rectangle_lines".to_string(), + FunctionType { + type_params: vec![], + params: vec![Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int], // x, y, width, height, r, g, b, a + return_type: Type::Unit, + }, + ); + self.env.functions.insert( + "measure_text".to_string(), + FunctionType { + type_params: vec![], + params: vec![Type::String, Type::Int], // text, font_size + return_type: Type::Int, + }, + ); + self.env.functions.insert( + "draw_circle".to_string(), + FunctionType { + type_params: vec![], + params: vec![Type::Int, Type::Int, Type::Float, Type::Int, Type::Int, Type::Int, Type::Int], // center_x, center_y, radius, r, g, b, a + return_type: Type::Unit, + }, + ); + self.env.functions.insert( + "draw_line".to_string(), + FunctionType { + type_params: vec![], + params: vec![Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int, Type::Int], // start_x, start_y, end_x, end_y, r, g, b, a + return_type: Type::Unit, + }, + ); + // ===== UUID GENERATION API ===== self.env.functions.insert( "uuid_generate_v4".to_string(), diff --git a/tests/fps_game.o b/tests/fps_game.o new file mode 100755 index 0000000000000000000000000000000000000000..2b4cb7592642675777cefa4bb1450a05202a4540 GIT binary patch literal 78456 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%0Ay;QmA3X*-;4CJV^qj>+ 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