package Ġcom . ly ee ed ar . AI . Behaviour Tree . Selectors Ċ Ċ import Ġcom . badlogic . ash ley . core . Entity Ċ import Ġcom . ly ee ed ar . AI . Behaviour Tree . Execution State Ċ import Ġcom . ly ee ed ar . Util . Xml Data Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠPhil ip Ġon Ġ 2 1 - Mar - 1 6 . Ċ Ġ*/ Ċ Ċ class ĠSelector Sequence (): ĠAbstract Selector () Ċ { Ċ ĉ //---------------------------------------------------------------- ------ Ċ ĉ var Ġreset : ĠBoolean Ġ= Ġfalse Ċ ĉ var Ġi : ĠInt Ġ= Ġ 0 ĊĊ ĉ //---------------------------------------------------------------- ------ Ċ ĉ override Ġfun Ġevaluate ( entity : ĠEntity ): ĠExecution State Ċ ĉ { Ċĉ ĉ state Ġ= ĠExecution State . COMPLETED ĊĊĉ ĉ while Ġ( i Ġ< Ġnodes . size ) Ċĉ ĉ { Ċĉĉ ĉ val Ġtemp Ġ= Ġnodes . get ( i ). evaluate ( entity ) Ċĉĉ ĉ if Ġ( temp Ġ!= ĠExecution State . COMPLETED ) Ċĉĉ ĉ { Ċĉĉĉ ĉ state Ġ= Ġtemp Ċĉĉĉ ĉ break Ċĉĉ ĉ } Ċĉĉ ĉ i ++ Ċĉ ĉ } ĊĊĉ ĉ if Ġ( state Ġ!= ĠExecution State . RUNNING ) Ċĉ ĉ { Ċĉĉ ĉ i Ġ= Ġ 0 Ċĉĉ ĉ while Ġ( i Ġ< Ġnodes . size ) Ċĉĉ ĉ { Ċĉĉĉ ĉ nodes . get ( i ). cancel ( entity ) Ċĉĉĉ ĉ i ++ Ċĉĉ ĉ } Ċĉĉ ĉ i Ġ= Ġ 0 Ċĉ ĉ } ĊĊĉ ĉ if Ġ( reset ) Ċĉ ĉ { Ċĉĉ ĉ i Ġ= Ġ 0 Ċĉ ĉ } ĊĊĉ ĉ return Ġstate Ċ ĉ } ĊĊ ĉ //---------------------------------------------------------------- ------ Ċ ĉ override Ġfun Ġcancel ( entity : ĠEntity ) Ċ ĉ { Ċĉ ĉ for Ġ( i Ġin Ġ 0 Ġuntil Ġnodes . size ) Ċĉ ĉ { Ċĉĉ ĉ nodes . get ( i ). cancel ( entity ); Ċĉ ĉ } Ċĉ ĉ i Ġ= Ġ 0 Ċ ĉ } ĊĊ ĉ //---------------------------------------------------------------- ------ Ċ ĉ override Ġfun Ġparse ( xml : ĠXml Data ) Ċ ĉ { Ċĉ ĉ super . parse ( xml ) ĊĊĉ ĉ reset Ġ= Ġxml . getBoolean Attribute (" Reset ", Ġfalse ) Ċ ĉ } Ċ }