Bind q to zoom-out and quit

This commit is contained in:
Jared Miller 2025-12-16 13:03:52 -05:00
parent 3e2e39100a
commit e1d5dc136e
2 changed files with 17 additions and 5 deletions

View file

@ -326,7 +326,7 @@ pub fn main() !void {
} else { } else {
// manual controls // manual controls
handleInput(&entities, &rng, &paused); handleInput(&entities, &rng, &paused);
handleCamera(&zoom, &pan); if (handleCamera(&zoom, &pan)) break;
} }
// update // 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(); const wheel = rl.getMouseWheelMove();
if (wheel != 0) { if (wheel != 0) {
@ -510,11 +510,23 @@ fn handleCamera(zoom: *f32, pan: *@Vector(2, f32)) void {
} }
} }
// reset on Return // reset on Return or Enter
if (rl.isKeyPressed(.enter)) { if (rl.isKeyPressed(.enter) or rl.isKeyPressed(.kp_enter)) {
zoom.* = 1.0; zoom.* = 1.0;
pan.* = @Vector(2, f32){ 0, 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 { fn clampPan(pan: *@Vector(2, f32), zoom: f32) void {

View file

@ -135,7 +135,7 @@ fn drawControls(font: rl.Font, metrics_bottom: i32) void {
"scroll: zoom", "scroll: zoom",
"drag: pan (zoomed)", "drag: pan (zoomed)",
"space: pause, r: reset", "space: pause, r: reset",
"enter: reset zoom", "q: zoom out / quit",
"tab: toggle ui", "tab: toggle ui",
}; };