From 0ae0af3e1ac0182e6b51b903a01d7b27e957cad2 Mon Sep 17 00:00:00 2001 From: cidoku Date: Sun, 3 May 2026 23:16:42 -0400 Subject: [PATCH] stop music on empty MC --- AO2XP.py | 1 + gameview.py | 28 +++++++++++++++++++++++----- packets.py | 4 ++-- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/AO2XP.py b/AO2XP.py index c11896d..73161ce 100644 --- a/AO2XP.py +++ b/AO2XP.py @@ -190,6 +190,7 @@ def handler(msg_type, msg_string): pass QtCore.qInstallMsgHandler(handler) +print "AO2XP %s (%s %s %s, Python %s)" % (GAME_VERSION, platform.system(), platform.release(), platform.machine(), platform.python_version()) audio.init() game = MainWindow() game.show() diff --git a/gameview.py b/gameview.py index 7055a9e..000ce14 100644 --- a/gameview.py +++ b/gameview.py @@ -1253,12 +1253,14 @@ class GUI(QtGui.QWidget): self.btnMusicOptions = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "cog.png"), "", self.tabMusic) self.btnMusicOptions.setToolTip('Music options') self.btnMusicOptions.clicked.connect(self.onMusicOptionsClicked) - self.actMusicRandom = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "control_play_blue.png"), "&Play random", self.tabMusic) + self.actMusicRandom = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "control_play_blue.png"), "&Play random track", self.tabMusic) self.actMusicRandom.triggered.connect(self.onActMusicRandomTriggered) - self.actMusicCopy = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "page_copy.png"), "&Copy selected song name", self.tabMusic) + self.actMusicStop = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "control_stop_blue.png"), "&Stop current track", self.tabMusic) + self.actMusicStop.triggered.connect(self.onActMusicStopTriggered) + self.actMusicCopy = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "page_copy.png"), "&Copy selected track name", self.tabMusic) self.actMusicCopy.triggered.connect(self.onActMusicCopyTriggered) self.actMusicCopy.setDisabled(True) - self.actMusicAddCurrent = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "add.png"), "Add current song to private list", self.tabMusic) + self.actMusicAddCurrent = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "add.png"), "Add current track to private list", self.tabMusic) self.actMusicAddCurrent.triggered.connect(self.onActMusicAddCurrentTriggered) self.actMusicAddCurrent.setDisabled(True) self.actMusicSeparator = QtGui.QAction(self.tabMusic) @@ -1287,6 +1289,7 @@ class GUI(QtGui.QWidget): self.actMusicSwitchToPrivate.triggered.connect(self.onActMusicSwitchTriggered) self.mnuMusicOptions = QtGui.QMenu(self.tabMusic) self.mnuMusicOptions.addAction(self.actMusicRandom) + self.mnuMusicOptions.addAction(self.actMusicStop) self.mnuMusicOptions.addAction(self.actMusicCopy) self.mnuMusicOptions.addAction(self.actMusicAddCurrent) self.mnuMusicOptions.addAction(self.actMusicSeparator) @@ -2233,6 +2236,9 @@ class GUI(QtGui.QWidget): # self.actMusicEdit.setDisabled(False) # self.actMusicDelete.setDisabled(False) self.onMusicItemDoubleClicked(_item) + + def onActMusicStopTriggered(self): + self.sendOOCchat(self.OOCNameInput.text().toUtf8(), "/play ~stop.mp3") def onActMusicCopyTriggered(self): QtGui.QApplication.clipboard().setText(self.musicItems.currentItem().text()) @@ -4811,6 +4817,11 @@ class GUI(QtGui.QWidget): t = time.localtime() timestamp = "[%d:%.2d] " % (t[3], t[4]) if not self.demoPlaying else "" music = str(music) + + if not music: + self.stopMusic() + self.setCurrentMusicURL(None) + if charid != -1: try: name = self.charList[charid][0] @@ -4819,9 +4830,16 @@ class GUI(QtGui.QWidget): if showname: name += " (" + showname + ")" - self.ICLog.append(timestamp + '%s changed the music to %s' % (name, music)) + + if not music: + self.ICLog.append(timestamp + '%s stopped the music.' % name) + else: + self.ICLog.append(timestamp + '%s changed the music to %s.' % (name, music)) else: - self.ICLog.append(timestamp + 'The music was changed to %s' % music) + if not music: + self.ICLog.append(timestamp + 'The music was stopped.') + else: + self.ICLog.append(timestamp + 'The music was changed to %s.' % music) def onModCallReceived(self, reason): if self.sndModCall: diff --git a/packets.py b/packets.py index cc7c01f..fc711f5 100644 --- a/packets.py +++ b/packets.py @@ -24,7 +24,7 @@ class TCPThread(QtCore.QThread): discardMessageFromQueue = QtCore.pyqtSignal() send_attempts = 0 - max_attempts = 5 + max_attempts = 1 stop_now = False def __init__(self, parent): @@ -116,10 +116,10 @@ def handlePackets(caller, total, record=True): elif header == 'MC': del network[0] music = decodeAOString(network[0]) - if not music: return charid = int(network[1]) showname = decodeAOString(network[2].decode("utf-8")) if len(network) > 2 else None caller.playMusicRequested.emit(music, charid, showname) + if not music: return # TODO: TEMPORARY, TRYING TO FIND A WAY TO GET THIS OUT OF HERE WITHOUT FREEZING THE GUI THREAD caller.parent.playMusic(music)