package Ġcom . ang cy o . game . core Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġcom . ang cy o . game . layer . Base Layer Ċ import Ġcom . ang cy o . game . layer . Base Layer . Companion . LAYER _ STATUS _ PAUSE _ DRAW Ċ import Ġcom . ang cy o . game . layer . Base Layer . Companion . LAYER _ STATUS _ PAUSE _ UPDATE Ċ import Ġcom . ang cy o . library . L Ċ import Ġcom . ang cy o . library . ex . have Ċ import Ġjava . util . concurrent . Copy On Write ArrayList Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠEmail : ang cy o @ 1 2 6 . com Ċ Ġ* Ġ@ author Ġang cy o Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 0 3 / 0 9 Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠSh en Z hen ĠO & M ĠCloud ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ class ĠGame Layer Manager ( val Ġengine : ĠGame Render Engine ) Ġ{ ĊĊĠĠĠ Ġval Ġlayer List Ġ= ĠCopy On Write ArrayList < Base Layer >() ĊĊĠĠĠ Ġvar Ġ_ draw Params : ĠDraw Params ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġ_ update Params : ĠUpdate Params ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** å¼ķ æĵ İ åıĤæķ° æĽ´æĸ° */ ĊĠĠĠ Ġfun Ġon Engine Update ( engine Params : ĠEngine Params ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġlayer List . iterator () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next ()?. also Ġ{ Ġlayer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . on Layer Update ( engine Params . engine Width , Ġengine Params . engine Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Layer ( layer : ĠBase Layer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlayer List . add ( layer ) ĊĠĠĠĠĠĠĠ Ġlayer . attach To Game Layer Manager ( this ) ĊĠĠĠĠĠĠĠ Ġlayer . on Layer Update ( engine ._ engine Params . engine Width , Ġengine ._ engine Params . engine Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Layer ( layer : ĠBase Layer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlayer List . remove ( layer ) ĊĠĠĠĠĠĠĠ Ġlayer . detach From Game Layer Manager ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Layer () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList ( layer List ) ĊĠĠĠĠĠĠĠ Ġlayer List . clear () ĊĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ Ġlayer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . detach From Game Layer Manager ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** å¼ķ æĵ İ ç»ĺ åĪ¶ åĽŀè°ĥ */ ĊĠĠĠ Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ draw Params Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ draw Params Ġ= ĠDraw Params ( Game Render Engine . engine Time ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ draw Params ?. draw Current Time Ġ= ĠGame Render Engine . engine Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayer List . forEach Ġ{ Ġlayer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! layer . layer Status . have ( LAYER _ STATUS _ PAUSE _ DRAW )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . draw ( canvas , Ġ_ draw Params !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . w ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ draw Params ?. draw Prev Time Ġ= Ġ_ draw Params !!. draw Current Time ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . w ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** å¼ķ æĵ İ è®¡ç®Ĺ åĽŀè°ĥ */ ĊĠĠĠ Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ update Params Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ update Params Ġ= ĠUpdate Params ( Game Render Engine . engine Time ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ update Params ?. update Current Time Ġ= ĠGame Render Engine . engine Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayer List . forEach Ġ{ Ġlayer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! layer . layer Status . have ( LAYER _ STATUS _ PAUSE _ UPDATE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . update (_ update Params !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . w ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ update Params ?. update Prev Time Ġ= Ġ_ update Params !!. update Current Time ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . w ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }