sokoban-v2/src/app.zig
2026-07-06 16:40:24 +03:00

68 lines
1.7 KiB
Zig

const std = @import("std");
const CLI = @import("./cli.zig");
const Platform = @import("./platform.zig");
const log = std.log.scoped(.app);
const App = @This();
bg: Platform.Color,
show_first_window: bool,
check: bool,
player_x: f32,
pub fn init(self: *App, plt: Platform.Init) !?u8 {
self.* = App{
.bg = .black,
.player_x = 0,
.show_first_window = true,
.check = false,
};
_ = plt; // autofix
return null;
}
pub fn frame(self: *App, plt: *Platform.Frame) !void {
const gfx = plt.gfx;
gfx.drawRectangle(.init(self.player_x + 100, 100), .init(100, 100), .rgb(200, 0, 0));
if (plt.imgui) |imgui| {
if (imgui.beginWindow(.{
.name = "Hello",
.size = .init(400, 200),
.open = &self.show_first_window
})) {
defer imgui.endWindow();
imgui.text("Hello", .{});
if (imgui.button("foo")) {
std.debug.print("pressed\n", .{});
}
if (imgui.slider(.{
.label = "player x",
.value = &self.player_x,
.min = 0,
.max = 100
})) {
std.debug.print("player x changed\n", .{});
}
if (imgui.checkbox("Hello", &self.check)) {
std.debug.print("checkbox changed\n", .{});
}
imgui.separator();
if (imgui.colorEdit(.{
.label = "Color",
.value = &self.bg,
})) {
std.debug.print("color changed\n", .{});
}
}
}
gfx.clear_color = self.bg;
}
pub fn deinit(self: *App) void {
_ = self; // autofix
}