def __init__(self, parent = None): super(AIReplayerWidget, self).__init__(parent) self.setupUi(self) self.helpdlg = HelpDialog(self) #self.CreateLayout = ProductionWidget(self) self.helpdlg.setVisible(False) self.infoWidget1 = InfoWidget1(self) self.LeftLayout.addWidget(self.infoWidget1) self.infoWidget2 = InfoWidget2(self) self.RightLayout.addWidget(self.infoWidget2) palette = QPalette() self.setFixedSize(self.size()) palette.setBrush(QPalette.Window, QBrush(Qt.NoBrush)) self.setPalette(palette) self.scene1 = QGraphicsScene() self.scene2 = QGraphicsScene() self.scene3 = QGraphicsScene() self.scene4 = QGraphicsScene() self.CenterWidget = Replay(self.scene1) self.CenterLayout.addWidget(self.CenterWidget) self.SmallMap = SmallMap(self.scene2) self.SmallMapLayout.addWidget(self.SmallMap) self.CreateWidget = CreateTab(self.scene3, self.scene4) self.CreateLayout.addWidget(self.CreateWidget) self.OpenFileComboBox1.setMaxCount(10) self.OpenFileComboBox2.setMaxCount(10) self.isPaused = False self.started = False self.playing = False self.fileInfo = None self.mapInfo = None self.repFileName = "" self.mapFileName = "" self.aiFileName1 = "" self.aiFileName2 = "" self.timer = None self.loadRepFile = False self.loadMap = False self.loadAi1 = False self.loadAi2 = False self.totalround = 0 self.one_step = False self.ignore_change = False self.connect(self.CenterWidget, SIGNAL("unitSelected"), self.infoWidget2.newUnitInfo) self.connect(self.CenterWidget, SIGNAL("mapSelected"), self.infoWidget2.newMapInfo) self.connect(self, SIGNAL("toPause()"), partial(self.PlayPushButton.setChecked, False), Qt.QueuedConnection) self.CenterWidget.moveAnimEnd.connect(self.on_animEnd) self.connect(self.SmallMap, SIGNAL("areaChanged(QPoint)"), self.CenterWidget.setMapArea) self.connect(self.CenterWidget, SIGNAL("Scaled"), self.SmallMap.ScaleMap) self.updateUi()
class AIReplayerWidget(QWidget, Ui_AIReplayer): willreturn = pyqtSignal() def __init__(self, parent = None): super(AIReplayerWidget, self).__init__(parent) self.setupUi(self) self.helpdlg = HelpDialog(self) #self.CreateLayout = ProductionWidget(self) self.helpdlg.setVisible(False) self.infoWidget1 = InfoWidget1(self) self.LeftLayout.addWidget(self.infoWidget1) self.infoWidget2 = InfoWidget2(self) self.RightLayout.addWidget(self.infoWidget2) palette = QPalette() self.setFixedSize(self.size()) palette.setBrush(QPalette.Window, QBrush(Qt.NoBrush)) self.setPalette(palette) self.scene1 = QGraphicsScene() self.scene2 = QGraphicsScene() self.scene3 = QGraphicsScene() self.scene4 = QGraphicsScene() self.CenterWidget = Replay(self.scene1) self.CenterLayout.addWidget(self.CenterWidget) self.SmallMap = SmallMap(self.scene2) self.SmallMapLayout.addWidget(self.SmallMap) self.CreateWidget = CreateTab(self.scene3, self.scene4) self.CreateLayout.addWidget(self.CreateWidget) self.OpenFileComboBox1.setMaxCount(10) self.OpenFileComboBox2.setMaxCount(10) self.isPaused = False self.started = False self.playing = False self.fileInfo = None self.mapInfo = None self.repFileName = "" self.mapFileName = "" self.aiFileName1 = "" self.aiFileName2 = "" self.timer = None self.loadRepFile = False self.loadMap = False self.loadAi1 = False self.loadAi2 = False self.totalround = 0 self.one_step = False self.ignore_change = False self.connect(self.CenterWidget, SIGNAL("unitSelected"), self.infoWidget2.newUnitInfo) self.connect(self.CenterWidget, SIGNAL("mapSelected"), self.infoWidget2.newMapInfo) self.connect(self, SIGNAL("toPause()"), partial(self.PlayPushButton.setChecked, False), Qt.QueuedConnection) self.CenterWidget.moveAnimEnd.connect(self.on_animEnd) self.connect(self.SmallMap, SIGNAL("areaChanged(QPoint)"), self.CenterWidget.setMapArea) self.connect(self.CenterWidget, SIGNAL("Scaled"), self.SmallMap.ScaleMap) self.updateUi() def updateUi(self): if self.loadRepFile: self.one_step = False self.CenterWidget.HUMAN_REPLAY = 3 self.CreateWidget.team1.HUMAN_REPLAY = 3 self.CreateWidget.team2.HUMAN_REPLAY = 3 elif self.loadMap and self.loadAi1 and self.HumanCheckBox2.isChecked(): self.one_step = False self.CenterWidget.HUMAN_REPLAY = 1 self.CreateWidget.team1.HUMAN_REPLAY = 1 self.CreateWidget.team2.HUMAN_REPLAY = 1 elif self.loadMap and self.loadAi2 and self.HumanCheckBox1.isChecked(): self.one_step = False self.CenterWidget.HUMAN_REPLAY = 0 self.CreateWidget.team1.HUMAN_REPLAY = 0 self.CreateWidget.team2.HUMAN_REPLAY = 0 elif self.loadMap and self.HumanCheckBox1.isChecked() and self.HumanCheckBox2.isChecked(): self.one_step = False self.CenterWidget.HUMAN_REPLAY = 2 self.CreateWidget.team1.HUMAN_REPLAY = 2 self.CreateWidget.team2.HUMAN_REPLAY = 2 elif self.loadMap and self.loadAi2 and self.loadAi1: self.one_step = False self.CenterWidget.HUMAN_REPLAY = 4 self.CreateWidget.team1.HUMAN_REPLAY = 4 self.CreateWidget.team2.HUMAN_REPLAY = 4 elif self.loadMap and self.loadAi1 and self.ModeCheck2.isChecked(): self.CenterWidget.HUMAN_REPLAY = 4 self.one_step = True self.CreateWidget.team1.HUMAN_REPLAY = 4 self.CreateWidget.team2.HUMAN_REPLAY = 4 elif self.loadMap and self.ModeCheck1.isChecked() and self.ModeCheck2.isChecked(): self.CenterWidget.HUMAN_REPLAY = 4 self.one_step = True self.CreateWidget.team1.HUMAN_REPLAY = 4 self.CreateWidget.team2.HUMAN_REPLAY = 4 elif self.loadMap and self.loadAi2 and self.ModeCheck1.isChecked(): self.CenterWidget.HUMAN_REPLAY = 4 self.one_step = True self.CreateWidget.team1.HUMAN_REPLAY = 4 self.CreateWidget.team2.HUMAN_REPLAY = 4 elif self.loadMap and self.HumanCheckBox1.isChecked() and self.ModeCheck2.isChecked(): self.CenterWidget.HUMAN_REPLAY = 0 self.one_step = True self.CreateWidget.team1.HUMAN_REPLAY = 0 self.CreateWidget.team2.HUMAN_REPLAY = 0 elif self.loadMap and self.HumanCheckBox2.isChecked() and self.ModeCheck1.isChecked(): self.CenterWidget.HUMAN_REPLAY = 1 self.one_step = True self.CreateWidget.team1.HUMAN_REPLAY = 1 self.CreateWidget.team2.HUMAN_REPLAY = 1 if self.CenterWidget.HUMAN_REPLAY != -1 and not self.one_step: self.PlayPushButton.setCheckable(True) self.PlayPushButton.setEnabled(True) self.OneStepButton.setCheckable(True) self.OneStepButton.setEnabled(True) elif self.CenterWidget.HUMAN_REPLAY != -1 and self.one_step: self.PlayPushButton.setCheckable(False) self.PlayPushButton.setEnabled(False) self.OneStepButton.setCheckable(True) self.OneStepButton.setEnabled(True) else: self.PlayPushButton.setCheckable(False) self.PlayPushButton.setEnabled(False) self.OneStepButton.setCheckable(False) self.OneStepButton.setEnabled(False) if self.CenterWidget.HUMAN_REPLAY in [3, 4]: self.Frog2RadioButton.setEnabled(self.started) self.Frog1RadioButton.setEnabled(self.started) self.GodVisionRadioButton.setEnabled(self.started) self.OpenFileButton1.setEnabled(not self.started) self.OpenFileButton2.setEnabled(not self.started) self.LoadFilePushButton.setEnabled(not self.started) self.LoadMapPushButton.setEnabled(not self.started) self.HumanCheckBox1.setEnabled(not self.started) self.HumanCheckBox2.setEnabled(not self.started) self.ModeCheck1.setEnabled(not self.started) self.ModeCheck2.setEnabled(not self.started) self.StopPushButton.setEnabled(self.started) self.RoundSlider.blockSignals(not self.started) if self.CenterWidget.HUMAN_REPLAY in [0,1,2,4]: self.RoundSlider.blockSignals(True) if self.CenterWidget.HUMAN_REPLAY == 1: self.Frog1RadioButton.setChecked(False) self.Frog2RadioButton.setChecked(True) self.Frog2RadioButton.setEnabled(False) self.Frog1RadioButton.setEnabled(False) self.GodVisionRadioButton.setEnabled(False) self.CenterWidget.frogIndex = 1 elif self.CenterWidget.HUMAN_REPLAY == 0: self.Frog1RadioButton.setChecked(True) self.Frog2RadioButton.setChecked(False) self.Frog2RadioButton.setEnabled(False) self.Frog1RadioButton.setEnabled(False) self.GodVisionRadioButton.setEnabled(False) self.CenterWidget.frogIndex = 0 @pyqtSlot(int) def on_SpeedSlider_valueChanged(self, speed): self.CenterWidget.TIME_PER_STEP = 100 - speed * 0.8 @pyqtSlot(QString) def on_OpenFileComboBox1_currentIndexChanged(self, text): ainame1 = text if ainame1 and ainame1 != self.aiFileName1: self.aiFileName1 = ainame1 self.loadAi1 = True self.OpenFileComboBox1.setCurrentIndex(self.OpenFileComboBox1.count() - 1) self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.HumanCheckBox1.setChecked(False) self.ModeCheck1.setChecked(False) self.updateUi() @pyqtSlot(QString) def on_OpenFileComboBox2_currentIndexChanged(self, text): ainame2 = text if ainame2 and ainame2 != self.aiFileName2: self.aiFileName2 = ainame2 self.loadAi2 = True self.OpenFileComboBox2.setCurrentIndex(self.OpenFileComboBox2.count() - 1) self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.HumanCheckBox2.setChecked(False) self.ModeCheck2.setChecked(False) self.updateUi() @pyqtSlot(QString) def on_ReplayComboBox_currentIndexChanged(self, text): if self.ignore_change: self.ignore_change = False return fname = text print "in combo:",fname if fname and fname != self.repFileName: try: fileInfo = replayer.load(fname) except: QMessageBox.critical(self, QString.fromUtf8("文件加载错误"), QString.fromUtf8("加载中出现问题,加载失败。"), QMessageBox.Ok, QMessageBox.NoButton) else: self.loadRepFile = True self.fileInfo = fileInfo self.repFileName = fname self.ReplayComboBox.setCurrentIndex(self.ReplayComboBox.count() - 1) self.MapComboBox.setCurrentIndex(-1) self.OpenFileComboBox1.setCurrentIndex(-1) self.OpenFileComboBox2.setCurrentIndex(-1) self.HumanCheckBox1.setChecked(False) self.HumanCheckBox2.setChecked(False) self.loadMap = False self.loadAi1 = False self.loadAi2 = False self.mapInfo = None self.mapFileName = "" self.aiFileName1 = "" self.aiFileName2 = "" self.updateUi() @pyqtSlot(QString) def on_MapComboBox_currentIndexChanged(self, text): mapname = text if mapname and mapname != self.mapFileName: try: mapInfo = map_info.load(mapname) except: QMessageBox.critical(self, QString.fromUtf8("文件加载错误"), QString.fromUtf8("加载中出现问题,加载失败。"), QMessageBox.Ok, QMessageBox.NoButton) else: self.loadMap = True self.mapInfo = mapInfo self.mapFileName = mapname self.MapComboBox.setCurrentIndex(self.MapComboBox.count() - 1) self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.updateUi() @pyqtSlot() def on_ExitButton_clicked(self): self.HumanCheckBox1.setChecked(False) self.HumanCheckBox2.setChecked(False) self.ModeCheck1.setChecked(False) self.ModeCheck2.setChecked(False) self.isPaused = False self.started = False self.playing = False self.one_step = False self.fileInfo = None self.mapInfo = None self.repFileName = "" self.mapFileName = "" self.aiFileName1 = "" self.aiFileName2 = "" self.timer = None self.loadRepFile = False self.loadMap = False self.loadAi1 = False self.loadAi2 = False self.on_StopPushButton_clicked() self.MapComboBox.clear() self.ReplayComboBox.clear() self.OpenFileComboBox1.clear() self.OpenFileComboBox2.clear() self.updateUi() self.willreturn.emit() @pyqtSlot() def on_LoadFilePushButton_clicked(self): fname = unicode(QFileDialog.getOpenFileName(self, QString.fromUtf8("加载回放文件"), REPLAY_FILE_DIR, "replay files(*.battle)")) if fname and fname!= self.repFileName: try: fileInfo = replayer.load(fname) except: if fname != "": print "in except! fname:",fname QMessageBox.critical(self, QString.fromUtf8("文件加载错误"), QString.fromUtf8("加载中出现问题,加载失败。"), QMessageBox.Ok, QMessageBox.NoButton) else: print "Load file in else" self.ignore_change = True self.loadRepFile = True self.ReplayComboBox.addItem(fname) self.ReplayComboBox.setCurrentIndex(self.ReplayComboBox.count() - 1) self.fileInfo = fileInfo self.repFileName = fname self.MapComboBox.setCurrentIndex(-1) self.OpenFileComboBox1.setCurrentIndex(-1) self.OpenFileComboBox2.setCurrentIndex(-1) self.HumanCheckBox1.setChecked(False) self.HumanCheckBox2.setChecked(False) self.loadMap = False self.loadAi1 = False self.loadAi2 = False self.mapInfo = None self.mapFileName = "" self.aiFileName1 = "" self.aiFileName2 = "" self.updateUi() @pyqtSlot() def on_LoadMapPushButton_clicked(self): mapname = unicode(QFileDialog.getOpenFileName(self, QString.fromUtf8("加载地图"), REPLAY_FILE_DIR, "map files(*.map)")) if mapname and mapname != self.mapFileName: try: mapInfo = map_info.load(mapname) except: if mapname != "": QMessageBox.critical(self, QString.fromUtf8("文件加载错误"), QString.fromUtf8("加载中出现问题,加载失败。"), QMessageBox.Ok, QMessageBox.NoButton) else: self.loadMap = True self.MapComboBox.addItem(mapname) self.MapComboBox.setCurrentIndex(self.MapComboBox.count() - 1) self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.mapInfo = mapInfo self.mapFileName = mapname self.updateUi() @pyqtSlot() def on_OpenFileButton1_clicked(self): ainame1 = unicode(QFileDialog.getOpenFileName(self, QString.fromUtf8("加载ai1"), REPLAY_FILE_DIR, "ai files(*.exe)")) if ainame1 and ainame1 != self.aiFileName1: self.aiFileName1 = ainame1 self.loadAi1 = True self.OpenFileComboBox1.addItem(ainame1) self.OpenFileComboBox1.setCurrentIndex(self.OpenFileComboBox1.count() - 1) self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.HumanCheckBox1.setChecked(False) self.ModeCheck1.setChecked(False) self.updateUi() @pyqtSlot() def on_OpenFileButton2_clicked(self): ainame2 = unicode(QFileDialog.getOpenFileName(self, QString.fromUtf8("加载ai1"), REPLAY_FILE_DIR, "ai files(*.exe)")) if ainame2 and ainame2 != self.aiFileName2: self.aiFileName2 = ainame2 self.loadAi2 = True self.OpenFileComboBox2.addItem(ainame2) self.OpenFileComboBox2.setCurrentIndex(self.OpenFileComboBox2.count() - 1) self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.HumanCheckBox2.setChecked(False) self.ModeCheck2.setChecked(False) self.updateUi() @pyqtSlot(int) def on_HumanCheckBox1_stateChanged(self): if self.HumanCheckBox1.isChecked(): self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.OpenFileComboBox1.setCurrentIndex(-1) self.aiFileName1 = "" self.loadAi1 = False self.ModeCheck1.setChecked(False) self.updateUi() @pyqtSlot(int) def on_ModeCheck1_stateChanged(self): if self.ModeCheck1.isChecked(): self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.OpenFileComboBox1.setCurrentIndex(-1) self.aiFileName1 = "" self.loadAi1 = False self.HumanCheckBox1.setChecked(False) self.updateUi() @pyqtSlot(int) def on_HumanCheckBox2_stateChanged(self): if self.HumanCheckBox2.isChecked(): self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.OpenFileComboBox2.setCurrentIndex(-1) self.aiFileName2 = "" self.loadAi2 = False self.ModeCheck2.setChecked(False) self.updateUi() @pyqtSlot(int) def on_ModeCheck2_stateChanged(self): if self.ModeCheck2.isChecked(): self.ReplayComboBox.setCurrentIndex(-1) self.loadRepFile = False self.fileInfo = None self.repFileName = "" self.OpenFileComboBox2.setCurrentIndex(-1) self.aiFileName2 = "" self.loadAi2 = False self.HumanCheckBox2.setChecked(False) self.updateUi() @pyqtSlot(bool) def on_Frog1RadioButton_clicked(self, check): if check: self.CenterWidget.frogIndex = 0 self.CenterWidget.setFrog(0) @pyqtSlot(bool) def on_Frog2RadioButton_clicked(self, check): if check: self.CenterWidget.frogIndex = 1 self.CenterWidget.setFrog(1) @pyqtSlot(bool) def on_GodVisionRadioButton_clicked(self, check): if check: self.CenterWidget.frogIndex = -1 self.CenterWidget.resetFrog() @pyqtSlot() def on_OneStepButton_clicked(self): if self.started: if self.CenterWidget.HUMAN_REPLAY == 3: if self.CenterWidget.nowRound == self.fileInfo.max_round: return self.PlayPushButton.setChecked(False) self.CreateWidget.team1.Initialize(self.fileInfo) self.CreateWidget.team2.Initialize(self.fileInfo) if not self.isPaused: self.isPaused = True self.CenterWidget.Play(self.fileInfo) self.isPaused = True self.SmallMap.Initialize(self.fileInfo, self.CenterWidget.frogIndex) self.infoWidget1.setText(self.fileInfo) self.infoWidget2.updateInfo(self.fileInfo) self.RoundLcdNumber.display(self.fileInfo.round()) self.OneStepButton.setEnabled(False) else: self.updateUi() if self.loadMap and not self.mapInfo: try: mapInfo = map_info.load(self.mapFileName) except: if self.mapFileName != "": QMessageBox.critical(self, QString.fromUtf8("文件加载错误"), QString.fromUtf8("加载中出现问题,加载失败。"), QMessageBox.Ok, QMessageBox.NoButton) return else: self.mapInfo = mapInfo if self.loadRepFile and not self.fileInfo: try: fileInfo = replayer.load(self.repFileName) except: if self.repFileName != "": QMessageBox.critical(self, QString.fromUtf8("文件加载错误"), QString.fromUtf8("加载中出现问题,加载失败。"), QMessageBox.Ok, QMessageBox.NoButton) return else: self.fileInfo = fileInfo if self.CenterWidget.HUMAN_REPLAY == 4: if self.ModeCheck2.isChecked() and self.loadAi1: self.fileInfo = ai_battle.AIBattle(self.mapInfo, timeout = None, ai0_filename = str(self.aiFileName1), fixed_port = True) elif self.ModeCheck1.isChecked() and self.loadAi2: self.fileInfo = ai_battle.AIBattle(self.mapInfo, timeout = None, ai1_filename = str(self.aiFileName2), fixed_port = True) elif self.ModeCheck1.isChecked() and self.ModeCheck2.isChecked(): self.fileInfo = ai_battle.AIBattle(self.mapInfo, timeout = None, fixed_port = True) else: self.fileInfo = ai_battle.AIBattle(self.mapInfo, DEFAULT_PORT, DEFAULT_TIMEOUT, str(self.aiFileName1), str(self.aiFileName2)) self.GodVisionRadioButton.setChecked(True) elif self.CenterWidget.HUMAN_REPLAY == 0: if self.ModeCheck2.isChecked(): self.fileInfo = human_ai_battle.HumanAIBattle(self.mapInfo, timeout = None, fixed_port = True) else: self.fileInfo = human_ai_battle.HumanAIBattle(self.mapInfo, DEFAULT_PORT, DEFAULT_TIMEOUT, None, str(self.aiFileName2)) elif self.CenterWidget.HUMAN_REPLAY == 1: if self.ModeCheck1.isChecked(): self.fileInfo = human_ai_battle.HumanAIBattle(self.mapInfo, timeout = None, fixed_port = True, ai_team_num = 0) else: self.fileInfo = human_ai_battle.HumanAIBattle(self.mapInfo, DEFAULT_PORT, DEFAULT_TIMEOUT, None, str(self.aiFileName1), 0) elif self.CenterWidget.HUMAN_REPLAY == 2: QMessageBox.information(self, QString.fromUtf8("抱歉"), QString.fromUtf8("人人对战即将推出,敬请期待"), QMessageBox.Ok) self.HumanCheckBox2.setChecked(False) self.HumanCheckBox1.setChecked(False) self.on_StopPushButton_clicked() else: self.GodVisionRadioButton.setChecked(True) self.started = True if self.CenterWidget.HUMAN_REPLAY == 3: self.totalround = self.fileInfo.max_round self.RoundSlider.setRange(0,self.totalround) self.fileInfo.goto(0) self.synRoundSlider() else: self.totalround = self.fileInfo.map_info().max_round self.CreateWidget.team1.Initialize(self.fileInfo) self.CreateWidget.team2.Initialize(self.fileInfo) self.CenterWidget.Initialize(self.fileInfo) self.SmallMap.Initialize(self.fileInfo, self.CenterWidget.frogIndex) self.CenterWidget.Play(self.fileInfo) self.isPaused = True self.infoWidget1.setText(self.fileInfo) self.infoWidget2.updateInfo(self.fileInfo) self.RoundLcdNumber.display(self.fileInfo.round()) self.updateUi() self.OneStepButton.setEnabled(False) @pyqtSlot(bool) def on_PlayPushButton_toggled(self, trigger): if self.started: if trigger: self.isPaused = False if self.CenterWidget.HUMAN_REPLAY == 3: if self.CenterWidget.nowRound == self.fileInfo.max_round: return self.CreateWidget.team1.Initialize(self.fileInfo) self.CreateWidget.team2.Initialize(self.fileInfo) self.SmallMap.Initialize(self.fileInfo, self.CenterWidget.frogIndex) self.infoWidget1.setText(self.fileInfo) self.infoWidget2.updateInfo(self.fileInfo) self.RoundLcdNumber.display(self.fileInfo.round()) else: self.isPaused = True else: self.updateUi() if self.loadMap and not self.mapInfo: try: mapInfo = map_info.load(self.mapFileName) except: if self.mapFileName != "": QMessageBox.critical(self, QString.fromUtf8("文件加载错误"), QString.fromUtf8("加载中出现问题,加载失败。"), QMessageBox.Ok, QMessageBox.NoButton) return else: self.mapInfo = mapInfo if self.loadRepFile and not self.fileInfo: try: fileInfo = replayer.load(self.repFileName) except: if self.repFileName != "": QMessageBox.critical(self, QString.fromUtf8("文件加载错误"), QString.fromUtf8("加载中出现问题,加载失败。"), QMessageBox.Ok, QMessageBox.NoButton) return else: self.fileInfo = fileInfo if self.CenterWidget.HUMAN_REPLAY == 4: self.fileInfo = ai_battle.AIBattle(self.mapInfo, DEFAULT_PORT, DEFAULT_TIMEOUT, str(self.aiFileName1), str(self.aiFileName2)) self.GodVisionRadioButton.setChecked(True) elif self.CenterWidget.HUMAN_REPLAY == 0: self.fileInfo = human_ai_battle.HumanAIBattle(self.mapInfo, DEFAULT_PORT, DEFAULT_TIMEOUT, None, str(self.aiFileName2)) elif self.CenterWidget.HUMAN_REPLAY == 1: self.fileInfo = human_ai_battle.HumanAIBattle(self.mapInfo, DEFAULT_PORT, DEFAULT_TIMEOUT, None, str(self.aiFileName1), 0) elif self.CenterWidget.HUMAN_REPLAY == 2: QMessageBox.information(self, QString.fromUtf8("抱歉"), QString.fromUtf8("人人对战即将推出,敬请期待"), QMessageBox.Ok) self.HumanCheckBox2.setChecked(False) self.HumanCheckBox1.setChecked(False) self.on_StopPushButton_clicked() else: self.GodVisionRadioButton.setChecked(True) self.started = True if self.CenterWidget.HUMAN_REPLAY == 3: self.totalround = self.fileInfo.max_round self.RoundSlider.setRange(0,self.totalround) self.fileInfo.goto(0) self.synRoundSlider() else: self.totalround = self.fileInfo.map_info().max_round self.CreateWidget.team1.Initialize(self.fileInfo) self.CreateWidget.team2.Initialize(self.fileInfo) self.CenterWidget.Initialize(self.fileInfo) self.SmallMap.Initialize(self.fileInfo, self.CenterWidget.frogIndex) self.CenterWidget.Play(self.fileInfo) self.infoWidget1.setText(self.fileInfo) self.infoWidget2.updateInfo(self.fileInfo) self.RoundLcdNumber.display(self.fileInfo.round()) self.updateUi() def on_animEnd(self): self.CenterWidget.TerminateAni() self.OneStepButton.setEnabled(True) if self.CenterWidget.changed: self.CenterWidget.setMap() self.CenterWidget.setUnit() self.CenterWidget.mouseUnit.setVisible(False) if self.CenterWidget.frogIndex != -1: self.CenterWidget.setFrog(self.frogIndex) self.CenterWidget.changed = False if self.isPaused: return print "now:",self.CenterWidget.nowRound, "total is: ",self.totalround," state:",self.fileInfo.state() if self.CenterWidget.HUMAN_REPLAY == 3: if self.CenterWidget.nowRound == self.totalround: sts = None if self.fileInfo.state() == 0: sts = "0队获胜" elif self.fileInfo.state() == 1: sts = "1队获胜" else: sts = "平局" QMessageBox.information(self, QString.fromUtf8("游戏结束"), QString.fromUtf8(sts+" "+str(self.fileInfo.score(0))+":"+str(self.fileInfo.score(1))), QMessageBox.Ok) self.on_StopPushButton_clicked() return else: if self.fileInfo.state() in [0, 1, 2] or self.CenterWidget.nowRound == self.totalround: sts = None if self.fileInfo.state() == 0: sts = "0队获胜" elif self.fileInfo.state() == 1: sts = "1队获胜" else: sts = "平局" QMessageBox.information(self, QString.fromUtf8("游戏结束"), QString.fromUtf8(sts+" "+str(self.fileInfo.score(0))+":"+str(self.fileInfo.score(1))), QMessageBox.Ok) self.on_StopPushButton_clicked() return if self.CenterWidget.HUMAN_REPLAY == 3: self.synRoundSlider() self.CreateWidget.team1.Initialize(self.fileInfo) self.CreateWidget.team2.Initialize(self.fileInfo) self.CenterWidget.Play(self.fileInfo) self.SmallMap.Initialize(self.fileInfo, self.CenterWidget.frogIndex) self.infoWidget2.updateInfo(self.fileInfo) self.infoWidget1.setText(self.fileInfo) self.RoundLcdNumber.display(self.fileInfo.round()) @pyqtSlot(int) def on_RoundSlider_valueChanged(self, round_): if self.started: if round_ != self.CenterWidget.nowRound: self.CenterWidget.mouseUnit.setVisible(False) self.fileInfo.goto(round_) self.CreateWidget.team1.Initialize(self.fileInfo) self.CreateWidget.team2.Initialize(self.fileInfo) self.CenterWidget.nowRound = round_ if not self.isPaused: self.CenterWidget.Play(self.fileInfo) self.CenterWidget.Initialize(self.fileInfo) self.SmallMap.Initialize(self.fileInfo, self.CenterWidget.frogIndex) self.RoundLcdNumber.display(round_) self.infoWidget1.setText(self.fileInfo) self.infoWidget2.updateInfo(self.fileInfo) @pyqtSlot() def on_StopPushButton_clicked(self): self.started = False self.isPaused = True if self.CenterWidget.HUMAN_REPLAY != 3 and self.CenterWidget.HUMAN_REPLAY != -1: choice = QMessageBox.question(self, QString.fromUtf8("储存"), QString.fromUtf8("您想储存回放文件吗?"), QMessageBox.Yes|QMessageBox.No) if choice == QMessageBox.Yes: saveFile = QFileDialog.getSaveFileName(self, QString.fromUtf8("储存回放文件"), REPLAY_FILE_DIR, "replay files(*.battle)") try: self.fileInfo.map_info().max_round = self.CenterWidget.nowRound battle.Battle.save(self.fileInfo, saveFile) except: if saveFile != "": QMessageBox.critical(self, QString.fromUtf8("文件储存错误"), QString.fromUtf8("储存中出现问题,储存失败。"), QMessageBox.Ok, QMessageBox.NoButton) else: pass self.isPaused = False self.mapInfo = None self.CenterWidget.scale(1.0/self.CenterWidget.scale_num, 1.0/self.CenterWidget.scale_num) self.CenterWidget.scale_num = 1.0 self.SmallMap.reset() self.CreateWidget.team1.reset() self.CreateWidget.team2.reset() self.infoWidget1.reset() self.infoWidget2.resetUnitInfo() self.infoWidget2.reset() self.PlayPushButton.setCheckable(False) self.PlayPushButton.setEnabled(False) self.RoundSlider.setRange(0, 0) self.RoundLcdNumber.display(0) self.fileInfo = None self.updateUi() self.CenterWidget.reset() @pyqtSlot() def on_HelpButton_clicked(self): self.helpdlg.setVisible(True) @pyqtSlot() def synRoundSlider(self): self.RoundSlider.blockSignals(True) self.RoundSlider.setValue(self.CenterWidget.nowRound + 1) self.RoundSlider.blockSignals(False)