diff --git a/res/config.ini b/res/config.ini index d4ac8be..6dce45a 100644 --- a/res/config.ini +++ b/res/config.ini @@ -25,6 +25,7 @@ allow_empty_password = true # colormix -> Color mixing shader # gameoflife -> John Conway's Game of Life # dur_file -> .dur file format (https://github.com/cmang/durdraw/tree/master) +# bonsai -> Procedurally-generated ASCII bonsai tree (port of cbonsai) animation = none # Delay between each animation frame in milliseconds diff --git a/src/enums.zig b/src/enums.zig index 47771da..a3ff204 100644 --- a/src/enums.zig +++ b/src/enums.zig @@ -7,6 +7,7 @@ pub const Animation = enum { colormix, gameoflife, dur_file, + bonsai, }; pub const DisplayServer = enum { diff --git a/src/main.zig b/src/main.zig index 35239d7..3333271 100644 --- a/src/main.zig +++ b/src/main.zig @@ -23,6 +23,7 @@ const IniParser = ly_core.IniParser; const ini = ly_core.ini; const Ini = ini.Ini; +const Bonsai = @import("animations/Bonsai.zig"); const Cascade = @import("animations/Cascade.zig"); const ColorMix = @import("animations/ColorMix.zig"); const Doom = @import("animations/Doom.zig"); @@ -1089,6 +1090,27 @@ pub fn main(init: std.process.Init) !void { ); animation = dur.widget(); }, + .bonsai => { + var bonsai = try Bonsai.init( + state.allocator, + &state.buffer, + state.config.bonsai_base_type, + state.config.bonsai_life, + state.config.bonsai_multiplier, + state.config.bonsai_leaves, + state.config.bonsai_leaf_dark, + state.config.bonsai_leaf_bright, + state.config.bonsai_wood_dark, + state.config.bonsai_wood_bright, + state.config.bonsai_text_color, + state.config.bonsai_step_ms, + state.config.bonsai_finish_pause_ms, + &state.animate, + state.config.animation_timeout_sec, + state.config.animation_frame_delay, + ); + animation = bonsai.widget(); + }, } defer if (animation) |a| a.deinit();