def createEngine(self): if self.game != 'Pocha': raise Exception("No engine for game {}".format(self.game)) return self.engine = PochaEngine()
class PochaWidget(GameWidget): QtGui.QApplication.translate("PochaWidget",'going up') QtGui.QApplication.translate("PochaWidget",'going down') QtGui.QApplication.translate("PochaWidget",'hand') QtGui.QApplication.translate("PochaWidget",'hands') QtGui.QApplication.translate("PochaWidget",'coins') QtGui.QApplication.translate("PochaWidget",'cups') QtGui.QApplication.translate("PochaWidget",'swords') QtGui.QApplication.translate("PochaWidget",'clubs') QtGui.QApplication.translate("PochaWidget",'diamonds') QtGui.QApplication.translate("PochaWidget",'hearts') QtGui.QApplication.translate("PochaWidget",'pikes') QtGui.QApplication.translate("PochaWidget",'clovers') def createEngine(self): if self.game != 'Pocha': raise Exception("No engine for game {}".format(self.game)) return self.engine = PochaEngine() def initUI(self): super(PochaWidget,self).initUI() self.gameInput = PochaInputWidget(self.engine, self) self.gameInput.enterPressed.connect(self.commitRound) self.roundLayout.addWidget(self.gameInput) self.configLayout = QtGui.QGridLayout() self.matchGroupLayout.addLayout(self.configLayout) self.suitTypeGroup = QtGui.QButtonGroup(self) self.spanishSuitRadio = QtGui.QRadioButton(self) self.spanishSuitRadio.setChecked(self.engine.getSuitType()=='spanish') self.spanishSuitRadio.toggled.connect(self.changeSuit) self.suitTypeGroup.addButton(self.spanishSuitRadio) self.configLayout.addWidget(self.spanishSuitRadio) self.frenchSuitRadio = QtGui.QRadioButton(self) self.suitTypeGroup.addButton(self.frenchSuitRadio) self.configLayout.addWidget(self.frenchSuitRadio) self.frenchSuitRadio.toggled.connect(self.changeSuit) self.frenchSuitRadio.setChecked(self.engine.getSuitType()=='french') self.dealerPolicyCheckBox.hide() self.detailGroup = PochaRoundsDetail(self.engine, self) self.detailGroup.edited.connect(self.updatePanel) self.widgetLayout.addWidget(self.detailGroup,1,0) self.playerGroup = QtGui.QGroupBox(self) self.widgetLayout.addWidget(self.playerGroup,1,1) self.playerGroup.setStyleSheet("QGroupBox { font-size: 18px; font-weight: bold; }") self.playersLayout = QtGui.QVBoxLayout(self.playerGroup) self.playersLayout.addStretch() self.playerGroupBox = {} for i,player in enumerate(self.players): pw = GamePlayerWidget(player,PlayerColours[i],self.playerGroup) pw.updateDisplay(self.engine.getScoreFromPlayer(player)) if player == self.engine.getDealer(): pw.setDealer() self.playersLayout.addWidget(pw) self.playerGroupBox[player] = pw self.playersLayout.addStretch() self.retranslateUI() def retranslateUI(self): super(PochaWidget,self).retranslateUI() # self.playerGroup.setTitle(QtGui.QApplication.translate("PochaWidget","Score")) self.spanishSuitRadio.setText(QtGui.QApplication.translate("PochaWidget","Spanish Deck")) self.frenchSuitRadio.setText(QtGui.QApplication.translate("PochaWidget","French Deck")) self.detailGroup.retranslateUI() def changeSuit(self, *args): if self.spanishSuitRadio.isChecked(): self.engine.setSuitType('spansih') elif self.frenchSuitRadio.isChecked(): self.engine.setSuitType('french') self.retranslateUI() def setRoundTitle(self): super(PochaWidget,self).setRoundTitle() hands = self.engine.getHands() direction = self.engine.getDirection() if hands == 1: self.roundGroup.setTitle("{} - {} {} {}".format(self.roundGroup.title(),str(hands),QtGui.QApplication.translate("PochaWidget","hand"), QtGui.QApplication.translate("PochaWidget",direction))) else: self.roundGroup.setTitle("{} - {} {} {}".format(self.roundGroup.title(),str(hands),QtGui.QApplication.translate("PochaWidget","hands"), QtGui.QApplication.translate("PochaWidget",direction))) def checkPlayerScore(self,player,score): return True def unsetDealer(self): self.playerGroupBox[self.engine.getDealer()].unsetDealer() def setDealer(self): self.playerGroupBox[self.engine.getDealer()].setDealer() def updatePanel(self): for player in self.players: score = self.engine.getScoreFromPlayer(player) self.playerGroupBox[player].updateDisplay(score) if self.engine.getWinner(): self.detailGroup.updateStats() self.detailGroup.updateRound() super(PochaWidget,self).updatePanel() self.gameInput.setFocus() def setWinner(self): super(PochaWidget,self).setWinner() winner = self.engine.getWinner() if winner in self.players: self.playerGroupBox[winner].setWinner() def commitRound(self): hands = self.engine.getHands() wonhands = self.gameInput.getWonHands() won = sum(wonhands.values()) if min(wonhands.values()) < 0: QtGui.QMessageBox.warning(self,self.game,QtGui.QApplication.translate("PochaWidget","There are players with no selected won hands.")) return if hands != won: QtGui.QMessageBox.warning(self,self.game,QtGui.QApplication.translate("PochaWidget","There are {} won hands selected when there should be {}.").format(won,hands)) return super(PochaWidget,self).commitRound() def setFocus(self): self.gameInput.setFocus() def updatePlayerOrder(self): GameWidget.updatePlayerOrder(self) trash = QtGui.QWidget() trash.setLayout(self.playersLayout) self.playersLayout = QtGui.QVBoxLayout(self.playerGroup) self.playersLayout.addStretch() for i,player in enumerate(self.engine.getListPlayers()): trash.layout().removeWidget(self.playerGroupBox[player]) self.playersLayout.addWidget(self.playerGroupBox[player]) self.playerGroupBox[player].setColour(PlayerColours[i]) self.playersLayout.addStretch() self.detailGroup.updatePlayerOrder()