package Ġrust y ice . screens Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Batch Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . Stage Ċ import Ġrust y engine . Rust y Engine Ċ import Ġrust y ice . graphics . Performance Tracker Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠMan ages Ġwhich Ġscreens Ġare Ġcurrently Ġactive Ġand Ġdisplays Ġthem . Ċ Ġ*/ Ċ class ĠScreen Manager ( val Ġtracker : ĠPerformance Tracker ? Ġ= Ġnull ){ ĊĠĠĠ Ġval Ġstage : ĠStage ĊĊĠĠĠ Ġprivate Ġval Ġscreens : ĠHashMap < String , ĠLazy Screen > ĊĠĠĠ Ġprivate Ġval Ġscreen History : ĠStack < Screen > ĊĠĠĠ Ġprivate Ġvar Ġcurrent Screen : ĠScreen ? ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġstage Ġ= ĠStage ( Rust y Engine . viewport , ĠRust y Engine . batch ) ĊĊĠĠĠĠĠĠĠ Ġcurrent Screen Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġscreens Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġscreen History Ġ= ĠStack () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġadds Ġa Ġscreen Ġwith Ġa Ġgiven Ġname ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġthe Ġname Ġthe Ġscreen Ġwill Ġbe Ġreferenced Ġto Ġby ĊĠĠĠĠ Ġ* Ġ@ param Ġscreen Ġa Ġscreen Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Screen ( name : ĠString , Ġscreen : Ġ() Ġ-> ĠScreen ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscreens . put ( name , ĠLazy Screen ( screen )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġdisplays Ġa Ġscreen , Ġthe Ġlast Ġscreen Ġwill Ġbe Ġadded Ġto Ġa Ġstack . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġsee Ġadd Ġscreen ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Screen ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġscreens [ name ] ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Screen Ġ= Ġcurrent Screen ĊĊĠĠĠĠĠĠĠ Ġif ( screen Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( current Screen Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Screen . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen History . push ( current Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Screen Ġ= Ġscreen . get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Screen . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Screen . resize ( G dx . graphics . width , ĠG dx . graphics . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . current Screen Ġ= Ġcurrent Screen ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Tracker () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" No Ġscreen Ġis Ġregistered Ġwith Ġthe Ġname ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Tracker () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( tracker Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage . actors . remove Value ( tracker , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage . add Actor ( tracker ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtracker . setFill Parent ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtracker . validate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġsets Ġa Ġscreen Ġto Ġthe Ġscreen Ġbefore Ġthe Ġlast Ġactivation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpop Screen () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpop Screen : ĠScreen ? ĊĊĠĠĠĠĠĠĠ Ġcurrent Screen ?. hide () ĊĠĠĠĠĠĠĠ Ġpop Screen Ġ= Ġscreen History . pop () ĊĠĠĠĠĠĠĠ Ġcurrent Screen Ġ= Ġpop Screen ĊĊĠĠĠĠĠĠĠ Ġif ( pop Screen Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop Screen . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Tracker () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNE ED S Ġto Ġbe Ġcalled Ġwhenever Ġthe Ġwindow Ġres izes Ġfor Ġscreens Ġto Ġbehave Ġproperly . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth Ġin Ġpixels ĊĠĠĠĠ Ġ* Ġ@ param Ġheight Ġin Ġpixels ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġresize ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstage . viewport . update ( width , Ġheight , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcurrent Screen ?. resize ( width , Ġheight ) ĊĊĠĠĠĠĠĠĠ Ġtracker ?. validate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNE ED S Ġto Ġbe Ġcalled Ġevery Ġframe ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdelta Ġin Ġseconds ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrender ( batch : ĠBatch , Ġdelta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Screen ?. render ( batch , Ġdelta ) ĊĠĠĠĠĠĠĠ Ġstage . act ( delta ) ĊĠĠĠĠĠĠĠ Ġstage . draw () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġstage . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠLazy Screen ( private Ġval Ġbuilder : Ġ() Ġ-> ĠScreen ){ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġscreen : ĠScreen ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġget (): ĠScreen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġscreen ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( screen Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= Ġbuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . screen Manager Ġ= Ġthis @ Screen Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . screen Ġ= Ġout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ