/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠH ell ĠH ole ĠSt ud ios Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . h hs . k oto . app . screen Ċ Ċ import Ġcom . badlogic . gdx . graphics . Pixmap Ċ import Ġcom . badlogic . gdx . math . Interpolation Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . actions . Actions Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . actions . Actions . fadeOut Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . actions . Actions . sequence Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . ui . Image Ċ import Ġcom . crash inv aders . v fx . V fx Manager Ċ import Ġcom . crash inv aders . v fx . effects . Gaussian Blur Effect Ċ import Ġcom . h hs . k oto . app . Config Ċ import Ġcom . h hs . k oto . app . ui . Game Status Ċ import Ġcom . h hs . k oto . app . ui . Pause Menu Ċ import Ġcom . h hs . k oto . app . ui . V fx Output Ċ import Ġcom . h hs . k oto . stg . Game Builder Ċ import Ġcom . h hs . k oto . stg . Game Mode Ċ import Ġcom . h hs . k oto . stg . GameState Ċ import Ġcom . h hs . k oto . util .* Ċ import Ġk tx . actors . alpha Ċ import Ġk tx . actors . plus Assign Ċ import Ġk tx . actors . then Ċ import Ġjava . util .* Ċ Ċ class ĠGame Screen Ġ: ĠBasic Screen ( null , Ġnull ) Ġ{ ĊĊĠĠĠ Ġval Ġv fx Manager Ġ= ĠV fx Manager ( Pixmap . Format . RGBA 8 8 8 8 , Ġoptions . frame Width , Ġoptions . frame Height ) ĊĠĠĠ Ġval Ġblur Effect Ġ= ĠGaussian Blur Effect () ĊĠĠĠ Ġval Ġgame Frame Ġ= ĠV fx Output (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Bounds ( 7 2 f , Ġ 3 6 f , Ġ 8 6 4 f , Ġ 1 0 0 8 f ) ĊĠĠĠĠĠĠĠ Ġst Ġ+= Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġbl urred Game Frame Ġ= ĠV fx Output (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Bounds ( 7 2 f , Ġ 3 6 f , Ġ 8 6 4 f , Ġ 1 0 0 8 f ) ĊĠĠĠĠĠĠĠ Ġst Ġ+= Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġgame Status : ĠGame Status ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġrng Ġ= ĠRandom () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgame Background Ġ= ĠImage ( get Region (" bg / game . png ")) ĊĠĠĠĠĠĠĠ Ġgame Background . setBounds ( 0 f , Ġ 0 f , ĠConfig . screen Width , ĠConfig . screen Height ) ĊĠĠĠĠĠĠĠ Ġst Ġ+= Ġgame Background ĊĊĠĠĠĠĠĠĠ Ġv fx Manager . add Effect ( blur Effect ) ĊĠĠĠĠĠĠĠ Ġblur Effect . amount Ġ= Ġ 1 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpause Menu Ġ= ĠPause Menu ( this , Ġst , Ġinput ) ĊĊĠĠĠ Ġprivate Ġvar Ġpaused : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġpass Counter : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġdelta Time Counter : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( delta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ!= ĠScreen State . SHO WN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . render ( delta ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! paused Ġ&& Ġgame . state Ġ!= ĠGameState . RUNNING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpause Game () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( paused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelta Time Counter Ġ+= Ġdelta ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game . state Ġ== ĠGameState . PA USED Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass Counter Ġ>= Ġ 3 0 Ġ&& ĠVK . PAUSE . just Pressed () Ġ&& Ġ! bl urred Game Frame . has Actions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresume Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( System Flag . game mode !!. is Pract ice () Ġ&& ĠVK . RE START . just Pressed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSE . play (" ok ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretry Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( deltaTime Counter Ġ>= Ġ 1 Ġ/ Ġ 6 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pass Counter Ġ< Ġ 3 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pass Counter Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbl urred Game Frame . alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv fx Manager . use As Input ( game . post V fx . result Buffer . texture ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv fx Manager . use As Input ( v fx Manager . result Buffer . texture ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv fx Manager . apply Effects () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass Counter ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelta Time Counter Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System Flag . replay Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System Flag . game mode !!. is Pract ice ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Data . practice Time Ġ+= Ġdelta ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Data . play Time Ġ+= Ġdelta ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame . update () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// shake Ġgame Ġframe Ġ: 3 ĊĠĠĠĠĠĠĠ Ġif Ġ( game . sh aking Ġ!= Ġ 0 Ġ&& Ġ! paused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Frame . setPosition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 2 f Ġ+ Ġrng . next Float () Ġ* Ġgame . sh aking Ġ* Ġ 2 Ġ- Ġgame . sh aking , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 6 f Ġ+ Ġrng . next Float () Ġ* Ġgame . sh aking Ġ* Ġ 2 Ġ- Ġgame . sh aking ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Frame . setPosition ( 7 2 f , Ġ 3 6 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . render ( delta ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! paused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame . overlay . draw () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfadeIn ( old Screen : ĠK oto Screen ?, Ġduration : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . fadeIn ( old Screen , Ġduration ) ĊĠĠĠĠĠĠĠ Ġif Ġ( System Flag . ending Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġretry Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġpause Menu . deactivate () ĊĠĠĠĠĠĠĠ Ġbl urred Game Frame . addAction ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsequence ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfade Out ( 0 . 5 f , ĠInterpol ation . s ine ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActions . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġgame Frame . alpha Ġ= Ġ 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresume Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġbl urred Game Frame . addAction ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfade Out ( 0 . 5 f , ĠInterpol ation . s ine ) Ġthen ĠActions . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaused Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . state Ġ= ĠGameState . RUNNING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSE . resume () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBG M . resume () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġpause Menu . deactivate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpause Game () Ġ{ ĊĠĠĠĠĠĠĠ ĠSE . pause () ĊĠĠĠĠĠĠĠ ĠSE . play (" pause ") ĊĠĠĠĠĠĠĠ ĠBG M . pause () ĊĠĠĠĠĠĠĠ Ġpaused Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġpass Counter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġdelta Time Counter Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġpause Menu . activate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ ĠSE . stop () ĊĠĠĠĠĠĠĠ Ġpause Menu . reset () ĊĊĠĠĠĠĠĠĠ ĠSystem Flag . ending Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠGame Builder . build () ĊĠĠĠĠĠĠĠ Ġgame Status ?. remove () ĊĠĠĠĠĠĠĠ Ġgame Status Ġ= ĠGame Status ( game ) ĊĠĠĠĠĠĠĠ Ġst Ġ+= Ġgame Status !! ĊĊĠĠĠĠĠĠĠ Ġgame Frame . v fx Manager Ġ= Ġgame . post V fx ĊĠĠĠĠĠĠĠ Ġgame Frame . alpha Ġ= Ġ 1 f ĊĊĠĠĠĠĠĠĠ Ġbl urred Game Frame . v fx Manager Ġ= Ġv fx Manager ĊĠĠĠĠĠĠĠ Ġbl urred Game Frame . alpha Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġpaused Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġquit () Ġ{ ĊĠĠĠĠĠĠĠ ĠSE . stop () ĊĠĠĠĠĠĠĠ ĠSE . play (" cancel ") ĊĠĠĠĠĠĠĠ Ġgame . dispose () ĊĠĠĠĠĠĠĠ ĠSystem Flag . redirect Ġ= Ġif Ġ( System Flag . replay Ġ== Ġnull ) Ġwhen Ġ( System Flag . game mode !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGame Mode . STAGE _ PR ACT ICE Ġ-> Ġ" stage Select " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGame Mode . SPE LL _ PR ACT ICE Ġ-> Ġ" spell Select " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" player Select " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ" replay " ĊĠĠĠĠĠĠĠ ĠSystem Flag . redirect Duration Ġ= Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġapp . set Screen (" blank ", Ġ 0 . 5 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Quit () Ġ= ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . dispose () ĊĠĠĠĠĠĠĠ Ġv fx Manager . dispose () ĊĠĠĠĠĠĠĠ Ġblur Effect . dispose () ĊĠĠĠ Ġ} Ċ }