diff --git a/artwork/steam/devlog.png b/artwork/steam/devlog.png index 20778f64..e9a0ca81 100644 Binary files a/artwork/steam/devlog.png and b/artwork/steam/devlog.png differ diff --git a/artwork/steam/devlog.psd b/artwork/steam/devlog.psd index f4f962e3..f2aaa9b4 100644 --- a/artwork/steam/devlog.psd +++ b/artwork/steam/devlog.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4846f685f3e242444706e1f295347f6c6205984edff75ddf32fbb5a7d497c598 -size 215617 +oid sha256:ff5ce5977b343577cc189f1e32cf16e6ecd36e8c97be40877199d546fdbeae17 +size 211969 diff --git a/src/js/changelog.js b/src/js/changelog.js index 26e30216..2dac1e6c 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -10,7 +10,7 @@ export const CHANGELOG = [ "Added keybinding to close menus (by isaisstillalive / Sandwichs-del)", "Fix rare crash regarding the buildings toolbar (by isaisstillalive)", "Fixed some phrases (By EnderDoom77)", - + "Zoom towards mouse cursor (by Dimava)", "Updated the soundtrack again, it is now 20 minutes in total!", "Updated and added new translations (Thanks to all contributors!)", ], diff --git a/src/js/game/camera.js b/src/js/game/camera.js index 2caeb863..ab73fc83 100644 --- a/src/js/game/camera.js +++ b/src/js/game/camera.js @@ -500,6 +500,7 @@ export class Camera extends BasicSerializableObject { event.preventDefault(); // event.stopPropagation(); } + const prevZoom = this.zoomLevel; const delta = Math.sign(event.deltaY) * -0.15 * this.root.app.settings.getScrollWheelSensitivity(); assert(Number.isFinite(delta), "Got invalid delta in mouse wheel event: " + event.deltaY); @@ -509,6 +510,16 @@ export class Camera extends BasicSerializableObject { this.clampZoomLevel(); this.desiredZoom = null; + + const mousePosition = this.root.app.mousePosition; + if (mousePosition) { + const worldPos = this.root.camera.screenToWorld(mousePosition); + const worldDelta = worldPos.sub(this.center); + const actualDelta = this.zoomLevel / prevZoom - 1; + this.center = this.center.add(worldDelta.multiplyScalar(actualDelta)); + this.desiredCenter = null; + } + return false; }