mirror of
https://github.com/PixelGuys/Cubyz.git
synced 2025-08-03 19:28:49 -04:00
Add a secret option that allows skipping the menu and automatically entering a world.
This commit is contained in:
parent
7d4d110b03
commit
4327a50c5e
@ -24,9 +24,7 @@ const padding: f32 = 8;
|
||||
const width: f32 = 128;
|
||||
var buttonNameArena: std.heap.ArenaAllocator = undefined;
|
||||
|
||||
fn openWorld(namePtr: usize) void {
|
||||
const nullTerminatedName: [*:0]const u8 = @ptrFromInt(namePtr);
|
||||
const name = std.mem.span(nullTerminatedName);
|
||||
pub fn openWorld(name: []const u8) void {
|
||||
std.log.info("TODO: Open world {s}", .{name});
|
||||
main.server.thread = std.Thread.spawn(.{}, main.server.start, .{name}) catch |err| {
|
||||
std.log.err("Encountered error while starting server thread: {s}", .{@errorName(err)});
|
||||
@ -60,6 +58,12 @@ fn openWorld(namePtr: usize) void {
|
||||
// } catch(InterruptedException e) {}
|
||||
}
|
||||
|
||||
fn openWorldWrap(namePtr: usize) void { // TODO: Improve this situation. Maybe it makes sense to always use 2 arguments in the Callback.
|
||||
const nullTerminatedName: [*:0]const u8 = @ptrFromInt(namePtr);
|
||||
const name = std.mem.span(nullTerminatedName);
|
||||
openWorld(name);
|
||||
}
|
||||
|
||||
fn flawedDeleteWorld(name: []const u8) !void {
|
||||
var saveDir = try std.fs.cwd().openDir("saves", .{});
|
||||
defer saveDir.close();
|
||||
@ -128,7 +132,7 @@ pub fn onOpen() Allocator.Error!void {
|
||||
const name = try buttonNameArena.allocator().dupeZ(u8, entry.name); // Null terminate, so we can later recover the string from just the pointer.
|
||||
const buttonName = try std.fmt.allocPrint(buttonNameArena.allocator(), "Play {s}", .{decodedName});
|
||||
|
||||
try row.add(try Button.initText(.{0, 0}, 128, buttonName, .{.callback = &openWorld, .arg = @intFromPtr(name.ptr)}));
|
||||
try row.add(try Button.initText(.{0, 0}, 128, buttonName, .{.callback = &openWorldWrap, .arg = @intFromPtr(name.ptr)}));
|
||||
try row.add(try Button.initText(.{8, 0}, 64, "delete", .{.callback = &deleteWorld, .arg = @intFromPtr(name.ptr)}));
|
||||
row.finish(.{0, 0}, .center);
|
||||
try list.add(row);
|
||||
|
@ -718,6 +718,11 @@ pub fn main() !void {
|
||||
Window.GLFWCallbacks.framebufferSize(undefined, Window.width, Window.height);
|
||||
var lastTime = std.time.nanoTimestamp();
|
||||
|
||||
if(settings.developerAutoEnterWorld.len != 0) {
|
||||
// Speed up the dev process by entering the world directly.
|
||||
gui.windowlist.save_selection.openWorld(settings.developerAutoEnterWorld);
|
||||
}
|
||||
|
||||
while(c.glfwWindowShouldClose(Window.window) == 0) {
|
||||
{ // Check opengl errors:
|
||||
const err = c.glGetError();
|
||||
|
@ -38,6 +38,9 @@ pub var guiScale: ?f32 = null;
|
||||
pub var musicVolume: f32 = 1;
|
||||
|
||||
|
||||
pub var developerAutoEnterWorld: []const u8 = "";
|
||||
|
||||
|
||||
pub fn init() !void {
|
||||
const json: JsonElement = main.files.readToJson(main.threadAllocator, "settings.json") catch |err| blk: {
|
||||
if(err == error.FileNotFound) break :blk JsonElement{.JsonNull={}};
|
||||
|
Loading…
x
Reference in New Issue
Block a user