Example #1
0
def main():
  puni = Puni()
  args = parse(puni)

  PFSM = PuniFSM(puni)
  fsm = Fysom({ 'initial': 'init',
                'events': [
                  {'name': 'goToMap', 'src': 'init', 'dst': 'map'},
                  {'name': 'goToMap', 'src': 'battle_waiting', 'dst': 'map'},
                  {'name': 'goToMap', 'src': 'result', 'dst': 'map'},
                  {'name': 'goToMap', 'src': 'ranking', 'dst': 'map'},
                  {'name': 'searchEnemy', 'src': 'map', 'dst': 'search'},
                  {'name': 'waiting', 'src': 'search', 'dst': 'battle_waiting'},
                  {'name': 'fight', 'src': 'battle_waiting', 'dst': 'battle'},
                  {'name': 'showResult', 'src': 'battle', 'dst': 'result'},
                  {'name': 'sendSoul', 'src': 'map', 'dst': 'ranking'},
                  {'name': 'panic', 'src': '*', 'dst': 'error'},
                  {'name': 'exit', 'src': 'map', 'dst': 'finish'}
                  ],
                'callbacks': {
                  'oninit': PFSM.on_init,
                  'onmap': PFSM.on_map,
                  'onsearchEnemy': PFSM.on_search,
                  'onbattle_waiting': PFSM.on_waiting,
                  'onfight': PFSM.on_fight,
                  'onbattle': PFSM.on_battle,                  
                  'onranking': PFSM.on_ranking,                  
                  'onresult': PFSM.on_result,                  
                  'onfinish': PFSM.on_finish,
              }})
  fsm.goToMap()
  if random.randint(0, 20) is 0:
    fsm.sendSoul()
    fsm.goToMap()    
    fsm.exit()
  fsm.searchEnemy()
  fsm.waiting()
  fsm.fight()
  fsm.showResult()
  fsm.goToMap()
  fsm.exit()
  return