From 3420d0e6f8af6f2dd8695ea61231aa93944c602b Mon Sep 17 00:00:00 2001 From: Jochum van der Ploeg Date: Sun, 15 Oct 2023 21:34:21 +0200 Subject: [PATCH] fix(flame): Export `FixedResolutionViewport` and make `withFixedResolution` a redirect constructor (#2817) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The CameraComponent.withFixedResolution was a factory but can easily be a redirect constructor, allowing developers to use it when they extend the CameraComponent. On top of that the FixedResolutionViewport was not being exported so if a developer wanted to have a custom camera with a FixedResolutionViewport there was no way to do so unless they imported from src/ or copied the code, both are bad practices 😄 --- packages/flame/lib/camera.dart | 2 ++ .../lib/src/camera/camera_component.dart | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/flame/lib/camera.dart b/packages/flame/lib/camera.dart index afe919bed04..34fc8d36aba 100644 --- a/packages/flame/lib/camera.dart +++ b/packages/flame/lib/camera.dart @@ -7,6 +7,8 @@ export 'src/camera/viewport.dart' show Viewport; export 'src/camera/viewports/circular_viewport.dart' show CircularViewport; export 'src/camera/viewports/fixed_aspect_ratio_viewport.dart' show FixedAspectRatioViewport; +export 'src/camera/viewports/fixed_resolution_viewport.dart' + show FixedResolutionViewport; export 'src/camera/viewports/fixed_size_viewport.dart' show FixedSizeViewport; export 'src/camera/viewports/max_viewport.dart' show MaxViewport; export 'src/camera/world.dart' show World; diff --git a/packages/flame/lib/src/camera/camera_component.dart b/packages/flame/lib/src/camera/camera_component.dart index 440398a129a..cd270356937 100644 --- a/packages/flame/lib/src/camera/camera_component.dart +++ b/packages/flame/lib/src/camera/camera_component.dart @@ -65,22 +65,20 @@ class CameraComponent extends Component { /// [height] pixels are visible within the viewport. The viewfinder will be /// initially set up to show world coordinates (0, 0) at the center of the /// viewport. - factory CameraComponent.withFixedResolution({ + CameraComponent.withFixedResolution({ required double width, required double height, - Viewfinder? viewfinder, World? world, + Viewfinder? viewfinder, Component? backdrop, List? hudComponents, - }) { - return CameraComponent( - world: world, - viewport: FixedResolutionViewport(resolution: Vector2(width, height)) - ..addAll(hudComponents ?? []), - viewfinder: viewfinder ?? Viewfinder(), - backdrop: backdrop, - ); - } + }) : this( + world: world, + viewport: FixedResolutionViewport(resolution: Vector2(width, height)), + viewfinder: viewfinder ?? Viewfinder(), + backdrop: backdrop, + hudComponents: hudComponents, + ); /// The [viewport] is the "window" through which the game world is observed. ///