package Ġcom . y li u 4 0 1 . kon os ub aa utom ata . scripts Ċ Ċ import Ġcom . y li u 4 0 1 . lib autom ata .* Ċ import Ġkotlin . math . absolute Value Ċ import Ġkotlin . math . round ToInt Ċ Ċ private Ġsealed Ġclass ĠScale By ( val Ġrate : ĠDouble ) Ġ: ĠComparable < Scale By > Ġ{ ĊĠĠĠ Ġclass ĠWidth ( rate : ĠDouble ) Ġ: ĠScale By ( rate ) ĊĠĠĠ Ġclass ĠHeight ( rate : ĠDouble ) Ġ: ĠScale By ( rate ) ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠScale By ) Ġ= ĊĠĠĠĠĠĠĠ Ġrate . compareTo ( other . rate ) Ċ } Ċ Ċ private Ġfun Ġdecide Scale Method ( Original Size : ĠSize , ĠDes ired Size : ĠSize ) Ġ= ĊĠĠĠ Ġmin Of ( ĊĠĠĠĠĠĠĠ ĠScale By . Width ( Desired Size . width Ġ/ ĠOriginal Size . width . toDouble ()), ĊĠĠĠĠĠĠĠ ĠScale By . Height ( Desired Size . height Ġ/ ĠOriginal Size . height . toDouble ()) ĊĠĠĠ Ġ) Ċ Ċ private Ġfun Ġcalculate Border Thickness ( Outer : ĠInt , ĠInner : ĠInt ) Ġ= ĊĠĠĠ Ġ(( Outer Ġ- ĠInner ). absolute Value Ġ/ Ġ 2 . 0 ). round ToInt () Ċ Ċ private Ġfun Ġcalculate Game Area Without B orders ( ĊĠĠĠ ĠScript Size : ĠSize , ĊĠĠĠ ĠScreen Size : ĠSize , ĊĠĠĠ ĠScale Rate : ĠDouble Ċ ): ĠRegion Ġ{ ĊĠĠĠ Ġval Ġscaled Script Size Ġ= ĠScript Size Ġ* ĠScale Rate ĊĊĠĠĠ Ġreturn ĠRegion ( ĊĠĠĠĠĠĠĠ Ġcalculate Border Thickness ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Size . width , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscaled Script Size . width ĊĠĠĠĠĠĠĠ Ġ), Ġ// ĠOffset ( X ) ĊĠĠĠĠĠĠĠ Ġcalculate Border Thickness ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Size . height , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscaled Script Size . height ĊĠĠĠĠĠĠĠ Ġ), Ġ// ĠOffset ( Y ) ĊĠĠĠĠĠĠĠ Ġscaled Script Size . width , Ġ// ĠGame ĠWidth Ġ( without Ġborders ) ĊĠĠĠĠĠĠĠ Ġscaled Script Size . height Ġ// ĠGame ĠHeight Ġ( without Ġborders ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġif Ġa Ġregion Ġis Ġw ider Ġthan Ġx : y Ċ Ġ*/ Ċ fun ĠSize . w ider Than ( x : ĠInt , Ġy : ĠInt ) Ġ= ĊĠĠĠ Ġwidth Ġ/ Ġheight . toDouble () Ġ> Ġx . toDouble () Ġ/ Ġy Ċ Ċ // ĠLooks Ġlike Ġonly Ġw ider Ġthan Ġ 1 8 : 9 Ġuses Ġdynamic Ġscaling , Ġrest Ġstays Ġin Ġ 1 6 : 9 Ċ // ĠThanks Ġto ĠSe ib ah Master Ġfrom ĠGame Press Ċ fun ĠSize . is Wide () Ġ= ĊĠĠĠ Ġw ider Than ( 1 8 , Ġ 9 ) Ċ Ċ class ĠF go Game Area Manager ( ĊĠĠĠ Ġprivate Ġval Ġgame Size With B orders : ĠSize , ĊĠĠĠ Ġprivate Ġval Ġoffset : Ġ() Ġ-> ĠLocation , ĊĠĠĠ Ġis New UI : ĠBoolean Ċ ) Ġ: ĠGame Area Manager Ġ{ ĊĠĠĠ Ġprivate Ġval Ġimage Size Ġ= ĠSize ( 1 2 8 0 , Ġ 7 2 0 ) ĊĠĠĠ Ġprivate Ġval Ġscript Size Ġ= ĠSize ( 2 5 6 0 , Ġ 1 4 4 0 ) ĊĊĠĠĠ Ġprivate Ġval Ġscale By Ġ= Ġdecide Scale Method ( ĊĠĠĠĠĠĠĠ Ġscript Size , ĊĠĠĠĠĠĠĠ Ġgame Size With B orders ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġval Ġscript Dimension Ġ= Ġwhen Ġ( scale By ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠScale By . Width Ġ-> ĠCompare By . Width ( script Size . width ) ĊĠĠĠĠĠĠĠ Ġis ĠScale By . Height Ġ-> ĠCompare By . Height ( script Size . height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġcompare Dimension Ġ= Ġwhen Ġ( scale By ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠScale By . Width Ġ-> ĠCompare By . Width ( image Size . width ) ĊĠĠĠĠĠĠĠ Ġis ĠScale By . Height Ġ-> ĠCompare By . Height ( image Size . height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġis Wide Ġ= Ġis New UI Ġ&& Ġgame Size With B orders . is Wide () ĊĠĠĠ Ġprivate Ġval Ġis Ul tra Wide Ġ= Ġis New UI Ġ&& Ġgame Size With B orders . w ider Than ( 2 1 , Ġ 9 ) ĊĊĠĠĠ Ġprivate Ġval Ġgame Area Ign oring Not ch Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġw ider Ġthan Ġ 2 1 : 9 Ġscreens , Ġblue Ġborders Ġappear Ġon Ġsides ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ul tra Wide Ġ-> Ġcalculate Game Area Without B orders ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSize ( 3 3 6 0 , Ġ 1 4 4 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Size With B orders , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale By . rate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Wide Ġ-> ĠRegion ( Location (), Ġgame Size With B orders ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcalculate Game Area Without B orders ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Size With B orders , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale By . rate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġgame Area ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġgame Area Ign oring Not ch Ġ+ Ġoffset () Ċ }