Exemplo n.º 1
0
 def receive(self, tile=None, meld=None):
     """receive a tile or meld and return the meld this tile becomes part of"""
     if tile:
         if tile.isBonus():
             if tile.board == self:
                 return
             meld = Meld(tile)
         else:
             meld = self.__chooseDestinationMeld(tile, meld) # from selector board.
             # if the source is a Handboard, we got a Meld, not a Tile
             if not meld:
                 # user pressed ESCAPE
                 return None
         assert not tile.element.istitle() or meld.pairs[0] != 'Xy', tile
     senderBoard = meld[0].board
     senderBoard.removing(meld=meld)
     if senderBoard == self:
         self.player.moveMeld(meld)
         self.sync()
     else:
         self.player.addMeld(meld)
         self.sync(adding=meld.tiles)
         senderBoard.remove(meld=meld)
     meld.tiles = sorted(meld.tiles, key=lambda x: x.xoffset)
     if any(x.focusable for x in meld.tiles):
         for idx, tile in enumerate(meld.tiles):
             tile.focusable = idx == 0
     return meld