Esempio n. 1
0
 def createEngine(self):
     if self.game != 'Pocha':
         raise Exception("No engine for game {}".format(self.game))
         return
     self.engine = PochaEngine()     
Esempio n. 2
0
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()