diff --git a/README.md b/README.md index 45e1b97..bcacdf8 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,48 @@ pub fn render(ctx: App.scheduler.Context) !void { } ``` +**Simple Events** +``` zig +// --- SEND MANY EVENTS --- +try app.events.sendMany(&.{ + event.AppExit{ + .reason = "Yes", + }, +}); + +// --- MAIN GAME LOOP --- +while (true) { + // --- USE AND EAT EVENT --- + if (app.events.consume(event.AppExit)) |app_exit| { + std.debug.print("Exit Reason: {s}\n", .{ + app_exit.reason, + }); + break; + } +} +``` + +**Event Queue** +``` zig +const Register = struct { + username: []const u8, +}; + +// --- QUEUE --- +if (app.events.get(event.Register)) |queue| { + // --- GET EVERY EVENT --- + for (queue.items()) |register| { + // --- DEBUG --- + std.debug.print("New Register: Username(s)\n", .{ + register.username + }); + // ... + } + // --- CLEAR EVENT QUEUE --- + queue.clear(); +} +``` + **Simple** ``` zig test "Main" { diff --git a/src/app.zig b/src/app.zig index 0ff226b..4b89132 100644 --- a/src/app.zig +++ b/src/app.zig @@ -101,6 +101,24 @@ test "Main" { var app: Self = .init(std.testing.allocator); defer app.deinit(); + // --- SEND MANY EVENTS --- + try app.events.sendMany(&.{ + event.AppExit{ + .reason = "Yes", + }, + }); + + // --- MAIN GAME LOOP --- + while (true) { + // --- USE AND EAT EVENT --- + if (app.events.consume(event.AppExit)) |app_exit| { + std.debug.print("| {s}\n", .{ + app_exit.reason, + }); + break; + } + } + { // PLUGINS // --- ADD PLUGINS --- try app.plugins.addMany(&.{ diff --git a/src/event/root.zig b/src/event/root.zig index cde2ca7..eefcc8f 100644 --- a/src/event/root.zig +++ b/src/event/root.zig @@ -1,3 +1,5 @@ pub const Event = @import("event.zig"); pub const Storage = @import("storage.zig"); pub const Queue = @import("queue.zig").Queue; + +pub const AppExit = struct { reason: []const u8 = "" };