Ejemplo n.º 1
0
 def look_for_players(self, look):
     for msg in controller.msgQueue:
         ready = MsgProtocol.is_ready_inc(msg.text)
         if ready and ready["recipient"] == ant.uuid and ready[
                 'sender'] in (mate.uuid for mate in mates):
             mates.get_mate(ready['sender']).ready = True
             my_log(msg.text)
             my_print(
                 ready["sender"], " is ready ! {} / {}".format(
                     len([mate for mate in mates if mate.ready]),
                     len(mates)))
             #my_print("=> player on tile {}".format(look[0].count("player")))
             #my_print("=> look : {}".format(look))
     ok = True
     for mate in mates:
         if not mate.ready:
             ok = False
             break
     if look[0].count("player") == self.size and ok:
         my_print("Ready to incant ! ")
         statemachine.closure = lambda: statemachine.replace(
             self.replacement_state)
     else:
         msg = MsgProtocol.ping_team(ant.uuid)
         safe_controller.execute(
             BroadcastTransaction(msg, self.broadcast_team))
Ejemplo n.º 2
0
 def meet_callback(self, _):
     for m in controller.msgQueue:
         meet = MsgProtocol.is_meet_ants(m.text)
         if meet and ant.uuid in meet['recipients'] and meet[
                 'sender'] == ant.queen.uuid:
             statemachine.closure = lambda ok=None: statemachine.replace(
                 FollowQueenState())
             return
     meet = LookTransaction(self.meet_callback)
     safe_controller.execute(meet, rollback=False)
Ejemplo n.º 3
0
 def updateAntLook(self, look):
     ant.look = look
     found, path = self.findEmptyTile(look)
     if found:
         save = path.generateOrder(False)[0]
         self.pathHandler = PathManipulator(
             save,
             lambda ok=None: statemachine.replace(self.replacement_state))
         safe_controller.execute(self.pathHandler)
     else:
         self.goNextPlace()
Ejemplo n.º 4
0
 def wait_accept_msg(self, *args):
     for m in controller.msgQueue:
         allow = MsgProtocol.is_allowed_ants(m.text)
         if allow and allow['sender'] == ant.queen.uuid:
             if ant.uuid in allow['allowed_ants']:
                 statemachine.closure = lambda: statemachine.replace(
                     SlaveState())
                 return
             else:
                 self._status_stack.insert(
                     0, lambda: LookTransaction(self.wait_enrol_msg))
     self.template()
Ejemplo n.º 5
0
 def popped_over(self):
     super().popped_over()
     if not ant.is_queen:
         statemachine.closure = lambda: statemachine.replace(WaitTeamState())
     else:
         self.resource_repart()
Ejemplo n.º 6
0
 def ping(self):
     incantation = IncantationState()
     state = SeekEmptyTileState(WaitSlavesState(requirement[ant.lvl + 1][0], incantation))
     statemachine.closure = lambda ok=None: statemachine.replace(state)
Ejemplo n.º 7
0
 def replaceClosure():
     statemachine.replace(GameState())