This commit is contained in:
Hanusiak Piotr 2021-12-07 13:18:36 +01:00
parent b00d24dbf7
commit 29ccb52c93
3 changed files with 20 additions and 12 deletions

View file

@ -32,13 +32,12 @@ export class CameraManager extends Phaser.Events.EventEmitter {
this.initCamera(); this.initCamera();
this.scene.game.events.on("wa-scale-manager:refresh-focus-on-target", () => { this.bindEventHandlers();
const focusOn = this.waScaleManager.getFocusTarget();
if (!focusOn) {
return;
} }
this.camera.centerOn(focusOn.x + focusOn.width * 0.5, focusOn.y + focusOn.height * 0.5);
}); public destroy(): void {
this.scene.game.events.off("wa-scale-manager:refresh-focus-on-target");
super.destroy();
} }
public getCamera(): Phaser.Cameras.Scene2D.Camera { public getCamera(): Phaser.Cameras.Scene2D.Camera {
@ -128,4 +127,16 @@ export class CameraManager extends Phaser.Events.EventEmitter {
this.camera = this.scene.cameras.main; this.camera = this.scene.cameras.main;
this.camera.setBounds(0, 0, this.cameraBounds.x, this.cameraBounds.y); this.camera.setBounds(0, 0, this.cameraBounds.x, this.cameraBounds.y);
} }
private bindEventHandlers(): void {
this.scene.game.events.on(
"wa-scale-manager:refresh-focus-on-target",
(focusOn: { x: number; y: number; width: number; height: number }) => {
if (!focusOn) {
return;
}
this.camera.centerOn(focusOn.x + focusOn.width * 0.5, focusOn.y + focusOn.height * 0.5);
}
);
}
} }

View file

@ -1410,6 +1410,7 @@ ${escapedMessage}
this.userInputManager.destroy(); this.userInputManager.destroy();
this.pinchManager?.destroy(); this.pinchManager?.destroy();
this.emoteManager.destroy(); this.emoteManager.destroy();
this.cameraManager.destroy();
this.peerStoreUnsubscribe(); this.peerStoreUnsubscribe();
this.emoteUnsubscribe(); this.emoteUnsubscribe();
this.emoteMenuUnsubscribe(); this.emoteMenuUnsubscribe();

View file

@ -65,17 +65,13 @@ export class WaScaleManager {
return; return;
} }
this.zoomModifier = this.getTargetZoomModifierFor(this.focusTarget.width, this.focusTarget.height); this.zoomModifier = this.getTargetZoomModifierFor(this.focusTarget.width, this.focusTarget.height);
this.game.events.emit("wa-scale-manager:refresh-focus-on-target"); this.game.events.emit("wa-scale-manager:refresh-focus-on-target", this.focusTarget);
} }
public setFocusTarget(targetDimensions?: { x: number; y: number; width: number; height: number }): void { public setFocusTarget(targetDimensions?: { x: number; y: number; width: number; height: number }): void {
this.focusTarget = targetDimensions; this.focusTarget = targetDimensions;
} }
public getFocusTarget(): { x: number; y: number; width: number; height: number } | undefined {
return this.focusTarget;
}
public getTargetZoomModifierFor(viewportWidth: number, viewportHeight: number) { public getTargetZoomModifierFor(viewportWidth: number, viewportHeight: number) {
const { width: gameWidth, height: gameHeight } = coWebsiteManager.getGameSize(); const { width: gameWidth, height: gameHeight } = coWebsiteManager.getGameSize();
const devicePixelRatio = window.devicePixelRatio ?? 1; const devicePixelRatio = window.devicePixelRatio ?? 1;