diff --git a/indigo/indigo/src/main/scala/indigo/package.scala b/indigo/indigo/src/main/scala/indigo/package.scala index 5a3cceced..5b1048ed5 100644 --- a/indigo/indigo/src/main/scala/indigo/package.scala +++ b/indigo/indigo/src/main/scala/indigo/package.scala @@ -74,6 +74,9 @@ object syntax: extension [A](l: List[Option[A]]) def sequence: Option[List[A]] = NonEmptyList.sequenceListOption(l) extension [A](l: NonEmptyList[Option[A]]) def sequence: Option[NonEmptyList[A]] = NonEmptyList.sequenceOption(l) + extension (s: Size) + def toGameViewport: GameViewport = GameViewport(s) + // Timeline animations object animations: import indigo.shared.animation.timeline.* diff --git a/indigo/indigo/src/main/scala/indigo/shared/config/GameConfig.scala b/indigo/indigo/src/main/scala/indigo/shared/config/GameConfig.scala index 9b4579e3b..1187218aa 100644 --- a/indigo/indigo/src/main/scala/indigo/shared/config/GameConfig.scala +++ b/indigo/indigo/src/main/scala/indigo/shared/config/GameConfig.scala @@ -54,8 +54,8 @@ final case class GameConfig( def withViewport(width: Int, height: Int): GameConfig = this.copy(viewport = GameViewport(width, height)) - def withViewport(size: Size): GameConfig = - this.copy(viewport = GameViewport(size.width, size.height)) + def withViewport(newViewport: GameViewport): GameConfig = + this.copy(viewport = newViewport) def withFrameRateLimit(limit: FPS): GameConfig = this.copy(frameRateLimit = Option(limit)) diff --git a/indigo/indigo/src/main/scala/indigo/shared/config/GameViewport.scala b/indigo/indigo/src/main/scala/indigo/shared/config/GameViewport.scala index 21822b902..8e3ea02ab 100644 --- a/indigo/indigo/src/main/scala/indigo/shared/config/GameViewport.scala +++ b/indigo/indigo/src/main/scala/indigo/shared/config/GameViewport.scala @@ -4,7 +4,7 @@ import indigo.shared.datatypes.Point import indigo.shared.datatypes.Rectangle import indigo.shared.datatypes.Size -opaque type GameViewport <: Size = Size +opaque type GameViewport = Size object GameViewport: def apply(size: Size): GameViewport = size def apply(width: Int, height: Int): GameViewport = Size(width, height) @@ -19,12 +19,13 @@ object GameViewport: val at720pBy2: GameViewport = GameViewport(640, 360) extension (a: GameViewport) + def width: Int = a.width + def height: Int = a.height + def horizontalMiddle: Int = a.width / 2 def verticalMiddle: Int = a.height / 2 def center: Point = Point(horizontalMiddle, verticalMiddle) - @deprecated("use 'toRectangle' instead") - def asRectangle: Rectangle = toRectangle def toRectangle: Rectangle = Rectangle(Point.zero, a) def size: Size = a def toSize: Size = a diff --git a/indigo/tyrian-sandbox/src/main/scala/example/game/MyAwesomeGame.scala b/indigo/tyrian-sandbox/src/main/scala/example/game/MyAwesomeGame.scala index 7fdd3ced1..4f17d63ac 100644 --- a/indigo/tyrian-sandbox/src/main/scala/example/game/MyAwesomeGame.scala +++ b/indigo/tyrian-sandbox/src/main/scala/example/game/MyAwesomeGame.scala @@ -1,8 +1,8 @@ package example.game import cats.effect.IO -import indigo._ -import indigo.scenes._ +import indigo.* +import indigo.scenes.* import tyrian.TyrianSubSystem final case class MyAwesomeGame(tyrianSubSystem: TyrianSubSystem[IO, String, Unit], clockwise: Boolean)