def createEngine(self): if self.game != 'Remigio': raise Exception("No engine for game {}".format(self.game)) return self.engine = RemigioEngine()
class RemigioWidget(GameWidget): bgcolors = [0,0xCCFF99,0xFFFF99,0xFFCC99,0xFFCCFF] def createEngine(self): if self.game != 'Remigio': raise Exception("No engine for game {}".format(self.game)) return self.engine = RemigioEngine() def initUI(self): super(RemigioWidget,self).initUI() self.gameInput = RemigioInputWidget(self.engine,RemigioWidget.bgcolors, 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 = RemigioRoundsDetail(self.engine, RemigioWidget.bgcolors, self) self.detailGroup.edited.connect(self.updatePanel) # self.detailGroup = GameRoundsDetail(self.engine, self) 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 = RemigioPlayerWidget(player,PlayerColours[i%len(PlayerColours)],self.playerGroup) pw.updateDisplay(self.engine.getScoreFromPlayer(player)) if player == self.engine.getDealer(): pw.setDealer() if self.engine.isPlayerOff(player): print("Should set {} to ko...".format(player)) pw.koPlayer() self.playersLayout.addWidget(pw) self.playerGroupBox[player] = pw self.playersLayout.addStretch() self.retranslateUI() def retranslateUI(self): super(RemigioWidget,self).retranslateUI() self.topPointsLabel.setText(QtGui.QApplication.translate("RemigioWidget","Score Limit")) # self.playerGroup.setTitle(QtGui.QApplication.translate("RemigioWidget","Score")) self.detailGroup.retranslateUI() def updateGameStatusLabel(self): super(RemigioWidget,self).updateGameStatusLabel() if self.gameStatusLabel.text() == "": self.gameStatusLabel.setStyleSheet("QLabel {font-weight:bold;}") self.gameStatusLabel.setText(QtGui.QApplication.translate("RemigioWidget","Warning: real points are computed automatically depending on the close type")) def getPlayerExtraInfo(self,player): c_type = self.gameInput.getCloseType() if c_type: return {'closeType':c_type} else: return {} 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) self.updateScores() if self.engine.getWinner(): self.detailGroup.updateStats() self.detailGroup.updateRound() super(RemigioWidget,self).updatePanel() def updateScores(self): for player in self.players: score = self.engine.getScoreFromPlayer(player) self.playerGroupBox[player].updateDisplay(score) if self.engine.isPlayerOff(player): self.playerGroupBox[player].koPlayer() self.gameInput.koPlayer(player) else: self.playerGroupBox[player].unKoPlayer() self.gameInput.unKoPlayer(player) def changeTop(self,newtop): try: newtop = int(newtop) self.engine.setTop(newtop) self.detailGroup.updatePlot() except ValueError: pass def setWinner(self): super(RemigioWidget,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()