def createEngine(self): if self.game != 'Ratuki': raise Exception("No engine for game {}".format(self.game)) return self.engine = RatukiEngine()
class RatukiWidget(GameWidget): def createEngine(self): if self.game != 'Ratuki': raise Exception("No engine for game {}".format(self.game)) return self.engine = RatukiEngine() def initUI(self): super(RatukiWidget,self).initUI() self.gameInput = RatukiInputWidget(self.engine, self) self.gameInput.enterPressed.connect(self.commitRound) self.roundLayout.addWidget(self.gameInput) self.configLayout = QtGui.QGridLayout() self.matchGroupLayout.addLayout(self.configLayout) self.topPointsLineEdit = QtGui.QLineEdit(self.matchGroup) self.topPointsLineEdit.setText(str(self.engine.getTop())) self.topPointsLineEdit.setValidator(QtGui.QIntValidator(1,10000,self.topPointsLineEdit)) self.topPointsLineEdit.setFixedWidth(50) sp = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed) self.topPointsLineEdit.setSizePolicy(sp) self.topPointsLineEdit.textChanged.connect(self.changeTop) self.topPointsLineEdit.setDisabled(self.engine.getNumRound()>1) self.configLayout.addWidget(self.topPointsLineEdit,0,0) self.topPointsLabel = QtGui.QLabel(self.matchGroup) self.topPointsLabel.setStyleSheet("QLabel {font-weight: bold; }") self.configLayout.addWidget(self.topPointsLabel,0,1) self.detailGroup = RatukiRoundsDetail(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(RatukiWidget,self).retranslateUI() self.topPointsLabel.setText(QtGui.QApplication.translate("RatukiWidget","Score Limit")) # self.playerGroup.setTitle(QtGui.QApplication.translate("RatukiWidget","Score")) self.detailGroup.retranslateUI() 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): self.topPointsLineEdit.setReadOnly(True) self.dealerPolicyCheckBox.setEnabled(False) 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(RatukiWidget,self).updatePanel() def changeTop(self,newtop): try: newtop = int(newtop) self.engine.setTop(newtop) self.detailGroup.updatePlot() except ValueError: pass def setWinner(self): super(RatukiWidget,self).setWinner() winner = self.engine.getWinner() if winner in self.players: self.playerGroupBox[winner].setWinner() 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()