stop music on empty MC

This commit is contained in:
cidoku 2026-05-03 23:16:42 -04:00
parent 8f9d333915
commit 0ae0af3e1a
3 changed files with 26 additions and 7 deletions

View File

@ -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()

View File

@ -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:

View File

@ -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)