package Ġcom . say zen . camp fire sdk . models . animations ĊĊ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Path Ċ import Ġcom . sup . dev . android . R Ċ import Ġcom . sup . dev . android . tools . Tools Resources Ċ import Ġcom . sup . dev . android . tools . Tools View Ċ import Ġcom . sup . dev . android . views . views . draw _ animations . Draw Animation Ċ import Ġcom . sup . dev . java . tools . Tools Collections Ċ import Ġcom . sup . dev . java . tools . Tools Color Ċ import Ġcom . sup . dev . java . tools . Tools Math Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠDraw Animation Conf et ti ( ĊĠĠĠĠĠĠĠ Ġvar Ġarg : Int = 1 0 0 Ċ ) Ġ: ĠDraw Animation () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcolors : Array < Int > Ġ= ĠarrayOf ( Tools Resources . getColor ( R . color . red _ 7 0 0 ), ĠTools Resources . getColor ( R . color . yellow _ 7 0 0 ), ĠTools Resources . getColor ( R . color . blue _ 7 0 0 ), ĠTools Resources . getColor ( R . color . pink _ 7 0 0 ), ĠTools Resources . getColor ( R . color . green _ 7 0 0 )) ĊĠĠĠ Ġprivate Ġval ĠP ATCH S Ġ= ĠarrayOf ( Path (), ĠPath ()) ĊĊĠĠĠ Ġprivate Ġval Ġparticles Ġ= ĠArrayList < Particle >() ĊĠĠĠ Ġprivate Ġval Ġparticles Remove List Ġ= ĠArrayList < Particle >() ĊĠĠĠ Ġprivate Ġval ĠDP Ġ= ĠTools View . dp To Px ( 1 ) ĊĊĠĠĠ Ġprivate Ġvar Ġtime To Create _ sec _ min Ġ= Ġ 0 . 0 1 f ĊĠĠĠ Ġprivate Ġvar Ġtime To Create _ sec _ max Ġ= Ġ 0 . 0 5 f ĊĠĠĠ Ġprivate Ġvar Ġtime To Create Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġw Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġh Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġinf late Time Ġ= Ġ 0 f ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= ĠColor . WHITE ĊĊĠĠĠĠĠĠĠ Ġval ĠDP 4 Ġ= ĠDP * 4 ĊĊĠĠĠĠĠĠĠ ĠP ATCH S [ 0 ]. moveTo ( DP 4 , Ġ 0 f ) ĊĠĠĠĠĠĠĠ ĠP ATCH S [ 0 ]. lineTo ( DP 4 * 2 , ĠDP 4 ) ĊĠĠĠĠĠĠĠ ĠP ATCH S [ 0 ]. lineTo ( DP 4 , ĠDP 4 * 2 ) ĊĠĠĠĠĠĠĠ ĠP ATCH S [ 0 ]. lineTo ( 0 f , ĠDP 4 ) ĊĠĠĠĠĠĠĠ ĠP ATCH S [ 0 ]. lineTo ( DP 4 , Ġ 0 f ) ĊĊĠĠĠĠĠĠĠ ĠP ATCH S [ 1 ]. moveTo ( DP 4 , Ġ 0 f ) ĊĠĠĠĠĠĠĠ ĠP ATCH S [ 1 ]. lineTo ( DP 4 * 2 , ĠDP 4 * 2 ) ĊĠĠĠĠĠĠĠ ĠP ATCH S [ 1 ]. lineTo ( DP 4 , ĠDP 4 * 4 ) ĊĠĠĠĠĠĠĠ ĠP ATCH S [ 1 ]. lineTo ( 0 f , ĠDP 4 * 2 ) ĊĠĠĠĠĠĠĠ ĠP ATCH S [ 1 ]. lineTo ( DP 4 , Ġ 0 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinf late ( time : Long ){ ĊĠĠĠĠĠĠĠ Ġinf late Time Ġ= Ġtime Ġ/ Ġ 1 0 0 0 f ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( delta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtime To Create Ġ-= Ġdelta ĊĠĠĠĠĠĠĠ Ġinf late Time Ġ-= Ġdelta ĊĠĠĠĠĠĠĠ Ġif Ġ( arg Ġ> Ġ 0 Ġ&& Ġtime To Create Ġ< Ġ 0 Ġ&& Ġw Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime To Create Ġ= ĠTools Math . random Float ( time To Create _ sec _ min , Ġtime To Create _ sec _ max ) Ġ/ Ġ(( if ( arg Ġ< Ġ 1 ) Ġ 1 Ġelse Ġarg ) Ġ/ Ġ 1 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( inflate Time Ġ> Ġ 0 ) Ġtime To Create Ġ/= Ġ 1 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticles . add ( Particle ( inflate Time Ġ> Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġparticles Remove List ) Ġparticles . remove ( i ) ĊĠĠĠĠĠĠĠ Ġparticles Remove List . clear () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġparticles ) Ġi . update ( delta ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġw Ġ= Ġcanvas . width . toFloat () ĊĠĠĠĠĠĠĠ Ġh Ġ= Ġcanvas . height . toFloat () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġparticles ) Ġi . draw ( canvas ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠParticle ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠParticle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinf late : Boolean ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠTools Collections . random ( colors ) ĊĠĠĠĠĠĠĠ Ġval Ġrotate Ġ= ĠTools Math . random Float ( 0 f , Ġ 3 6 0 f ) ĊĠĠĠĠĠĠĠ Ġvar Ġalpha Ġ= ĠTools Math . random Int ( 2 0 , Ġ 1 2 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠTools Collections . random ( PATCH S ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġr _ Max Ġ= ĠTools Math . random Float ( DP Ġ* Ġ 2 , ĠDP Ġ* Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġvar Ġr _ Min Ġ= ĠTools Math . random Float ( DP , ĠDP Ġ* Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġvar Ġr Ġ= ĠTools Math . random Float ( r _ Min , Ġr _ Max ) ĊĠĠĠĠĠĠĠ Ġvar Ġr _ A xe Ġ= ĠDP Ġ/ Ġ 8 ĊĠĠĠĠĠĠĠ Ġvar Ġr _ Arg Ġ= ĠTools Collections . random ( array Of (- 1 , Ġ 1 )) ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġ- r Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġvar Ġy _ axe Ġ= ĠTools Math . random Float ( h Ġ/ Ġ 4 0 , Ġh Ġ/ Ġ 6 0 ) Ġ* Ġif ( inflate ) Ġ 1 0 Ġelse Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= ĠTools Math . random Float ( 0 f , Ġw ) ĊĠĠĠĠĠĠĠ Ġvar Ġx _ Max Ġ= Ġx Ġ+ Ġr _ Max * 4 ĊĠĠĠĠĠĠĠ Ġvar Ġx _ Min Ġ= Ġx Ġ- Ġr _ Max * 4 ĊĠĠĠĠĠĠĠ Ġvar Ġx _ A xe Ġ= Ġy _ axe Ġ/ Ġ 8 Ġ/ Ġif ( inflate ) Ġ 3 Ġelse Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġx _ Arg Ġ= ĠTools Collections . random ( array Of (- 1 , Ġ 1 )) ĊĊĠĠĠĠĠĠĠ Ġfun Ġupdate ( delta : ĠFloat ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ+= Ġr _ A xe Ġ* Ġdelta Ġ* Ġr _ Arg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Ġ> Ġr _ Max ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġr _ Max ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr _ Arg Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Ġ< Ġr _ Min ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġr _ Min ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr _ Arg Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġx _ A xe Ġ* Ġdelta Ġ* Ġx _ Arg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ> Ġx _ Max ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġx _ Max ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx _ Arg Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ< Ġx _ Min ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġx _ Min ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx _ Arg Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġy _ axe Ġ* Ġdelta ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y Ġ> Ġh Ġ+ Ġr Ġ* Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles Remove List . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= ĠTools Color . set Alpha ( alpha , Ġcolor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . save () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . translate ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . rotate ( rotate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Path ( path , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . restore () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ }