package Ġcom . k ave h . particle Ċ Ċ import Ġkotlin . random . Random Ċ Ċ class ĠParticle Factory Ġ{ ĊĊĠĠĠ Ġinternal Ġvar Ġparticles : ĠMutable List < Particle > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġinternal Ġvar Ġmin Velocity Ġ= ĠPair (- 1 0 , Ġ- 1 0 ) ĊĠĠĠ Ġinternal Ġvar Ġmax Velocity Ġ= ĠPair ( 1 0 , Ġ 1 0 ) ĊĠĠĠ Ġinternal Ġvar Ġttl Range Ġ= ĠPair ( 4 0 0 , Ġ 7 0 0 ) ĊĠĠĠ Ġinternal Ġvar Ġis Ch aos Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġmax Particles Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġin Ġ 1 .. 5 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmax Particles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= ĠParticle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġset Ġinitial Ġparticle Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Particle ( tmp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles . add ( tmp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġinternal Ġvar Ġrefresh Rate Ġ= Ġ 1 0 0 L ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġin Ġ 2 0 0 .. 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġcurrent Position Ġ= ĠPair ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . first Ġ>= Ġ 0 Ġ&& Ġvalue . second Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh Stat () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġfor Ġ( p Ġin Ġparticles . size Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( currentTime Ġ> Ġparticles [ p ]. creation Time Ġ+ Ġparticles [ p ]. ttl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles . remove At ( p ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticles [ p ]. opacity Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ- Ġ( currentTime Ġ- Ġparticles [ p ]. creation Time ) Ġ/ Ġparticles [ p ]. ttl . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Ch aos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles [ p ]. position Ġ= ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles [ p ]. position . first Ġ+ Ġparticles [ p ]. velocity . first , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles [ p ]. position . second Ġ+ Ġparticles [ p ]. velocity . second ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles [ p ]. position Ġ= ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles [ p ]. position . first Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( particles [ p ]. velocity . first Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( particles [ p ]. velocity . second Ġ/ Ġ( max Velocity . second Ġ- Ġmin Velocity . second ). toFloat ())). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles [ p ]. position . second Ġ+ Ġparticles [ p ]. velocity . second ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmax Particles Ġ- Ġparticles . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= ĠParticle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Particle ( tmp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticles . add ( tmp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Particle ( p : ĠParticle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġp . position Ġ= Ġcurrent Position ĊĠĠĠĠĠĠĠ Ġp . velocity Ġ= ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . nextInt ( min Velocity . first , Ġmax Velocity . first ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . nextInt ( min Velocity . second , Ġmax Velocity . second ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġp . ttl Ġ= ĠRandom . nextInt ( ttl Range . first , Ġttl Range . second ) ĊĠĠĠ Ġ} Ċ }