package Ġme . w ie ku . circ uits . world . elements . g ates Ċ Ċ import Ġcom . badlogic . gdx . math . Math Utils Ċ import Ġme . w ie ku . circ uits . api . element . edit . Editable Ċ import Ġme . w ie ku . circ uits . api . math . Vector 2 i Ċ import Ġme . w ie ku . circ uits . save . Save Manager Ċ import Ġme . w ie ku . circ uits . world . Classic World Ċ import Ġjava . util . HashMap Ċ Ċ class ĠPWM Gate ( pos : ĠVector 2 i ): ĠSave able Gate ( pos ), ĠEdit able Ġ{ ĊĊ ĉ @ Editable . Spinner (" Period ", Ġint ArrayOf ( 1 , Ġ 1 , Ġ 1 0 0 0 0 0 , Ġ 1 )) Ċ ĉ private Ġvar Ġperiod Ġ= Ġ 5 0 0 ĊĊ ĉ @ Editable . Spinner (" Duty Ġcycle ", Ġint ArrayOf ( 5 0 , Ġ 0 , Ġ 1 0 0 , Ġ 1 )) Ċ ĉ private Ġvar Ġd uty Ġ= Ġ 5 0 ĊĊ ĉ private Ġvar Ġcounter Ġ= Ġ 0 ĊĊ ĉ override Ġfun Ġupdate ( tick : ĠLong ) Ġ{ Ċĉ ĉ var Ġcalc Ġ= Ġinputs . isActive () ĊĊĉ ĉ if ( calc ) Ġ{ Ċĉĉ ĉ state !!. setActive U ( false ) Ċĉĉ ĉ counter Ġ= Ġ 0 Ċĉ ĉ } Ġelse Ġ{ Ċĉĉ ĉ counter Ġ+= Ġ 1 Ċĉĉ ĉ counter Ġ= ĠMath Utils . clamp ( counter , Ġ 0 , Ġperiod ) ĊĊĉĉ ĉ val Ġticks Ġ= Ġperiod Ġ* Ġd uty Ġ/ Ġ 1 0 0 ĊĊĉĉ ĉ if ( counter Ġ<= Ġticks ) Ġ{ Ċĉĉĉ ĉ if (! state !!. isActive ()) Ċĉĉĉĉ ĉ state !!. setActive U ( true ) Ċĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉ ĉ if ( state !!. isActive ()) Ċĉĉĉĉ ĉ state !!. setActive U ( false ) Ċĉĉ ĉ } ĊĊĉĉ ĉ if Ġ( counter Ġ== Ġperiod ) Ġ{ Ċĉĉĉ ĉ counter Ġ= Ġ 0 Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ set Out ( state !!. isActive D ()) Ċ ĉ } ĊĊ ĉ override Ġfun Ġget Idle Color (): ĠInt Ġ= Ġ 0 xAA 0 0 FF ĊĊ ĉ override Ġfun Ġget Active Color (): ĠInt Ġ= Ġ 0 xD 5 0 0 F 9 ĊĊ ĉ override Ġfun Ġload ( world : ĠClass ic World , Ġmanager : ĠSave Manager ) Ġ{ Ċĉ ĉ super . load ( world , Ġmanager ) Ċĉ ĉ period Ġ= Ġmanager . getInteger () Ċĉ ĉ duty Ġ= Ġmanager . getInteger () Ċĉ ĉ counter Ġ= Ġmanager . getInteger () Ċ ĉ } ĊĊ ĉ override Ġfun Ġsave ( manager : ĠSave Manager ) Ġ{ Ċĉ ĉ super . save ( manager ) Ċĉ ĉ manager . put Integer ( period ) Ċĉ ĉ manager . put Integer ( duty ) Ċĉ ĉ manager . put Integer ( counter ) Ċ ĉ } ĊĊ ĉ override Ġfun Ġcopy Data (): ĠHashMap < String , ĠAny > Ġ{ Ċĉ ĉ val Ġmap Ġ= Ġ Ġsuper . copy Data () Ċĉ ĉ map . put (" period ", Ġperiod ) Ċĉ ĉ map . put (" duty ", Ġd uty ) Ċĉ ĉ map . put (" counter ", Ġcounter ) Ċĉ ĉ return Ġmap Ċ ĉ } ĊĊ ĉ override Ġfun Ġpaste Data ( data : ĠHashMap < String , ĠAny >) Ġ{ Ċĉ ĉ super . paste Data ( data ) Ċĉ ĉ period Ġ= Ġdata [" period "] Ġas ĠInt Ċĉ ĉ duty Ġ= Ġdata [" duty "] Ġas ĠInt Ċĉ ĉ counter Ġ= Ġdata [" counter "] Ġas ĠInt Ċ ĉ } Ċ Ċ }