def fsm(): class StateOne(State): async def run(self): self.agent.state = STATE_ONE self.set_next_state(STATE_TWO) self.kill() await self.agent.sync1_behaviour.wait() class StateTwo(State): async def run(self): self.agent.state = STATE_TWO self.set_next_state(STATE_THREE) self.kill() await self.agent.sync2_behaviour.wait() class StateThree(State): async def run(self): self.agent.state = STATE_THREE self.kill() fsm_ = FSMBehaviour() state_one = StateOne() state_two = StateTwo() state_three = StateThree() fsm_.add_state(STATE_ONE, state_one, initial=True) fsm_.add_state(STATE_TWO, state_two) fsm_.add_state(STATE_THREE, state_three) fsm_.add_transition(STATE_ONE, STATE_TWO) fsm_.add_transition(STATE_TWO, STATE_THREE) fsm_.state_one = state_one fsm_.state_two = state_two fsm_.state_three = state_three return fsm_
def fsm(): fsm_ = FSMBehaviour() state_one = StateOne() state_two = StateTwo() state_three = StateThree() fsm_.add_state(STATE_ONE, state_one, initial=True) fsm_.add_state(STATE_TWO, state_two) fsm_.add_state(STATE_THREE, state_three) fsm_.add_transition(STATE_ONE, STATE_TWO) fsm_.add_transition(STATE_TWO, STATE_THREE) fsm_.state_one = state_one fsm_.state_two = state_two fsm_.state_three = state_three return fsm_