From e1d5dc136e3c6217cd5676fcdf6a68426eed7496 Mon Sep 17 00:00:00 2001 From: Jared Miller Date: Tue, 16 Dec 2025 13:03:52 -0500 Subject: [PATCH] Bind q to zoom-out and quit --- src/sandbox_main.zig | 20 ++++++++++++++++---- src/ui.zig | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/sandbox_main.zig b/src/sandbox_main.zig index 3908c42..941530c 100644 --- a/src/sandbox_main.zig +++ b/src/sandbox_main.zig @@ -326,7 +326,7 @@ pub fn main() !void { } else { // manual controls handleInput(&entities, &rng, &paused); - handleCamera(&zoom, &pan); + if (handleCamera(&zoom, &pan)) break; } // update @@ -468,7 +468,7 @@ fn handleInput(entities: *sandbox.Entities, rng: *std.Random, paused: *bool) voi } } -fn handleCamera(zoom: *f32, pan: *@Vector(2, f32)) void { +fn handleCamera(zoom: *f32, pan: *@Vector(2, f32)) bool { const wheel = rl.getMouseWheelMove(); if (wheel != 0) { @@ -510,11 +510,23 @@ fn handleCamera(zoom: *f32, pan: *@Vector(2, f32)) void { } } - // reset on Return - if (rl.isKeyPressed(.enter)) { + // reset on Return or Enter + if (rl.isKeyPressed(.enter) or rl.isKeyPressed(.kp_enter)) { zoom.* = 1.0; pan.* = @Vector(2, f32){ 0, 0 }; } + + // q: reset zoom if zoomed in, otherwise quit + if (rl.isKeyPressed(.q)) { + if (zoom.* > 1.0) { + zoom.* = 1.0; + pan.* = @Vector(2, f32){ 0, 0 }; + } else { + return true; // signal to quit + } + } + + return false; } fn clampPan(pan: *@Vector(2, f32), zoom: f32) void { diff --git a/src/ui.zig b/src/ui.zig index 0a8115c..9193d90 100644 --- a/src/ui.zig +++ b/src/ui.zig @@ -135,7 +135,7 @@ fn drawControls(font: rl.Font, metrics_bottom: i32) void { "scroll: zoom", "drag: pan (zoomed)", "space: pause, r: reset", - "enter: reset zoom", + "q: zoom out / quit", "tab: toggle ui", };