From d0cd7b08067024941907af7711abc6cb6100d318 Mon Sep 17 00:00:00 2001 From: Hanusiak Piotr Date: Thu, 2 Dec 2021 13:41:52 +0100 Subject: [PATCH] locking zooming via player input --- front/src/Phaser/Game/CameraManager.ts | 8 +++++++- front/src/Phaser/Game/GameScene.ts | 3 +++ front/src/Phaser/Services/WaScaleManager.ts | 10 ++++++++++ maps/starter/map.json | 12 ++++++------ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/front/src/Phaser/Game/CameraManager.ts b/front/src/Phaser/Game/CameraManager.ts index 595867be..e900a059 100644 --- a/front/src/Phaser/Game/CameraManager.ts +++ b/front/src/Phaser/Game/CameraManager.ts @@ -28,7 +28,11 @@ export class CameraManager extends Phaser.Events.EventEmitter { return this.camera; } - public changeCameraFocus(focusOn: { x: number, y: number, width: number, height: number }, duration: number = 1000): void { + public changeCameraFocus( + focusOn: { x: number, y: number, width: number, height: number }, duration: number = 1000, + ): void { + this.waScaleManager.saveZoom(); + this.waScaleManager.lockZoomingViaPlayerInput(); const maxZoomModifier = 2.84; // How to get max zoom value? const currentZoomModifier = this.waScaleManager.zoomModifier; const zoomModifierChange = maxZoomModifier - currentZoomModifier; @@ -43,6 +47,8 @@ export class CameraManager extends Phaser.Events.EventEmitter { } public startFollow(target: object | Phaser.GameObjects.GameObject): void { + this.waScaleManager.lockZoomingViaPlayerInput(false); + this.waScaleManager.restoreZoom(); this.camera.startFollow(target, true); } diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index d596fa56..4afd0383 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -1954,6 +1954,9 @@ ${escapedMessage} } zoomByFactor(zoomFactor: number) { + if (waScaleManager.isZoomingViaPlayerInputLocked()) { + return; + } waScaleManager.zoomModifier *= zoomFactor; biggestAvailableAreaStore.recompute(); } diff --git a/front/src/Phaser/Services/WaScaleManager.ts b/front/src/Phaser/Services/WaScaleManager.ts index 3fb1d29b..f8aeba2d 100644 --- a/front/src/Phaser/Services/WaScaleManager.ts +++ b/front/src/Phaser/Services/WaScaleManager.ts @@ -12,6 +12,8 @@ export class WaScaleManager { private actualZoom: number = 1; private _saveZoom: number = 1; + private zoomingViaPlayerInputLocked: boolean = false; + public constructor(private minGamePixelsNumber: number, private absoluteMinPixelNumber: number) { this.hdpiManager = new HdpiManager(minGamePixelsNumber, absoluteMinPixelNumber); } @@ -21,6 +23,14 @@ export class WaScaleManager { this.game = game; } + public isZoomingViaPlayerInputLocked(): boolean { + return this.zoomingViaPlayerInputLocked; + } + + public lockZoomingViaPlayerInput(lock: boolean = true): void { + this.zoomingViaPlayerInputLocked = lock; + } + public applyNewSize() { const { width, height } = coWebsiteManager.getGameSize(); diff --git a/maps/starter/map.json b/maps/starter/map.json index 2ef0516d..2627a79e 100644 --- a/maps/starter/map.json +++ b/maps/starter/map.json @@ -172,14 +172,14 @@ "y":96 }, { - "height":64, + "height":352, "id":11, - "name":"coffeeZone", + "name":"meetingZone", "properties":[ { "name":"display_name", "type":"string", - "value":"Coffee Time!" + "value":"Brainstorm Zone!" }, { "name":"focusable", @@ -189,9 +189,9 @@ "rotation":0, "type":"zone", "visible":true, - "width":64, - "x":64, - "y":288 + "width":224, + "x":736, + "y":96 }], "opacity":1, "type":"objectgroup",