def _deckArrived(self, players, ourNr, ourDeck): """ The network give us our number and our deck. Display it on the table """ assert(isinstance(ourNr, int)) assert(isinstance(ourDeck, list)) self.Playing.emit() self.imageDeck = {} self.playerNr = ourNr # Identify our place on the table frame = None if ourNr == 0: frame = self.topCard_2 elif ourNr == 1: frame = self.leftCard_2 elif ourNr == 2: frame = self.downCard_2 elif ourNr == 3: frame = self.rightCard_2 frame.setFrameShadow(QFrame.Raised) # Set names for player in players.split(";")[:-1]: nr = int(player.split(":")[0]) name = str(player.split(":")[1]) if nr == 0: self.labelTop.setText(name) elif nr == 1: self.labelLeft.setText(name) elif nr == 2: self.labelDown.setText(name) elif nr == 3: self.labelRight.setText(name) # Do our ui deck for card in ourDeck: label = CardContainer(self) imageCard = Card(card, label) label.cardClicked.connect(self._cardClicked) imageCard.load("media/" + card + ".gif") self.imageDeck[card] = label label.setPixmap(imageCard) self.allCards.addWidget(label) self.sendCardButton.setEnabled(True) self.state = "3C"
def _cardPlayed(self, playerNr, playerName, card): """ The player played a card. If the user don't want updates, simply memorize it. Else, we need to display (on the right place) the card played. """ card = str(card) assert(isinstance(playerNr, int)) if self.mustMemHand: self.cardPlayedInHand[playerNr] = (playerName, card,) return # If we are not obs and we play a card, remove it from the # deck displayed if not self.isObs and playerNr == self.playerNr: assert(card in self.imageDeck) cardContainer = self.imageDeck.pop(card) self.allCards.removeWidget(cardContainer) cardContainer.deleteLater() # Make a new visible card and place it on the table label = CardContainer(self) imageCard = Card(card, label) imageCard.load("media/" + card + ".gif") label.setPixmap(imageCard) assert(playerNr <= 3 and playerNr >= 0) if playerNr == 0: self.topCard.addWidget(label) self.labelTop.setText(playerName) elif playerNr == 1: self.leftCard.addWidget(label) self.labelLeft.setText(playerName) elif playerNr == 2: self.downCard.addWidget(label) self.labelDown.setText(playerName) elif playerNr == 3: self.rightCard.addWidget(label) self.labelRight.setText(playerName)
def _cArrived(self, deck): """ The network inform us that a new deck, with the 3 cards received from the initial passing, has arrived. """ assert(isinstance(deck, list)) # TODO: Sto rifacendo tutto da 0. Non sarebbe meglio fare un # update del vecchio? for v in self.imageDeck.values(): v.deleteLater() self.imageDeck.clear() for card in deck: label = CardContainer(self) imageCard = Card(card, label) label.cardClicked.connect(self._cardClicked) imageCard.load("media/" + card + ".gif") self.imageDeck[card] = label label.setPixmap(imageCard) self.allCards.addWidget(label) self.state = "P"