package Ġcom . zero . neon . game . stage Ċ Ċ import Ġandroidx . compose . runtime . save able . Saver Ċ import Ġcom . zero . neon . utils . Date Utils Ċ Ċ class ĠStage Controller ( ĊĠĠĠ Ġprivate Ġval Ġdate Utils : ĠDate Utils Ġ= ĠDate Utils (), ĊĠĠĠ Ġprivate Ġvar Ġstage Index : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġprivate Ġvar Ġstage Start Snapshot Millis : ĠLong Ġ= Ġdate Utils . currentTimeMillis () Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġget Game Stage ( ready For Next Stage : ĠBoolean Ġ= Ġfalse ): ĠStage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstage Time Expired Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage Start Snapshot Millis Ġ+ Ġget Stage (). duration Sec Ġ* Ġ 1 0 0 0 Ġ< Ġdate Utils . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġval Ġhas Next Stage Ġ= Ġstage Index Ġ< Ġstages . last Index ĊĠĠĠĠĠĠĠ Ġif Ġ( stage Time Expired Ġ&& Ġhas Next Stage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ready For Next Stage ) Ġreturn ĠStage Break ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage Start Snapshot Millis Ġ= Ġdate Utils . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġget Stage () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Stage (): ĠStage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstages [ stage Index ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġsa ver (): ĠS aver < Stage Controller , Ġ*> Ġ= ĠS aver ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( it . stage Index , Ġit . stage Start Snapshot Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestore Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStage Controller ( stage Index Ġ= Ġit . first , Ġstage Start Snapshot Millis Ġ= Ġit . second ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }