package Ġcom . so y wiz . k orge . view . fast Ċ Ċ import Ġcom . so y wiz . kor im . bitmap . B mp Slice Ċ import Ġcom . so y wiz . kor im . color . Colors Ċ import Ġkotlin . math . cos Ċ import Ġkotlin . math . sin Ċ Ċ open Ġclass ĠFast Sprite ( tex : ĠB mp Slice ) Ġ{ ĊĠĠĠ Ġvar Ġx 0 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġy 0 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġx 1 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġy 1 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġx 2 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġy 2 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġx 3 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġy 3 : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġvar Ġax : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġay : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġ// Ġcos ( rotation ) Ġvalue ĊĠĠĠ Ġvar Ġcr : ĠFloat Ġ= Ġ 1 f ĊĊĠĠĠ Ġ// Ġsin ( rotation ) Ġvalue ĊĠĠĠ Ġvar Ġsr : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġvar Ġcontainer : ĠFast Sprite Container ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġinternal Ġset ĊĊĠĠĠ Ġinternal Ġvar Ġuse Rotation Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllows ĠFast Sprite Container Ġto Ġre calculate Ġa ĠFast Sprite Ġif Ġadded Ġto Ġa ĠFast Sprite Container Ġusing Ġrotation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġforce Update () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( use Rotation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcr Ġ= Ġcos ( rotation Radians f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsr Ġ= Ġsin ( rotation Radians f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Size () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġbased Ġon Ġrotation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate XY 0 1 2 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġtop Ġleft ĊĠĠĠĠĠĠĠ Ġvar Ġpx Ġ= Ġ- ax Ġ* Ġscale Xf ĊĠĠĠĠĠĠĠ Ġvar Ġpy Ġ= Ġ- ay Ġ* Ġscale Y f ĊĠĠĠĠĠĠĠ Ġx 0 Ġ= Ġpx Ġ* Ġcr Ġ- Ġpy Ġ* Ġsr Ġ+ Ġxf ĊĠĠĠĠĠĠĠ Ġy 0 Ġ= Ġpy Ġ* Ġcr Ġ+ Ġpx Ġ* Ġsr Ġ+ Ġy f ĊĊĠĠĠĠĠĠĠ Ġ// Ġtop Ġright ĊĠĠĠĠĠĠĠ Ġpx Ġ= Ġ(- ax Ġ+ Ġwidth ) Ġ* Ġscale Xf ĊĠĠĠĠĠĠĠ Ġpy Ġ= Ġ- ay Ġ* Ġscale Y f ĊĠĠĠĠĠĠĠ Ġx 1 Ġ= Ġpx Ġ* Ġcr Ġ- Ġpy Ġ* Ġsr Ġ+ Ġxf ĊĠĠĠĠĠĠĠ Ġy 1 Ġ= Ġpy Ġ* Ġcr Ġ+ Ġpx Ġ* Ġsr Ġ+ Ġy f ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġbottom Ġright ĊĠĠĠĠĠĠĠ Ġpx Ġ= Ġ(- ax Ġ+ Ġwidth ) Ġ* Ġscale Xf ĊĠĠĠĠĠĠĠ Ġpy Ġ= Ġ(- ay Ġ+ Ġheight ) Ġ* Ġscale Y f ĊĠĠĠĠĠĠĠ Ġx 2 Ġ= Ġpx Ġ* Ġcr Ġ- Ġpy Ġ* Ġsr Ġ+ Ġxf ĊĠĠĠĠĠĠĠ Ġy 2 Ġ= Ġpy Ġ* Ġcr Ġ+ Ġpx Ġ* Ġsr Ġ+ Ġy f ĊĊĠĠĠĠĠĠĠ Ġ// Ġbottom Ġleft ĊĠĠĠĠĠĠĠ Ġpx Ġ= Ġ- ax Ġ* Ġscale Xf ĊĠĠĠĠĠĠĠ Ġpy Ġ= Ġ(- ay Ġ+ Ġheight ) Ġ* Ġscale Y f ĊĠĠĠĠĠĠĠ Ġx 3 Ġ= Ġpx Ġ* Ġcr Ġ- Ġpy Ġ* Ġsr Ġ+ Ġxf ĊĠĠĠĠĠĠĠ Ġy 3 Ġ= Ġpy Ġ* Ġcr Ġ+ Ġpx Ġ* Ġsr Ġ+ Ġy f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġx Ġwithout Ġrotation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate X 0 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġx 0 Ġ= Ġxf Ġ- Ġax Ġ* Ġscale Xf ĊĠĠĠĠĠĠĠ Ġx 1 Ġ= Ġx 0 Ġ+ Ġwidth Ġ* Ġscale Xf ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate X () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( use Rotation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate XY 0 1 2 3 () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate X 0 1 () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġy Ġwithout Ġrotation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate Y 0 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġy 0 Ġ= Ġy f Ġ- Ġay Ġ* Ġscale Y f ĊĠĠĠĠĠĠĠ Ġy 1 Ġ= Ġy 0 Ġ+ Ġheight Ġ* Ġscale Y f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Y () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( use Rotation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate XY 0 1 2 3 () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Y 0 1 () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate X Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġax Ġ= Ġwidth Ġ* Ġanchor Xf ĊĠĠĠĠĠĠĠ Ġupdate X () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Y Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġay Ġ= Ġheight Ġ* Ġanchor Y f ĊĠĠĠĠĠĠĠ Ġupdate Y () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġupdate Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate X Size () ĊĠĠĠĠĠĠĠ Ġupdate Y Size () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġxf : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate X () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġy f : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Y () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġanchor Xf : ĠFloat Ġ= Ġ. 5 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate X Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġanchor Y f : ĠFloat Ġ= Ġ. 5 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Y Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġscale Xf : ĠFloat Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate X Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġscale Y f : ĠFloat Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Y Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġrotation Radians f : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Rotation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr Ġ= Ġcos ( field ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsr Ġ= Ġsin ( field ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate XY 0 1 2 3 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġcolor Ġ= ĠColors . WHITE ĊĠĠĠ Ġvar Ġvisible : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġval Ġtx 0 : ĠFloat Ġget () Ġ= Ġtex . tl _ x ĊĠĠĠ Ġval Ġty 0 : ĠFloat Ġget () Ġ= Ġtex . tl _ y ĊĠĠĠ Ġval Ġtx 1 : ĠFloat Ġget () Ġ= Ġtex . br _ x ĊĠĠĠ Ġval Ġty 1 : ĠFloat Ġget () Ġ= Ġtex . br _ y ĊĠĠĠ Ġval Ġwidth : ĠFloat Ġget () Ġ= Ġtex . width . toFloat () ĊĠĠĠ Ġval Ġheight : ĠFloat Ġget () Ġ= Ġtex . height . toFloat () ĊĊĠĠĠ Ġvar Ġtex : ĠB mp Slice Ġ= Ġtex ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!== Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscale ( value : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscale Xf Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġscale Y f Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Size () ĊĠĠĠĠĠĠĠ Ġupdate XY 0 1 2 3 () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Fast Sprite ( x 0 =$ x 0 , Ġy 0 =$ y 0 , Ġx 1 =$ x 1 , Ġy 1 =$ y 1 , Ġx 2 =$ x 2 , Ġy 2 =$ y 2 , Ġx 3 =$ x 3 , Ġy 3 =$ y 3 , Ġax =$ ax , Ġay =$ ay , Ġcr =$ cr , Ġsr =$ sr , Ġcontainer =$ container , Ġuse Rotation =$ use Rotation , Ġxf =$ xf , Ġy f =$ yf , Ġanchor Xf =$ anchor Xf , Ġanchor Y f =$ anchor Y f , Ġscale Xf =$ scale Xf , Ġscale Y f =$ scale Y f , Ġrotation Radians f =$ rotation Radians f , Ġcolor =$ color , Ġvisible =$ visible , Ġtex =$ tex )" ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ var ĠFast Sprite . x : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġxf . toDouble () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġxf Ġ= Ġvalue . toFloat () ĊĠĠĠ Ġ} Ċ Ċ var ĠFast Sprite . y : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġy f . toDouble () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġy f Ġ= Ġvalue . toFloat () ĊĠĠĠ Ġ} Ċ Ċ var ĠFast Sprite . anchor X : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġanchor Xf . toDouble () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanchor Xf Ġ= Ġvalue . toFloat () ĊĠĠĠ Ġ} Ċ Ċ var ĠFast Sprite . anchor Y : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġanchor Y f . toDouble () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanchor Y f Ġ= Ġvalue . toFloat () ĊĠĠĠ Ġ} Ċ Ċ var ĠFast Sprite . scale X : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġscale Xf . toDouble () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscale Xf Ġ= Ġvalue . toFloat () ĊĠĠĠ Ġ} Ċ var ĠFast Sprite . scale Y : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġscale Y f . toDouble () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscale Y f Ġ= Ġvalue . toFloat () ĊĠĠĠ Ġ} Ċ Ċ fun ĠFast Sprite . scale ( value : ĠDouble ) Ġ{ ĊĠĠĠ Ġscale ( value . toFloat ()) Ċ } Ċ Ċ var ĠFast Sprite . rotation : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġrotation Radians f . toDouble () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrotation Radians f Ġ= Ġvalue . toFloat () ĊĠĠĠ Ġ} Ċ Ċ var ĠFast Sprite . alpha ĊĠĠĠ Ġget () Ġ= Ġcolor . af ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcolor . with Af ( value ) ĊĠĠĠ Ġ} Ċ