mirror of
https://github.com/PixelGuys/Cubyz.git
synced 2025-08-03 03:06:55 -04:00
63 lines
1.8 KiB
Zig
63 lines
1.8 KiB
Zig
const std = @import("std");
|
|
|
|
const main = @import("main");
|
|
const Vec2f = main.vec.Vec2f;
|
|
|
|
const gui = @import("../gui.zig");
|
|
const GuiComponent = gui.GuiComponent;
|
|
const GuiWindow = gui.GuiWindow;
|
|
const Button = @import("../components/Button.zig");
|
|
const Label = @import("../components/Label.zig");
|
|
const VerticalList = @import("../components/VerticalList.zig");
|
|
|
|
pub var window = GuiWindow{
|
|
.contentSize = Vec2f{128, 256},
|
|
};
|
|
|
|
const padding: f32 = 8;
|
|
|
|
var deleteWorldName: []const u8 = "";
|
|
|
|
pub fn init() void {
|
|
deleteWorldName = "";
|
|
}
|
|
|
|
pub fn deinit() void {
|
|
main.globalAllocator.free(deleteWorldName);
|
|
}
|
|
|
|
pub fn setDeleteWorldName(name: []const u8) void {
|
|
main.globalAllocator.free(deleteWorldName);
|
|
deleteWorldName = main.globalAllocator.dupe(u8, name);
|
|
}
|
|
|
|
fn flawedDeleteWorld(name: []const u8) !void {
|
|
try main.files.deleteDir("saves", name);
|
|
gui.windowlist.save_selection.needsUpdate = true;
|
|
}
|
|
|
|
fn deleteWorld(_: usize) void {
|
|
flawedDeleteWorld(deleteWorldName) catch |err| {
|
|
std.log.err("Encountered error while deleting world \"{s}\": {s}", .{deleteWorldName, @errorName(err)});
|
|
};
|
|
gui.closeWindowFromRef(&window);
|
|
}
|
|
|
|
pub fn onOpen() void {
|
|
const list = VerticalList.init(.{padding, 16 + padding}, 300, 16);
|
|
const text = std.fmt.allocPrint(main.stackAllocator.allocator, "Are you sure you want to delete the world **{s}**", .{deleteWorldName}) catch unreachable;
|
|
defer main.stackAllocator.free(text);
|
|
list.add(Label.init(.{0, 0}, 128, text, .center));
|
|
list.add(Button.initText(.{0, 0}, 128, "Yes", .{.callback = &deleteWorld}));
|
|
list.finish(.center);
|
|
window.rootComponent = list.toComponent();
|
|
window.contentSize = window.rootComponent.?.pos() + window.rootComponent.?.size() + @as(Vec2f, @splat(padding));
|
|
gui.updateWindowPositions();
|
|
}
|
|
|
|
pub fn onClose() void {
|
|
if(window.rootComponent) |*comp| {
|
|
comp.deinit();
|
|
}
|
|
}
|