package Ġme . ws j . lib . spec ia le ffect s Ċ Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġkotlinx . coroutines .* Ċ import Ġper . ws j . common lib . utils . Log Util Ċ Ċ /** Ċ Ġ* Ġcreate Ġby Ġsh ij u . wang Ċ Ġ* Ġlight ning Ċ Ġ*/ Ċ class ĠEffect Lightning Drawable ( val Ġlight ning 1 : ĠDrawable , Ġval Ġlight ning 2 : ĠDrawable ) Ġ: ĊĠĠĠ ĠDrawable (), ĠI Cancel able Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġscope Ġby Ġlazy Ġ{ ĠCor outine Scope ( Job () Ġ+ ĠDispatch ers . Main ) Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm Width Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġis Running Ġ= Ġtrue ĊĊĠĠĠ Ġprivate Ġvar Ġsize 1 Ġ= ĠPoint () ĊĠĠĠ Ġprivate Ġvar Ġsize 2 Ġ= ĠPoint () ĊĊĠĠĠ Ġprivate Ġvar Ġshow 1 Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġshow 2 Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( isRunning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshow Ġone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow 1 Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdismiss Ġone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow 1 Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshow Ġtwo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow 2 Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdismiss Ġtwo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow 2 Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 _ 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bounds Change ( bounds : ĠRect ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Bounds Change ( bounds ) ĊĊĠĠĠĠĠĠĠ Ġm Width Ġ= Ġbounds . right Ġ- Ġbounds . left ĊĠĠĠĠĠĠĠ Ġsize 1 . x Ġ= Ġ( lightning 1 . intrinsic Width Ġ* Ġ 1 . 5 f ). toInt () ĊĠĠĠĠĠĠĠ Ġsize 1 . y Ġ= Ġ( lightning 1 . intrinsic Height Ġ* Ġ 1 . 5 f ). toInt () ĊĊĠĠĠĠĠĠĠ Ġsize 2 . x Ġ= Ġ( lightning 2 . intrinsic Width Ġ* Ġ 1 . 5 f ). toInt () ĊĠĠĠĠĠĠĠ Ġsize 2 . y Ġ= Ġ( lightning 2 . intrinsic Height Ġ* Ġ 1 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( show 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlight ning 1 . setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Width Ġ/ Ġ 2 Ġ- Ġsize 1 . x Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Width Ġ/ Ġ 2 Ġ+ Ġsize 1 . x Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize 1 . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlight ning 1 . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( show 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlight ning 2 . setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Width Ġ* Ġ 0 . 6 ). toInt () Ġ- Ġsize 2 . x Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Width Ġ* Ġ 0 . 6 ). toInt () Ġ+ Ġsize 2 . x Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize 2 . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlight ning 2 . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Alpha ( alpha : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Color Filter ( color Filter : ĠColor Filter ?) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Opacity (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPixel Format . TRANSL UC ENT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// To Ġdo Ġst h . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġscope . cancel () ĊĠĠĠĠĠĠĠ ĠLog Util . d (" Effect 5 Drawable Ġcancel Ġ---------------- ---------- -> Ġ") ĊĠĠĠ Ġ} Ċ }