package Ġcom . me e bu hs . flow Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Linear Gradient Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . graphics . Shader ĊĊ Ċ /** Ċ Ġ* ĠClass Ġrepresenting Ġthe Ġtrail Ġbehind Ġthe Ġparticles . ĠThe Ġtrail Ġis Ġstored Ġas Ġa Ġqueue Ġof Ġpoints Ġwhich Ġis Ġaltered Ġas Ġthe Ċ Ġ* Ġparticle Ġtravel s Ġthrough Ġthe Ġspace . ĠNew Ġpoints Ġare Ġappended Ġand Ġthus Ġindex Ġ 0 Ġis Ġthe Ġpoint Ġf ur the st Ġfrom Ġthe Ġparticle . Ċ Ġ*/ Ċ class ĠParticle Trail ( r : ĠFloat , Ġcolour : ĠInt ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtrail Ġ= Ġmutable ListOf < Pair < Float , ĠFloat >>() ĊĠĠĠ Ġprivate Ġval Ġtrail Path Ġ= ĠPath () ĊĠĠĠ Ġprivate Ġval Ġtrail Paint Ġ= ĠPaint () ĊĠĠĠ Ġprivate Ġvar Ġsize Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġsize Limit Ġ= Ġ 3 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtrail Paint . color Ġ= Ġcolour ĊĠĠĠĠĠĠĠ Ġtrail Paint . stroke Width Ġ= Ġr Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġtrail Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrail Paint . shader Ġ= ĠLinear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrail [ size Ġ- Ġ 1 ]. first , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrail [ size Ġ- Ġ 1 ]. second , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrail [ 0 ]. first , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrail [ 0 ]. second , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrail Paint . color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . TRANSP ARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShader . Tile Mode . MIR ROR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrail Path . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis First Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( point Ġin Ġtrail ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrail Path . moveTo ( point . first , Ġpoint . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis First Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrail Path . lineTo ( point . first , Ġpoint . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Path ( trail Path , Ġtrail Paint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrail . add ( Pair ( x , Ġy )) ĊĠĠĠĠĠĠĠ Ġ++ size ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ== Ġsize Limit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrail . remove At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ-- size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }