From 3d6696832af949934d6a00da013d051b85064b08 Mon Sep 17 00:00:00 2001 From: Ased Mammad Date: Fri, 29 Sep 2023 20:45:34 +0330 Subject: [PATCH] Add ability to pan camera using keyboard --- src/boomer.nim | 8 ++++++++ src/config.nim | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/src/boomer.nim b/src/boomer.nim index c250ffc..311a1cd 100644 --- a/src/boomer.nim +++ b/src/boomer.nim @@ -487,6 +487,14 @@ proc main() = case key of XK_EQUAL: scrollUp() of XK_MINUS: scrollDown() + of XK_h, XK_Left: + camera.position.x = camera.position.x - config.camera_speed + of XK_j, XK_Down: + camera.position.y = camera.position.y + config.camera_speed + of XK_k, XK_Up: + camera.position.y = camera.position.y - config.camera_speed + of XK_l, XK_Right: + camera.position.x = camera.position.x + config.camera_speed of XK_0: camera.scale = 1.0 camera.deltaScale = 0.0 diff --git a/src/config.nim b/src/config.nim index ee4d913..fcc282e 100644 --- a/src/config.nim +++ b/src/config.nim @@ -5,12 +5,14 @@ type Config* = object scroll_speed*: float drag_friction*: float scale_friction*: float + camera_speed*: float const defaultConfig* = Config( min_scale: 0.01, scroll_speed: 1.5, drag_friction: 6.0, scale_friction: 4.0, + camera_speed: 20.0, ) proc loadConfig*(filePath: string): Config = @@ -31,6 +33,8 @@ proc loadConfig*(filePath: string): Config = result.drag_friction = parseFloat(value) of "scale_friction": result.scale_friction = parseFloat(value) + of "camera_speed": + result.camera_speed = parseFloat(value) else: quit "Unknown config key `$#`" % [key] @@ -41,3 +45,4 @@ proc generateDefaultConfig*(filePath: string) = f.write("scroll_speed = ", defaultConfig.scroll_speed, "\n") f.write("drag_friction = ", defaultConfig.drag_friction, "\n") f.write("scale_friction = ", defaultConfig.scale_friction, "\n") + f.write("camera_speed = ", defaultConfig.camera_speed, "\n")