diff --git a/build.zig b/build.zig index ee83c73..76f7a6a 100644 --- a/build.zig +++ b/build.zig @@ -19,6 +19,7 @@ pub fn build(b: *std.build.Builder) void { exe.linkLibrary(ray); exe.addIncludeDir("3rdparty/raylib/src"); exe.addIncludeDir("3rdparty/raygui/src"); + exe.addIncludeDir("3rdparty/raygui/examples"); exe.addCSourceFile("src/raylib.c", &[_][]u8{}); exe.setBuildMode(mode); diff --git a/src/main.zig b/src/main.zig index ae9d2d2..9b4a4bc 100644 --- a/src/main.zig +++ b/src/main.zig @@ -2,21 +2,36 @@ const std = @import("std"); const r = @import("raylib.zig"); pub fn main() anyerror!void { - std.log.info("All your codebase are belong to us.", .{}); - - r.InitWindow(800, 450, "ray [core] example - basic window"); + r.InitWindow(800, 450, "doggo"); defer r.CloseWindow(); + // var selected_filename: [512]u8 = undefined; + var file_dialog_state = r.InitGuiFileDialog(420, 310, r.GetWorkingDirectory(), false); + while (!r.WindowShouldClose()) { + // Update + if (file_dialog_state.SelectFilePressed) { + std.log.info("{s} / {s}", .{ file_dialog_state.dirPathText, file_dialog_state.fileNameText }); + } + + // Draw r.BeginDrawing(); defer r.EndDrawing(); r.ClearBackground(r.RAYWHITE); r.DrawText("Congrats! You created your first window!", 190, 200, 20, r.LIGHTGRAY); + if (file_dialog_state.fileDialogActive) { + r.GuiLock(); + } + if (r.GuiButton(r.Rectangle{ .x = 190, .y = 250, .width = 150, .height = 30 }, "Button")) { std.log.info("Button pressed", .{}); + file_dialog_state.fileDialogActive = true; } + r.GuiUnlock(); + + r.GuiFileDialog(&file_dialog_state); } } diff --git a/src/raylib.c b/src/raylib.c index bec96f3..0dec298 100644 --- a/src/raylib.c +++ b/src/raylib.c @@ -1,2 +1,6 @@ #define RAYGUI_IMPLEMENTATION #include +#undef RAYGUI_IMPLEMENTATION // Avoid including raygui implementation again + +#define GUI_FILE_DIALOG_IMPLEMENTATION +#include diff --git a/src/raylib.zig b/src/raylib.zig index c737a91..78660e4 100644 --- a/src/raylib.zig +++ b/src/raylib.zig @@ -1,4 +1,5 @@ pub usingnamespace @cImport({ @cInclude("raylib.h"); @cInclude("raygui.h"); + @cInclude("custom_file_dialog/gui_file_dialog.h"); });