/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠK w ai , ĠInc . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ċ Ġ* Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ċ Ġ* Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ġto Ċ Ġ* Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ċ Ġ* Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ċ Ġ* Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS Ċ Ġ* ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR Ċ Ġ* ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER Ċ Ġ* ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN Ċ Ġ* ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . k ua ish ou . ak dan mak u . ecs . component . action Ċ Ċ /** Ċ Ġ* Ġ åºıåĪĹ æī§è¡Į çļĦ ĠAction Ċ Ġ* Ċ Ġ* Ġ@ author ĠX ana Ċ Ġ* Ġ@ since Ġ 2 0 2 1 - 0 7 - 1 5 Ċ Ġ*/ Ċ class ĠSequence Action Ġ: ĠParallel Action Ġ{ ĊĠ Ġprivate Ġval Ġranges Ġ= Ġmutable ListOf < Long Range >() ĊĊĠ Ġconstructor ( var arg Ġaction : ĠAction ) Ġ: Ġsuper (* action ) ĊĠ Ġconstructor () Ġ: Ġsuper () ĊĊĠ Ġoverride Ġfun Ġact ( time M ills : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġindex Ġ= Ġranges . indexOf First Ġ{ Ġtime M ills Ġin Ġit Ġ} ĊĠĠĠ Ġif Ġ( time M ills Ġ< Ġ 0 ) Ġreturn Ġfalse ĊĠĠĠ Ġelse Ġif Ġ( index Ġ== Ġ- 1 ) Ġindex Ġ= Ġactions . size ĊĠĠĠ Ġval Ġpool Ġ= Ġhold Pool () ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġindex ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġranges [ i ] ĊĠĠĠĠĠĠĠ Ġactions [ i ]?. act ( r . last Ġ- Ġr . first ) ĊĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( index Ġ< Ġactions . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġactions [ index ] ĊĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġranges [ index ] ĊĠĠĠĠĠĠĠ Ġif Ġ( action ?. act ( time M ills Ġ- Ġrange . first ) Ġ!= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( target Ġ== Ġnull ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġactions . size ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠ Ġ} Ġelse Ġreturn Ġtrue ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠ Ġthis . pool Ġ= Ġpool ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠ Ġsuper . reset () ĊĠĠĠ Ġranges . clear () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Action Added ( action : ĠAction ) Ġ{ ĊĠĠĠ Ġranges . add ( duration Ġuntil Ġduration Ġ+ Ġaction . duration ) ĊĠĠĠ Ġduration Ġ+= Ġaction . duration ĊĠ Ġ} Ċ } Ċ