package Ġcom . art amon ov . m illion plan ets . gate Ċ Ċ import Ġandroid . app . Activity Options Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . art amon ov . m illion plan ets . R Ċ import Ġjava . util . Timer Ċ import Ġjava . util . Timer Task Ċ import Ġcom . art amon ov . m illion plan ets . base . Base Activity Ċ import Ġcom . art amon ov . m illion plan ets . databinding . Activity Gate Binding Ċ import Ġcom . art amon ov . m illion plan ets . gate . view model . Gate ViewModel Ċ import Ġcom . art amon ov . m illion plan ets . fight . Fight Activity Ċ import Ġcom . art amon ov . m illion plan ets . gate . models . Fetch Gate Status Ċ import Ġcom . art amon ov . m illion plan ets . gate . models . Gate Action Ċ import Ġcom . art amon ov . m illion plan ets . gate . models . Gate Event Ċ import Ġcom . art amon ov . m illion plan ets . gate . models . Gate ViewState Ċ import Ġcom . art amon ov . m illion plan ets . model . Space ObjectType Ċ import Ġcom . art amon ov . m illion plan ets . model . User Ċ import Ġcom . art amon ov . m illion plan ets . utils . show Long Snackbar Ċ import Ġcom . art amon ov . m illion plan ets . utils . show Snackbar Error Ċ import Ġcom . art amon ov . m illion plan ets . utils . start Planet Activity Ċ import Ġcom . art amon ov . m illion plan ets . utils . start Main Options Activity Ċ import Ġcom . art amon ov . m illion plan ets . utils . start Scan Result Activity Ċ import Ġcom . google . firebase . firestore . Document Snapshot Ċ Ċ class ĠGate Activity Ġ: ĠBase Activity (), ĠGate Activity View Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġmax TimeIn Milliseconds : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġde br is Is Over : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġenemy Username : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠGate ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Gate Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Gate Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġ{ Ġenemy Username Ġ= Ġintent . getString Extra ( EN EM Y _ USERNAME ) Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . gate Action . setOnClickListener Ġ{ ĠviewModel . obtain Event ( Gate Event . Set ObjectType ) Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . gate Scan . setOnClickListener Ġ{ Ġscan () Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . view Effects (). observe ( this , Ġ{ Ġbind View Action ( it ) Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . view States (). observe ( this , Ġ{ Ġbind ViewState ( it ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind ViewState ( view State : ĠGate ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view State . fetch Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Gate Status . Default State Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset UserData ( view State . user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Gate Status . Mine I ron Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmine I ron () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Gate Status . Mine De br is Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmine De br is () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Gate Status . Set Fight Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fight Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Gate Status . Open Planet Activity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Planet Activity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Gate Status . Show Not En ough Money To Buy Fuel Warning Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Not En ough Money To Buy Fuel Warning () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Gate Status . De br is Is Removed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġde br is Is Removed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Gate Status . Show Capacity Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Capacity Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind View Action ( it : ĠGate Action ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGate Action . Show Mine Failed Snackbar Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar Error ( getString ( R . string . gate _ mine _ failed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . view States (). value ?. user ?. resource _ iron )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGate Action . Open Fight Activity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Fight Activity ( it . enemy Username ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGate Action . Set User I ron Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetUser I ron ( it . user List , Ġit . document Snapshot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGate Action . Show Update I ron Toast Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Update I ron Toast ( it . counter , Ġit . total Amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Not En ough Money To Buy Fuel Warning () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Snackbar Error ( getString ( R . string . gate _ not _ en ough _ money _ to _ buy _ fuel )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Planet Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Planet Activity () ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Fight Activity ( enemy Username : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠF ight Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( EN EM Y _ USERNAME , Ġenemy Username ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent , ĠActivity Options . make Scene Transition Animation ( this ). to Bundle ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Fight Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . gate Action . text Ġ= Ġresources . getString ( R . string . fight _ with , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . view States (). value ?. user ?. location Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset UserData ( user List : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . gate Coordinates . text Ġ= ĠString . format ( resources . getString ( R . string . current _ coordinate ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser List . x , Ġuser List . y ) ĊĠĠĠĠĠĠĠ Ġbinding . gate Ship . text Ġ= Ġuser List . ship ĊĠĠĠĠĠĠĠ Ġbinding . gate Hp . text Ġ= Ġuser List . hp . toString () ĊĠĠĠĠĠĠĠ Ġbinding . gate Shield . text Ġ= Ġuser List . shield . toString () ĊĠĠĠĠĠĠĠ Ġbinding . gate Cargo . text Ġ= Ġuser List . cargo Capacity . toString () ĊĠĠĠĠĠĠĠ Ġbinding . gate Scanner Capacity . text Ġ= Ġuser List . scanner _ capacity . toString () ĊĠĠĠĠĠĠĠ Ġbinding . gate Fuel . text Ġ= Ġuser List . fuel . toString () ĊĠĠĠĠĠĠĠ Ġbinding . gate Money . text Ġ= Ġuser List . money . toString () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( user List . location Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpace ObjectType . PLAN ET Ġ-> Ġbinding . gate Action . text Ġ= Ġresources . getString ( R . string . land ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpace ObjectType . USER Ġ-> Ġbinding . gate Action . text Ġ= Ġresources . getString ( R . string . fight ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpace ObjectType . F UE L Ġ-> Ġbinding . gate Action . text Ġ= Ġresources . getString ( R . string . get _ fuel ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpace ObjectType . DE BR IS Ġ-> Ġbinding . gate Action . text Ġ= Ġresources . getString ( R . string . mine ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpace ObjectType . ME TE OR ITE _ FIELD Ġ-> Ġbinding . gate Action . text Ġ= Ġresources . getString ( R . string . mine ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUser I ron ( user List : ĠUser , Ġdocument Snapshot : ĠDocument Snapshot ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmine I ron () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . gate Action . set BackgroundColor ( Context Compat . getColor ( this , ĠR . color . grey )) ĊĠĠĠĠĠĠĠ Ġbinding . gate Action . isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton Timer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠ Ġbutton Timer . schedule ( object Ġ: ĠTimer Task () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . gate Action . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . gate Action . set BackgroundColor ( Context Compat . getColor ( this @ Gate Activity , ĠR . color . color Accent )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ 5 0 0 0 ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . obtain Event ( Gate Event . Update I ron ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmine De br is () Ġ{ ĊĠĠĠĠĠĠĠ Ġmine I ron () ĊĠĠĠĠĠĠĠ ĠviewModel . obtain Event ( Gate Event . Update I ron ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġir on Ġamount Ġon Ġde br is Ġless Ġthan Ġan Ġamount Ġthat Ġis Ġneeded Ġto Ġfill Ġup Ġfully Ġthe Ġcargo Capacity ĊĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel . view States (). value ?. space Object ?. de br is I ron Amount !! Ġ< Ġmax TimeIn Milliseconds Ġ/ Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax TimeIn Milliseconds Ġ= Ġ( 1 0 0 0 Ġ* ĠviewModel . view States (). value ?. space Object !!. de br is I ron Amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġde br is Is Over Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Update I ron Toast ( counter : ĠInt , Ġtotal Amount : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Long Snackbar ( getString ( R . string . gate _ you _ got _ item , Ġcounter , Ġtotal Amount )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Capacity Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Snackbar Error ( getString ( R . string . gate _ cargo _ capacity _ is _ full )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġde br is Is Removed () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Snackbar Error ( getString ( R . string . gate _ de br is _ is _ empty )) ĊĠĠĠĠĠĠĠ Ġstart Main Options Activity () ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġscan () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Scan Result Activity () ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠE NE MY _ USERNAME Ġ= Ġ" EN EM Y _ USERNAME " ĊĠĠĠ Ġ} Ċ } Ċ