Fix crash when deleting world in the world selection screen.

fixes #486
This commit is contained in:
IntegratedQuantum 2024-06-24 22:22:05 +02:00
parent 5340317043
commit e48f0d2fdb

View File

@ -23,6 +23,8 @@ const padding: f32 = 8;
const width: f32 = 128; const width: f32 = 128;
var buttonNameArena: main.utils.NeverFailingArenaAllocator = undefined; var buttonNameArena: main.utils.NeverFailingArenaAllocator = undefined;
var needsUpdate: bool = false;
pub fn openWorld(name: []const u8) void { pub fn openWorld(name: []const u8) void {
std.log.info("Opening world {s}", .{name}); std.log.info("Opening world {s}", .{name});
main.server.thread = std.Thread.spawn(.{}, main.server.start, .{name}) catch |err| { main.server.thread = std.Thread.spawn(.{}, main.server.start, .{name}) catch |err| {
@ -53,8 +55,7 @@ fn openWorldWrap(namePtr: usize) void { // TODO: Improve this situation. Maybe i
fn flawedDeleteWorld(name: []const u8) !void { fn flawedDeleteWorld(name: []const u8) !void {
try main.files.deleteDir("saves", name); try main.files.deleteDir("saves", name);
onClose(); needsUpdate = true;
onOpen();
} }
fn deleteWorld(namePtr: usize) void { fn deleteWorld(namePtr: usize) void {
@ -92,6 +93,14 @@ fn parseEscapedFolderName(allocator: NeverFailingAllocator, name: []const u8) []
return result.toOwnedSlice(); return result.toOwnedSlice();
} }
pub fn update() void {
if(needsUpdate) {
needsUpdate = false;
onClose();
onOpen();
}
}
pub fn onOpen() void { pub fn onOpen() void {
buttonNameArena = main.utils.NeverFailingArenaAllocator.init(main.globalAllocator); buttonNameArena = main.utils.NeverFailingArenaAllocator.init(main.globalAllocator);
const list = VerticalList.init(.{padding, 16 + padding}, 300, 8); const list = VerticalList.init(.{padding, 16 + padding}, 300, 8);