added player list
This commit is contained in:
parent
05044732c2
commit
87c7a522d8
4
AO2XP.py
4
AO2XP.py
@ -53,9 +53,9 @@ class gamewindow(QtGui.QMainWindow):
|
|||||||
frameGm.moveCenter(centerPoint)
|
frameGm.moveCenter(centerPoint)
|
||||||
self.move(frameGm.topLeft())
|
self.move(frameGm.topLeft())
|
||||||
|
|
||||||
def showGame(self, tcp, charlist, musiclist, background, evidence, areas, features=[], oocjoin=[], hplist=[], webAO_bucket=""):
|
def showGame(self, tcp, playerlist, charlist, musiclist, background, evidence, areas, features=[], oocjoin=[], hplist=[], webAO_bucket=""):
|
||||||
self.gamewidget.disconnectnow = False
|
self.gamewidget.disconnectnow = False
|
||||||
self.gamewidget.startGame(tcp, charlist, musiclist, background, evidence, areas, features, oocjoin, hplist, webAO_bucket)
|
self.gamewidget.startGame(tcp, playerlist, charlist, musiclist, background, evidence, areas, features, oocjoin, hplist, webAO_bucket)
|
||||||
self.stackwidget.setCurrentWidget(self.gamewidget)
|
self.stackwidget.setCurrentWidget(self.gamewidget)
|
||||||
|
|
||||||
def returnToMenu(self):
|
def returnToMenu(self):
|
||||||
|
@ -21,9 +21,15 @@ self.evidencedelete.move(8, 80)
|
|||||||
self.evidencepresent.move((714 - 304 - 22) / 2 - self.evidencepresent.button_off.size().width() / 2, self.evidencedesc.y() - self.evidencepresent.button_off.size().height())
|
self.evidencepresent.move((714 - 304 - 22) / 2 - self.evidencepresent.button_off.size().width() / 2, self.evidencedesc.y() - self.evidencepresent.button_off.size().height())
|
||||||
|
|
||||||
self.msgqueueList.setGeometry(8, 8, 714 - 304 - 22, 180)
|
self.msgqueueList.setGeometry(8, 8, 714 - 304 - 22, 180)
|
||||||
|
self.playerList.setGeometry(8, 8, 714 - 304 - 22, 180)
|
||||||
self.removeQueue.resize(self.removeQueue.sizeHint())
|
self.removeQueue.resize(self.removeQueue.sizeHint())
|
||||||
self.removeQueue.move(8, self.msgqueueList.size().height() + 16)
|
self.removeQueue.move(8, self.msgqueueList.size().height() + 16)
|
||||||
|
|
||||||
|
self.playerKick.resize(self.playerKick.sizeHint())
|
||||||
|
self.playerKick.move(8, self.playerList.size().height() + 16)
|
||||||
|
self.playerBan.resize(self.playerBan.sizeHint())
|
||||||
|
self.playerBan.move(16 + self.playerKick.width(), self.playerList.size().height() + 16)
|
||||||
|
|
||||||
self.notmutedlabel.move(8, 8)
|
self.notmutedlabel.move(8, 8)
|
||||||
self.unmutedlist.setGeometry(8, 24, 160, 192)
|
self.unmutedlist.setGeometry(8, 24, 160, 192)
|
||||||
self.mutedlist.setGeometry(238, 24, 160, 192)
|
self.mutedlist.setGeometry(238, 24, 160, 192)
|
||||||
|
101
gameview.py
101
gameview.py
@ -785,6 +785,7 @@ class gui(QtGui.QWidget):
|
|||||||
self.gametab_mute = QtGui.QWidget() # mute a player
|
self.gametab_mute = QtGui.QWidget() # mute a player
|
||||||
self.gametab_pair = QtGui.QWidget() # AO2 pair
|
self.gametab_pair = QtGui.QWidget() # AO2 pair
|
||||||
self.gametab_misc = QtGui.QWidget() # ao2xp misc/fun stuff
|
self.gametab_misc = QtGui.QWidget() # ao2xp misc/fun stuff
|
||||||
|
self.gametab_players = QtGui.QWidget() # client list
|
||||||
|
|
||||||
self.icLog = ChatLogs(self.gametab_log, 0, self.ooclog.logfile)
|
self.icLog = ChatLogs(self.gametab_log, 0, self.ooclog.logfile)
|
||||||
self.icLog.setReadOnly(True)
|
self.icLog.setReadOnly(True)
|
||||||
@ -814,6 +815,15 @@ class gui(QtGui.QWidget):
|
|||||||
self.removeQueue.setText('Delete')
|
self.removeQueue.setText('Delete')
|
||||||
self.removeQueue.clicked.connect(self.onClicked_removeQueue)
|
self.removeQueue.clicked.connect(self.onClicked_removeQueue)
|
||||||
|
|
||||||
|
self.playerList = QtGui.QListWidget(self.gametab_players)
|
||||||
|
self.playerList.itemClicked.connect(self.onClicked_playerList)
|
||||||
|
self.playerKick = QtGui.QPushButton(self.gametab_players)
|
||||||
|
self.playerKick.setText('Kick')
|
||||||
|
self.playerKick.clicked.connect(self.onClicked_playerKick)
|
||||||
|
self.playerBan = QtGui.QPushButton(self.gametab_players)
|
||||||
|
self.playerBan.setText('Ban')
|
||||||
|
self.playerBan.clicked.connect(self.onClicked_playerBan)
|
||||||
|
|
||||||
self.unmutedlist = QtGui.QListWidget(self.gametab_mute)
|
self.unmutedlist = QtGui.QListWidget(self.gametab_mute)
|
||||||
self.mutedlist = QtGui.QListWidget(self.gametab_mute)
|
self.mutedlist = QtGui.QListWidget(self.gametab_mute)
|
||||||
self.mutebtn = QtGui.QPushButton(self.gametab_mute)
|
self.mutebtn = QtGui.QPushButton(self.gametab_mute)
|
||||||
@ -876,11 +886,12 @@ class gui(QtGui.QWidget):
|
|||||||
self.misc_layout.addWidget(self.spacebartext)
|
self.misc_layout.addWidget(self.spacebartext)
|
||||||
self.misc_layout.addWidget(self.autocaps)
|
self.misc_layout.addWidget(self.autocaps)
|
||||||
|
|
||||||
self.gametabs.addTab(self.gametab_log, 'Game log')
|
self.gametabs.addTab(self.gametab_log, 'Log')
|
||||||
self.gametabs.addTab(self.gametab_evidence, 'Evidence')
|
self.gametabs.addTab(self.gametab_evidence, 'Evidence')
|
||||||
self.gametabs.addTab(self.gametab_msgqueue, 'Message queue')
|
self.gametabs.addTab(self.gametab_msgqueue, 'Queue')
|
||||||
|
self.gametabs.addTab(self.gametab_players, 'Players')
|
||||||
self.gametabs.addTab(self.gametab_mute, 'Mute')
|
self.gametabs.addTab(self.gametab_mute, 'Mute')
|
||||||
self.gametabs.addTab(self.gametab_iniswap, 'Easy IniSwap')
|
self.gametabs.addTab(self.gametab_iniswap, 'IniSwap')
|
||||||
self.gametabs.addTab(self.gametab_pair, 'Pair')
|
self.gametabs.addTab(self.gametab_pair, 'Pair')
|
||||||
self.gametabs.addTab(self.gametab_misc, 'Misc')
|
self.gametabs.addTab(self.gametab_misc, 'Misc')
|
||||||
|
|
||||||
@ -1054,6 +1065,8 @@ class gui(QtGui.QWidget):
|
|||||||
self.evidence = []
|
self.evidence = []
|
||||||
self.selectedevi = -1
|
self.selectedevi = -1
|
||||||
self.present = False
|
self.present = False
|
||||||
|
self.playerlist = {}
|
||||||
|
self.selectedplayer = -1
|
||||||
self.myflip = 0
|
self.myflip = 0
|
||||||
self.playsfx = 1
|
self.playsfx = 1
|
||||||
self.loadSwapCharacters()
|
self.loadSwapCharacters()
|
||||||
@ -1438,14 +1451,35 @@ class gui(QtGui.QWidget):
|
|||||||
for i in range(len(self.msgqueueList)):
|
for i in range(len(self.msgqueueList)):
|
||||||
if self.msgqueueList.item(i) == item:
|
if self.msgqueueList.item(i) == item:
|
||||||
self.selectedmsg = i
|
self.selectedmsg = i
|
||||||
|
|
||||||
|
def onClicked_playerList(self, item):
|
||||||
|
for i in range(len(self.playerList)):
|
||||||
|
sel = self.playerList.item(i)
|
||||||
|
if sel == item:
|
||||||
|
s = sel.text()
|
||||||
|
self.selectedplayer = s[1:s.indexOf("]")]
|
||||||
|
|
||||||
def onClicked_removeQueue(self):
|
def onClicked_removeQueue(self):
|
||||||
if self.selectedmsg == -1:
|
if self.selectedmsg == -1:
|
||||||
return QtGui.QMessageBox.warning(self, 'nothing selected', 'select a message from the list to remove it')
|
return QtGui.QMessageBox.warning(self, 'Nothing selected', 'Select a message from the list to remove it.')
|
||||||
if len(self.msgqueueList) == 0:
|
if len(self.msgqueueList) == 0:
|
||||||
return QtGui.QMessageBox.warning(self, "can't remove", 'there are no messages in the message queue\nenter a message on the Game chat to add one')
|
return QtGui.QMessageBox.warning(self, "Can't remove", 'There are no messages in the message queue.\nEnter a message on the Game chat to add one.')
|
||||||
self.msgqueueList.takeItem(self.selectedmsg)
|
self.msgqueueList.takeItem(self.selectedmsg)
|
||||||
del self.msgqueue[self.selectedmsg]
|
del self.msgqueue[self.selectedmsg]
|
||||||
|
|
||||||
|
def onClicked_playerKick(self):
|
||||||
|
if not self.selectedplayer == -1:
|
||||||
|
reason, ok = QtGui.QInputDialog.getText(self, "Kick a player", "Please enter the reason.", text="Being annoying")
|
||||||
|
if reason and ok:
|
||||||
|
self.tcp.send("MA#%s#0#%s#%%" % (self.selectedplayer, reason))
|
||||||
|
|
||||||
|
def onClicked_playerBan(self):
|
||||||
|
if not self.selectedplayer == -1:
|
||||||
|
reason, ok = QtGui.QInputDialog.getText(self, "Ban a player", "Please enter the reason.", text="Being annoying")
|
||||||
|
if reason and ok:
|
||||||
|
duration, ok = QtGui.QInputDialog.getInt(self, "Ban a player", "Please enter the ban length in minutes.", 60, 1)
|
||||||
|
if duration and ok:
|
||||||
|
self.tcp.send("MA#%s#%s#%s#%%" % (self.selectedplayer, duration, reason))
|
||||||
|
|
||||||
def changeEvidence(self, ind):
|
def changeEvidence(self, ind):
|
||||||
if ind < 0:
|
if ind < 0:
|
||||||
@ -2470,11 +2504,12 @@ class gui(QtGui.QWidget):
|
|||||||
audio.stophandle(self.music)
|
audio.stophandle(self.music)
|
||||||
audio.freehandle(self.music)
|
audio.freehandle(self.music)
|
||||||
|
|
||||||
def startGame(self, tcp, charlist, musiclist, background, evidence, areas, features=[], oocjoin=[], hplist=[], webAO_bucket=""):
|
def startGame(self, tcp, playerlist, charlist, musiclist, background, evidence, areas, features=[], oocjoin=[], hplist=[], webAO_bucket=""):
|
||||||
self.willDisconnect = False
|
self.willDisconnect = False
|
||||||
self.mychar = -1
|
self.mychar = -1
|
||||||
self.mychatcolor = 0
|
self.mychatcolor = 0
|
||||||
self.tcp = tcp
|
self.tcp = tcp
|
||||||
|
self.playerlist = playerlist
|
||||||
self.charlist = charlist
|
self.charlist = charlist
|
||||||
self.musiclist = musiclist
|
self.musiclist = musiclist
|
||||||
self.evidence = evidence
|
self.evidence = evidence
|
||||||
@ -2553,6 +2588,7 @@ class gui(QtGui.QWidget):
|
|||||||
self.ooclog.append(msg)
|
self.ooclog.append(msg)
|
||||||
|
|
||||||
for song in musiclist:
|
for song in musiclist:
|
||||||
|
song = song.replace("<and>","&")
|
||||||
songitem = QtGui.QListWidgetItem()
|
songitem = QtGui.QListWidgetItem()
|
||||||
songitem.setText(song)
|
songitem.setText(song)
|
||||||
if exists(AOpath + 'sounds/music/' + song):
|
if exists(AOpath + 'sounds/music/' + song):
|
||||||
@ -2560,6 +2596,11 @@ class gui(QtGui.QWidget):
|
|||||||
else:
|
else:
|
||||||
songitem.setBackgroundColor(QtGui.QColor(255, 128, 128))
|
songitem.setBackgroundColor(QtGui.QColor(255, 128, 128))
|
||||||
self.musicitems.addItem(songitem)
|
self.musicitems.addItem(songitem)
|
||||||
|
|
||||||
|
for pid in playerlist:
|
||||||
|
self.updatePlayerList(pid, 0, 0)
|
||||||
|
for type in range(len(playerlist[pid])):
|
||||||
|
self.updatePlayerList(pid, 1, type, playerlist[pid][type])
|
||||||
|
|
||||||
self.musicslider.setValue(ini.read_ini_int("AO2XP.ini", "Audio", "Music volume", 100))
|
self.musicslider.setValue(ini.read_ini_int("AO2XP.ini", "Audio", "Music volume", 100))
|
||||||
self.soundslider.setValue(ini.read_ini_int("AO2XP.ini", "Audio", "Sound volume", 100))
|
self.soundslider.setValue(ini.read_ini_int("AO2XP.ini", "Audio", "Sound volume", 100))
|
||||||
@ -2575,6 +2616,7 @@ class gui(QtGui.QWidget):
|
|||||||
self.tcpthread.charSlots.connect(partial(self.charselect.setCharList, self.charlist))
|
self.tcpthread.charSlots.connect(partial(self.charselect.setCharList, self.charlist))
|
||||||
self.tcpthread.showCharSelect.connect(self.charselect.show)
|
self.tcpthread.showCharSelect.connect(self.charselect.show)
|
||||||
self.tcpthread.allEvidence.connect(self.allEvidence)
|
self.tcpthread.allEvidence.connect(self.allEvidence)
|
||||||
|
self.tcpthread.updatePlayerList.connect(self.updatePlayerList)
|
||||||
self.tcpthread.rainbowColor.connect(self.text.setStyleSheet)
|
self.tcpthread.rainbowColor.connect(self.text.setStyleSheet)
|
||||||
self.tcpthread.start()
|
self.tcpthread.start()
|
||||||
|
|
||||||
@ -2595,6 +2637,40 @@ class gui(QtGui.QWidget):
|
|||||||
self.evidencedesc.setText('.')
|
self.evidencedesc.setText('.')
|
||||||
else:
|
else:
|
||||||
self.evidencedropdown.setCurrentIndex(self.selectedevi)
|
self.evidencedropdown.setCurrentIndex(self.selectedevi)
|
||||||
|
|
||||||
|
def updatePlayerList(self, id, op, type, data=""):
|
||||||
|
id = str(id)
|
||||||
|
if op == 0: # Add or remove player
|
||||||
|
if type == 0: # Add a player
|
||||||
|
self.playerList.addItem("[%s]" % id)
|
||||||
|
if not id in self.playerlist:
|
||||||
|
self.playerlist[id] = ["", "", "", ""]
|
||||||
|
if type == 1: # Remove a player
|
||||||
|
item = self.playerList.findItems("[%s]" % id, QtCore.Qt.MatchStartsWith)
|
||||||
|
if item:
|
||||||
|
self.playerList.takeItem(self.playerList.row(item[0]))
|
||||||
|
if id in self.playerlist:
|
||||||
|
del self.playerlist[id]
|
||||||
|
else: # Update a player
|
||||||
|
if id in self.playerlist:
|
||||||
|
self.playerlist[id][type] = data
|
||||||
|
|
||||||
|
item = self.playerList.findItems("[%s]" % id, QtCore.Qt.MatchStartsWith)
|
||||||
|
if item:
|
||||||
|
name = self.playerlist[id][0]
|
||||||
|
char = self.playerlist[id][1]
|
||||||
|
charname = self.playerlist[id][2]
|
||||||
|
text = "[%s]" % id
|
||||||
|
#4 ['s', 'cornelia (og)', 'Cornelia', '0']
|
||||||
|
#[4] cornelia (og) (Cornelia) s
|
||||||
|
if char:
|
||||||
|
text += " %s" % char
|
||||||
|
if charname:
|
||||||
|
text += " (%s)" % charname
|
||||||
|
if name:
|
||||||
|
text += " %s" % name
|
||||||
|
item[0].setText(text)
|
||||||
|
pass
|
||||||
|
|
||||||
class PresentButton(QtGui.QLabel):
|
class PresentButton(QtGui.QLabel):
|
||||||
|
|
||||||
@ -2790,6 +2866,7 @@ class TCP_Thread(QtCore.QThread):
|
|||||||
showCharSelect = QtCore.pyqtSignal()
|
showCharSelect = QtCore.pyqtSignal()
|
||||||
allEvidence = QtCore.pyqtSignal(list)
|
allEvidence = QtCore.pyqtSignal(list)
|
||||||
rainbowColor = QtCore.pyqtSignal(str)
|
rainbowColor = QtCore.pyqtSignal(str)
|
||||||
|
updatePlayerList = QtCore.pyqtSignal(str, int, int, str)
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super(TCP_Thread, self).__init__(parent)
|
super(TCP_Thread, self).__init__(parent)
|
||||||
@ -2942,10 +3019,20 @@ class TCP_Thread(QtCore.QThread):
|
|||||||
status = int(network[1])
|
status = int(network[1])
|
||||||
statusStrings = ["You have logged out", "Wrong password", "Logged in"]
|
statusStrings = ["You have logged out", "Wrong password", "Logged in"]
|
||||||
self.OOC_Log.emit("<b>%s</b>" % (statusStrings[status+1]))
|
self.OOC_Log.emit("<b>%s</b>" % (statusStrings[status+1]))
|
||||||
|
|
||||||
elif header == "CHECK": #ping
|
elif header == "CHECK": #ping
|
||||||
pingafter = time.time()
|
pingafter = time.time()
|
||||||
self.parent.gotPing.emit(int((pingafter - pingbefore)*1000))
|
self.parent.gotPing.emit(int((pingafter - pingbefore)*1000))
|
||||||
|
|
||||||
elif header == 'DONE':
|
elif header == 'DONE':
|
||||||
self.showCharSelect.emit()
|
self.showCharSelect.emit()
|
||||||
|
|
||||||
|
elif header == 'PR':
|
||||||
|
del network[0]
|
||||||
|
#print "(PR) id: %s, type: %d" % (network[0], int(network[1]))
|
||||||
|
self.updatePlayerList.emit(network[0], 0, int(network[1]), "")
|
||||||
|
|
||||||
|
elif header == 'PU':
|
||||||
|
del network[0]
|
||||||
|
#print "(PU) id: %s, type: %d, data: %s" % (network[0], int(network[1]), network[2])
|
||||||
|
self.updatePlayerList.emit(network[0], 1, int(network[1]), network[2])
|
||||||
|
22
mainmenu.py
22
mainmenu.py
@ -207,8 +207,8 @@ class lobby(QtGui.QWidget):
|
|||||||
self.actual_serverlist.append((ip, port, name, desc, ws_port))
|
self.actual_serverlist.append((ip, port, name, desc, ws_port))
|
||||||
|
|
||||||
def moveToGame(self, stuff):
|
def moveToGame(self, stuff):
|
||||||
tcp, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, webAO_bucket = stuff
|
tcp, playerlist, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, webAO_bucket = stuff
|
||||||
self.move_to_game(tcp, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, webAO_bucket)
|
self.move_to_game(tcp, playerlist, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, webAO_bucket)
|
||||||
|
|
||||||
def onSettingsClicked(self):
|
def onSettingsClicked(self):
|
||||||
self.gamewindow.showSettings()
|
self.gamewindow.showSettings()
|
||||||
@ -326,8 +326,8 @@ class lobby(QtGui.QWidget):
|
|||||||
self.aoserverinfo.stop()
|
self.aoserverinfo.stop()
|
||||||
self.aoserverinfo.start()
|
self.aoserverinfo.start()
|
||||||
|
|
||||||
def move_to_game(self, tcp, charlist, musiclist, background, evidence, areas, features=[], oocjoin=[], hplist=[], webAO_bucket=""):
|
def move_to_game(self, tcp, playerlist, charlist, musiclist, background, evidence, areas, features=[], oocjoin=[], hplist=[], webAO_bucket=""):
|
||||||
self.gamewindow.showGame(tcp, charlist, musiclist, background, evidence, areas, features, oocjoin, hplist, webAO_bucket)
|
self.gamewindow.showGame(tcp, playerlist, charlist, musiclist, background, evidence, areas, features, oocjoin, hplist, webAO_bucket)
|
||||||
|
|
||||||
def lobby_sendchat(self):
|
def lobby_sendchat(self):
|
||||||
#text = self.lobbychatinput.text().toUtf8()
|
#text = self.lobbychatinput.text().toUtf8()
|
||||||
@ -463,6 +463,7 @@ class AOServerInfo(QtCore.QThread):
|
|||||||
areas = [[], [], [], []]
|
areas = [[], [], [], []]
|
||||||
features = []
|
features = []
|
||||||
evidence = []
|
evidence = []
|
||||||
|
playerlist = {}
|
||||||
pingtimer = 150
|
pingtimer = 150
|
||||||
readytick = -1
|
readytick = -1
|
||||||
|
|
||||||
@ -482,7 +483,7 @@ class AOServerInfo(QtCore.QThread):
|
|||||||
if readytick == 0:
|
if readytick == 0:
|
||||||
readytick = -1
|
readytick = -1
|
||||||
try:
|
try:
|
||||||
self.moveToGameSignal.emit([self.tcp, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, self.webAO_bucket])
|
self.moveToGameSignal.emit([self.tcp, playerlist, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, self.webAO_bucket])
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
self.msgbox_signal.emit(0, "Error caught while loading", traceback.format_exc(err))
|
self.msgbox_signal.emit(0, "Error caught while loading", traceback.format_exc(err))
|
||||||
self.returnToLobby.emit()
|
self.returnToLobby.emit()
|
||||||
@ -620,4 +621,13 @@ class AOServerInfo(QtCore.QThread):
|
|||||||
continue
|
continue
|
||||||
name = network[1].decode("utf-8").replace('<dollar>', '$').replace('<percent>', '%').replace('<and>', '&').replace('<num>', '#').replace('<pound>', '#')
|
name = network[1].decode("utf-8").replace('<dollar>', '$').replace('<percent>', '%').replace('<and>', '&').replace('<num>', '#').replace('<pound>', '#')
|
||||||
chatmsg = network[2].decode("utf-8").replace('<dollar>', '$').replace('<percent>', '%').replace('<and>', '&').replace('<num>', '#').replace('<pound>', '#')
|
chatmsg = network[2].decode("utf-8").replace('<dollar>', '$').replace('<percent>', '%').replace('<and>', '&').replace('<num>', '#').replace('<pound>', '#')
|
||||||
joinooc.append("%s: %s" % (name, chatmsg))
|
joinooc.append("%s: %s" % (name, chatmsg))
|
||||||
|
|
||||||
|
elif header == 'PU':
|
||||||
|
del network[0]
|
||||||
|
pid = network[0]
|
||||||
|
if not pid in playerlist:
|
||||||
|
playerlist[pid] = []
|
||||||
|
playerlist[pid].append(network[2])
|
||||||
|
#print "(PU) id: %d, type: %d, data: %s" % (int(network[0]), int(network[1]), network[2])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user