Compare commits

..

10 Commits

3 changed files with 498 additions and 153 deletions

View File

@ -1,5 +1,33 @@
self.gamewindow.setFixedSize(820, 730)
self.text.setGeometry(16, 32, VIEWPORT_W - 32, 112)
self.text.setStyleSheet('background-color: rgba(0, 0, 0, 0); color: white;')
self.ao2text.setGeometry(16, 32, VIEWPORT_W - 32, 112)
self.ao2text.setStyleSheet("background-color: rgba(0, 0, 0, 0); color: white;")
self.name.setStyleSheet('color: white')
self.name.move(16, -1)
self.name.resize(248, 32)
self.icchatinput.setGeometry(0, VIEWPORT_H, VIEWPORT_W, 23)
self.emotedropdown.setGeometry(164 - 28, 344 + 66 + 4, 72, 20)
self.colordropdown.setGeometry(self.emotedropdown.x(), 376 + 64, 72, 20)
self.posdropdown.setGeometry(self.emotedropdown.x() + self.emotedropdown.size().width() + 4, self.emotedropdown.y(), 72, 20)
self.flipbutton.move(self.posdropdown.x() + self.posdropdown.width() + 4, self.colordropdown.y() - 5)
self.sfxbutton.move(self.flipbutton.x(), self.flipbutton.y() + 14)
self.nointerruptbtn.move(self.flipbutton.x() + 140, self.flipbutton.y())
self.additivebtn.move(self.nointerruptbtn.x(), self.sfxbutton.y())
self.deskbtn.move(self.flipbutton.x()+70, self.flipbutton.y())
self.effectdropdown.setGeometry(self.posdropdown.x(), self.colordropdown.y(), 72, 20)
self.callmodbtn.setGeometry(10, 376 + 62, 60, 23)
self.settingsbtn.setGeometry(self.callmodbtn.x()+self.callmodbtn.size().width(), 376 + 62, self.callmodbtn.width(), 23)
self.changechar.setGeometry(10, 344 + 66 + 4, self.callmodbtn.size().width() + self.settingsbtn.size().width(), 23)
self.shownameedit.setGeometry(self.posdropdown.x() + self.posdropdown.width() + 4, self.posdropdown.y(), 168 + 56, 20)
self.ooclog.setGeometry(814 - 288, 0, 288, 248)
self.oocnameinput.resize(self.oocnameinput.sizeHint().width() - 32, self.oocnameinput.sizeHint().height())
self.oocnameinput.move(814 - 288, 248)
@ -8,29 +36,54 @@ self.oocinput.move(814 - 288 + self.oocnameinput.size().width(), 248)
self.ooclogin.resize(48, 20)
self.ooclogin.move(814 - (self.ooclogin.size().width()), self.oocinput.y() + self.ooclogin.size().height())
self.musicitems.setGeometry(814 - 288, 468, 288, 256)
self.musicareatabs.setGeometry(814 - 288, 468, 288, 256)
self.icLog.setGeometry(8, 8, 714 - 304 - 22, 212)
self.evidencedropdown.setGeometry(8, 8, 192, 20)
self.privatedropdown.setGeometry(8, 8, 192, 20)
self.evidencedesc.setGeometry(8, 108, 714 - 304 - 22, 112)
self.evidenceimage.setGeometry(326, 8, 70, 70)
self.evidenceadd.move(8, 32)
self.evidenceedit.move(8, 56)
self.evidencedelete.move(8, 80)
self.evidenceadd.resize(30, 26)
evidenceadd_size = self.evidenceadd.size()
self.evidenceedit.resize(evidenceadd_size)
self.evidencedelete.resize(evidenceadd_size)
self.evidenceload.resize(evidenceadd_size)
self.evidencesave.resize(evidenceadd_size)
self.evidencemoveprivate.resize(evidenceadd_size)
self.evidencemoveallprivate.resize(evidenceadd_size)
self.evidencemoveglobal.resize(evidenceadd_size)
self.evidencemoveallglobal.resize(evidenceadd_size)
self.evidenceswitchprivate.resize(evidenceadd_size)
self.evidenceswitchglobal.resize(evidenceadd_size)
self.evidenceedit.move(3 + self.evidenceadd.x() + self.evidenceadd.size().width(), self.evidenceadd.y())
self.evidencedelete.move(3 + self.evidenceedit.x() + self.evidenceedit.size().width(), self.evidenceadd.y())
self.evidencemoveprivate.move(3 + self.evidencedelete.x() + self.evidencedelete.size().width(), self.evidenceadd.y())
self.evidencemoveallprivate.move(3 + self.evidencemoveprivate.x() + self.evidencemoveprivate.size().width(), self.evidenceadd.y())
self.evidencemoveglobal.move(3 + self.evidencedelete.x() + self.evidencedelete.size().width(), self.evidenceadd.y())
self.evidencemoveallglobal.move(3 + self.evidencemoveprivate.x() + self.evidencemoveprivate.size().width(), self.evidenceadd.y())
self.evidenceswitchprivate.move(3 + self.evidencemoveallprivate.x() + self.evidencemoveallprivate.size().width(), self.evidenceadd.y())
self.evidenceswitchglobal.move(3 + self.evidencemoveallprivate.x() + self.evidencemoveallprivate.size().width(), self.evidenceadd.y())
self.evidenceload.move(3 + self.evidenceswitchprivate.x() + self.evidenceswitchprivate.size().width(), self.evidenceadd.y())
self.evidencesave.move(3 + self.evidenceload.x() + self.evidenceload.size().width(), self.evidenceadd.y())
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.playerList.setGeometry(8, 8, 714 - 304 - 22, 180)
self.removeQueue.resize(self.removeQueue.sizeHint())
self.removeQueue.move(8, self.msgqueueList.size().height() + 16)
self.clearQueue.move(self.removeQueue.x() + self.removeQueue.size().width(), self.removeQueue.y())
self.playerPair.resize(self.playerPair.sizeHint())
self.playerPair.move(8, self.playerList.size().height() + 16)
self.playerKick.resize(self.playerKick.sizeHint())
self.playerKick.move(16 + self.playerPair.size().width(), self.playerList.size().height() + 16)
self.playerBan.resize(self.playerBan.sizeHint())
self.playerBan.move(24 + self.playerPair.size().width() + self.playerKick.size().width(), self.playerList.size().height() + 16)
self.playerPair.move(8, self.playerList.size().height() + 16)
self.playerKick.move(8 + self.playerPair.x() + self.playerPair.size().width(), self.playerList.size().height() + 16)
self.playerBan.move(8 + self.playerKick.x() + self.playerKick.size().width(), self.playerList.size().height() + 16)
self.notmutedlabel.move(8, 8)
self.unmutedlist.setGeometry(8, 24, 160, 192)
@ -73,3 +126,6 @@ self.sliderlabel2.move(self.soundslider.x() + self.soundslider.size().width()+8,
self.sliderlabel3.move(self.blipslider.x() + self.blipslider.size().width()+8, self.blipslider.y())
self.pinglabel.setGeometry(self.sliderlabel3.x() + 32, self.sliderlabel3.y(), 96, 14)
self.defensebar.moveBar(265 + 164, 164 + 304)
self.prosecutionbar.moveBar(265 + 164, 178 + 304)

View File

@ -62,6 +62,7 @@ C_YELLOW = 5
C_PINK = 6
C_CYAN = 7
C_GRAY = 8
C_RAINBOW = 9 # proprietary
DOWNLOAD_BLACKLIST = []
@ -151,6 +152,16 @@ def download_thread(link, savepath):
def mockStr(text):
upper = random.choice([True, False])
if isinstance(text, QtCore.QString):
l = QtCore.QStringList(list(text))
for i in range(len(text)):
if text[i] == " ":
continue
l[i] = l[i].toUpper() if upper else l[i].toLower()
upper = not upper
return l.join("")
else:
l = list(text)
for i in range(len(text)):
if text[i] == " ":
@ -675,6 +686,8 @@ class gui(QtGui.QWidget):
charini = ConfigParser()
chatmsg = ''
charid = -1
login = False
privateinv = False
#ICchat = QtCore.pyqtSignal(str, str, str, str, str, str, int, int, int, int, int, int, int, int)
#ICchat = QtCore.pyqtSignal(list)
@ -746,27 +759,23 @@ class gui(QtGui.QWidget):
self.chatbox.setPixmap(chatbox)
self.chatbox.move(0, VIEWPORT_H - self.chatboxheight)
self.text = QtGui.QLabel(self.chatbox)
self.text.setWordWrap(True)
self.text.resize(VIEWPORT_W, 96)
self.text.move(6, 20)
self.text.setStyleSheet('color: white;')
self.text.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
self.text = QtGui.QTextEdit(self.chatbox)
self.text.setFrameStyle(QtGui.QFrame.NoFrame)
self.text.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.text.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.text.setReadOnly(True)
self.text.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.text.setFont(ao2text_font)
self.ao2text = QtGui.QTextEdit(self.chatbox)
self.ao2text.setFrameStyle(QtGui.QFrame.NoFrame)
self.ao2text.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.ao2text.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.ao2text.setReadOnly(True)
self.ao2text.setGeometry(16, 32, VIEWPORT_W - 32, 112)
self.ao2text.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.ao2text.setStyleSheet("background-color: rgba(0, 0, 0, 0); color: white;")
self.ao2text.setFont(ao2text_font)
self.name = QtGui.QLabel(self.chatbox)
self.name.setStyleSheet('color: white')
self.name.move(16, -1)
self.name.resize(248, 32)
self.name.setFont(name_font)
self.wtceview = WTCE_View(self)
@ -804,8 +813,14 @@ class gui(QtGui.QWidget):
self.ooclogin = QtGui.QPushButton("Login", self)
self.ooclogin.clicked.connect(self.onOOCLoginBtn)
self.musicitems = QtGui.QListWidget(self)
self.musicareatabs = QtGui.QTabWidget(self)
self.musicitems = QtGui.QListWidget()
self.musicitems.itemDoubleClicked.connect(self.onMusicClick)
self.areaitems = QtGui.QListWidget()
self.areaitems.itemDoubleClicked.connect(self.onAreaClick)
self.musicareatabs.addTab(self.musicitems, "Music")
self.musicareatabs.addTab(self.areaitems, "Areas")
self.gametabs = QtGui.QTabWidget(self)
self.gametab_log = QtGui.QWidget() # the IC chat log
@ -822,28 +837,67 @@ class gui(QtGui.QWidget):
self.icLog.textChanged.connect(self.icLogChanged)
self.evidencedropdown = QtGui.QComboBox(self.gametab_evidence)
self.evidencedropdown.currentIndexChanged.connect(self.changeEvidence)
self.evidencedropdown.currentIndexChanged.connect(self.changeGlobalEvidence)
self.privatedropdown = QtGui.QComboBox(self.gametab_evidence)
self.privatedropdown.currentIndexChanged.connect(self.changePrivateEvidence)
self.evidencedesc = QtGui.QTextEdit(self.gametab_evidence)
self.evidencedesc.setReadOnly(True)
self.evidenceimage = QtGui.QLabel(self.gametab_evidence)
self.evidenceimage.setPixmap(QtGui.QPixmap(AOpath + 'evidence/empty.png'))
self.evidenceimage.show()
self.evidenceadd = QtGui.QPushButton(self.gametab_evidence)
self.evidenceadd.setText('Add')
self.evidenceadd = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "add.png"), "", self.gametab_evidence)
self.evidenceadd.setToolTip('Add new evidence')
self.evidenceadd.clicked.connect(self.onAddEvidence)
self.evidenceedit = QtGui.QPushButton(self.gametab_evidence)
self.evidenceedit.setText('Edit')
self.evidenceedit = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "edit.png"), "", self.gametab_evidence)
self.evidenceedit.setToolTip('Edit selected evidence')
self.evidenceedit.clicked.connect(self.onEditEvidence)
self.evidencedelete = QtGui.QPushButton(self.gametab_evidence)
self.evidencedelete.setText('Delete')
self.evidencedelete = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "delete.png"), "", self.gametab_evidence)
self.evidencedelete.setToolTip('Delete selected evidence')
self.evidencedelete.clicked.connect(self.onDeleteEvidence)
self.evidenceload = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "folder.png"), "", self.gametab_evidence)
self.evidenceload.setToolTip('Import all evidence from file')
self.evidenceload.clicked.connect(self.onImportEvidence)
self.evidencesave = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "disk.png"), "", self.gametab_evidence)
self.evidencesave.setToolTip('Export all evidence to file')
self.evidencesave.clicked.connect(self.onExportEvidence)
self.evidencemoveprivate = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "arrow_right.png"), "", self.gametab_evidence)
self.evidencemoveprivate.setToolTip('Transfer selected evidence to private inventory')
self.evidencemoveprivate.clicked.connect(self.onTransferEvidence)
self.evidencemoveallprivate = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "arrow_right2.png"), "", self.gametab_evidence)
self.evidencemoveallprivate.setToolTip('Transfer all evidence to private inventory')
self.evidencemoveallprivate.clicked.connect(self.onTransferAllEvidence)
self.evidencemoveglobal = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "arrow_left.png"), "", self.gametab_evidence)
self.evidencemoveglobal.setToolTip('Transfer selected evidence to global inventory')
self.evidencemoveglobal.clicked.connect(self.onTransferEvidence)
self.evidencemoveallglobal = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "arrow_left2.png"), "", self.gametab_evidence)
self.evidencemoveallglobal.setToolTip('Transfer all evidence to global inventory')
self.evidencemoveallglobal.clicked.connect(self.onTransferAllEvidence)
self.evidenceswitchprivate = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "world.png"), "", self.gametab_evidence)
self.evidenceswitchprivate.setToolTip('Switch to private inventory')
self.evidenceswitchprivate.clicked.connect(self.onSwitchInventory)
self.evidenceswitchglobal = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "briefcase.png"), "", self.gametab_evidence)
self.evidenceswitchglobal.setToolTip('Switch to global inventory')
self.evidenceswitchglobal.clicked.connect(self.onSwitchInventory)
self.evidencepresent = PresentButton(self, self.gametab_evidence)
self.privatedropdown.hide()
self.evidencemoveglobal.hide()
self.evidencemoveallglobal.hide()
self.evidenceswitchglobal.hide()
self.msgqueueList = QtGui.QListWidget(self.gametab_msgqueue)
self.msgqueueList.itemClicked.connect(self.onClicked_msgqueue)
self.removeQueue = QtGui.QPushButton(self.gametab_msgqueue)
self.removeQueue.setText('Delete')
self.removeQueue.clicked.connect(self.onClicked_removeQueue)
self.clearQueue = QtGui.QPushButton(self.gametab_msgqueue)
self.clearQueue.setText('Clear')
self.clearQueue.clicked.connect(self.onClicked_clearQueue)
self.playerList = QtGui.QListWidget(self.gametab_players)
self.playerList.itemClicked.connect(self.onClicked_playerList)
@ -853,9 +907,11 @@ class gui(QtGui.QWidget):
self.playerKick = QtGui.QPushButton(self.gametab_players)
self.playerKick.setText('Kick')
self.playerKick.clicked.connect(self.onClicked_playerKick)
self.playerKick.setDisabled(True)
self.playerBan = QtGui.QPushButton(self.gametab_players)
self.playerBan.setText('Ban')
self.playerBan.clicked.connect(self.onClicked_playerBan)
self.playerBan.setDisabled(True)
self.unmutedlist = QtGui.QListWidget(self.gametab_mute)
self.mutedlist = QtGui.QListWidget(self.gametab_mute)
@ -921,79 +977,64 @@ class gui(QtGui.QWidget):
self.gametabs.addTab(self.gametab_log, 'Log')
self.gametabs.addTab(self.gametab_evidence, 'Evidence')
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_iniswap, 'INI swap')
self.gametabs.addTab(self.gametab_pair, 'Pair')
self.gametabs.addTab(self.gametab_misc, 'Misc')
self.gametabs.addTab(self.gametab_msgqueue, 'Queue')
self.icchatinput = QtGui.QLineEdit(self)
self.icchatinput.setGeometry(0, VIEWPORT_H, VIEWPORT_W, 23)
self.icchatinput.returnPressed.connect(self.onICreturn)
self.icchatinput.setPlaceholderText('Game chat')
self.emotedropdown = QtGui.QComboBox(self)
self.emotedropdown.setGeometry(164 - 28, 344 + 66 + 4, 72, 20)
self.emotedropdown.currentIndexChanged.connect(partial(self.changeEmote, True))
self.colordropdown = QtGui.QComboBox(self)
self.colordropdown.setGeometry(self.emotedropdown.x(), 376 + 64, 72, 20)
self.colordropdown.currentIndexChanged.connect(self.setChatColor)
self.posdropdown = QtGui.QComboBox(self)
self.posdropdown.addItems(["def", "pro", "wit", "hld", "hlp", "jud"])
self.posdropdown.setGeometry(self.emotedropdown.x() + self.emotedropdown.size().width() + 4, self.emotedropdown.y(), 72, 20)
self.posdropdown.currentIndexChanged.connect(self.setPosition)
self.flipbutton = QtGui.QCheckBox(self)
self.flipbutton.stateChanged.connect(self.changeFlipCheck)
self.flipbutton.setText('Flip')
self.flipbutton.resize(self.flipbutton.sizeHint())
self.flipbutton.move(self.posdropdown.x() + self.posdropdown.width() + 4, self.colordropdown.y() - 5)
self.sfxbutton = QtGui.QCheckBox(self)
self.sfxbutton.setChecked(True)
self.sfxbutton.stateChanged.connect(self.changeSfxCheck)
self.sfxbutton.setText('Play pre-animation')
self.sfxbutton.resize(self.sfxbutton.sizeHint())
self.sfxbutton.move(self.flipbutton.x(), self.flipbutton.y() + 14)
self.nointerruptbtn = QtGui.QCheckBox(self)
self.nointerruptbtn.setChecked(False)
self.nointerruptbtn.setText('No Interrupt')
self.nointerruptbtn.resize(self.nointerruptbtn.sizeHint())
self.nointerruptbtn.move(self.flipbutton.x() + 140, self.flipbutton.y())
# AO 2.8
self.additivebtn = QtGui.QCheckBox(self)
self.additivebtn.setChecked(False)
self.additivebtn.setText('Additive')
self.additivebtn.resize(self.additivebtn.sizeHint())
self.additivebtn.move(self.nointerruptbtn.x(), self.sfxbutton.y())
self.additivebtn.clicked.connect(self.onAdditiveCheck)
self.deskbtn = QtGui.QCheckBox(self)
self.deskbtn.setChecked(True)
self.deskbtn.setText('Desk')
self.deskbtn.resize(self.nointerruptbtn.sizeHint())
self.deskbtn.move(self.flipbutton.x()+70, self.flipbutton.y())
self.effectdropdown = QtGui.QComboBox(self)
self.effectdropdown.setGeometry(self.posdropdown.x(), self.colordropdown.y(), 72, 20)
self.callmodbtn = QtGui.QPushButton(self)
self.callmodbtn.setText('Call mod')
self.callmodbtn.setGeometry(10, 376 + 62, 60, 23)
self.callmodbtn.clicked.connect(self.onClick_callMod)
self.settingsbtn = QtGui.QPushButton("Settings", self)
self.settingsbtn.setGeometry(self.callmodbtn.x()+self.callmodbtn.size().width(), 376 + 62, self.callmodbtn.width(), 23)
self.settingsbtn.clicked.connect(self.gamewindow.showSettings)
self.changechar = QtGui.QPushButton(self)
self.changechar.setText('Switch character')
self.changechar.setGeometry(10, 344 + 66 + 4, self.callmodbtn.size().width() + self.settingsbtn.size().width(), 23)
self.changechar.clicked.connect(self.onClick_changeChar)
spacing = 1
@ -1030,8 +1071,6 @@ class gui(QtGui.QWidget):
self.objectsnd = 0
self.defensebar = buttons.PenaltyBars(self, 1)
self.prosecutionbar = buttons.PenaltyBars(self, 2)
self.defensebar.moveBar(265 + 164, 164 + 304)
self.prosecutionbar.moveBar(265 + 164, 178 + 304)
self.defensebar.minusClicked.connect(self.penaltyBarMinus)
self.defensebar.plusClicked.connect(self.penaltyBarPlus)
self.prosecutionbar.minusClicked.connect(self.penaltyBarMinus)
@ -1058,7 +1097,6 @@ class gui(QtGui.QWidget):
self.showname = ""
self.shownameedit = QtGui.QLineEdit(self)
self.shownameedit.textChanged.connect(self.onChangeShowname)
self.shownameedit.setGeometry(self.posdropdown.x() + self.posdropdown.width() + 4, self.posdropdown.y(), 168 + 56, 20)
self.shownameedit.setPlaceholderText("Showname")
self.musicslider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
@ -1083,6 +1121,7 @@ class gui(QtGui.QWidget):
self.chatbox.show()
self.areas = []
self.areas_len = 0
self.muteselected = -1
self.unmuteselected = -1
self.muted = []
@ -1097,6 +1136,7 @@ class gui(QtGui.QWidget):
self.msgqueue = []
self.selectedmsg = -1
self.evidence = []
self.privateevidence = []
self.selectedevi = -1
self.present = False
self.playerlist = {}
@ -1159,10 +1199,16 @@ class gui(QtGui.QWidget):
self.effectdropdown.setCurrentIndex(0)
def onOOCLoginBtn(self):
if not self.oocnameinput.text():
self.oocnameinput.setText("unnamed")
if not self.login:
password, ok = QtGui.QInputDialog.getText(self, "Login as moderator", "Enter password.")
if password and ok:
self.sendOOCchat(self.oocnameinput.text().toUtf8(), "/login")
self.sendOOCchat(self.oocnameinput.text().toUtf8(), password.toUtf8())
else:
self.sendOOCchat(self.oocnameinput.text().toUtf8(), "/logout")
def setPing(self, newping):
self.pinglabel.setText("Ping: %d" % newping)
@ -1254,9 +1300,9 @@ class gui(QtGui.QWidget):
def onMuteClick(self):
if self.unmutedlist.count() == 0:
return QtGui.QMessageBox.warning(self, 'smh', 'you muted everyone\nhow does it feel?')
return QtGui.QMessageBox.information(self, 'No character selected', 'There are no characters to mute.')
if self.muteselected == -1:
return QtGui.QMessageBox.warning(self, 'hey genius', 'who exactly are you muting?\nclick on their name then on the >> button')
return QtGui.QMessageBox.information(self, 'No character selected', 'To mute a character, select their name from the list to the left, then click the >> button.')
for i in range(len(self.charlist)):
if self.charlist[i][0] == self.unmutedlist.item(self.muteselected).text():
self.muted.append(i)
@ -1274,9 +1320,9 @@ class gui(QtGui.QWidget):
def onUnmuteClick(self):
if self.mutedlist.count() == 0:
return QtGui.QMessageBox.warning(self, 'smh', "you haven't muted anyone yet\nbet 5$ everyone there is talking endlessly like those kids at the classroom when the teacher hasn't arrived yet")
return QtGui.QMessageBox.information(self, 'No character selected', "There are no characters to unmute.")
if self.unmuteselected == -1:
return QtGui.QMessageBox.warning(self, 'hey genius', 'who exactly are you unmuting?\nclick on their name then on the >> button')
return QtGui.QMessageBox.information(self, 'No character selected', 'To unmute a character, select their name from the list to the right, then click the << button.')
for char in self.charlist:
if char[0] == self.mutedlist.item(self.unmuteselected).text():
del self.muted[self.unmuteselected]
@ -1335,7 +1381,12 @@ class gui(QtGui.QWidget):
self.tcp.send("RT#judgeruling#" +str(variant)+ "#%")
def onPVPacket(self, charname):
exec open(AO2XPpath+"ao2xp_themes/"+get_option("General", "theme", "default")+"/theme.py")
theme = get_option("General", "theme", "default")
try:
exec open(AO2XPpath+"ao2xp_themes/"+theme+"/theme.py")
except Exception as e:
QtGui.QMessageBox.critical(None, "Unable to load theme", "There was a problem loading the current theme \"%s\":\n\n%s." % (theme, e))
os._exit(-2)
if not self.swapping:
self.loadCharacter(charname)
@ -1466,10 +1517,149 @@ class gui(QtGui.QWidget):
self.evidence_editor.EditEvidence(self.selectedevi)
def onDeleteEvidence(self):
if self.selectedevi == -1:
return
if not self.privateinv:
if self.evidence:
self.tcp.send('DE#' + str(self.selectedevi) + '#%')
else:
self.tcp.send('DE#0#%')
elif len(self.privateevidence):
del self.privateevidence[self.selectedevi]
self.privatedropdown.removeItem(self.selectedevi)
def onExportEvidence(self):
path = str(QtGui.QFileDialog.getSaveFileName(self, "Save evidence", AOpath, "Evidence (*.ini)"))
if path:
evidence = self.evidence if not self.privateinv else self.privateevidence
inifile = ConfigParser()
for i in range(len(evidence)):
evi = evidence[i]
id = str(i)
inifile.add_section(id)
if isinstance(evi[0], QtCore.QString):
inifile.set(id, "name", evi[0].replace('\n', '\\n'))
inifile.set(id, "description", evi[1].replace('\n', '\\n'))
inifile.set(id, "image", evi[2])
else:
inifile.set(id, "name", evi[0].replace('\n', '\\n').encode('utf-8'))
inifile.set(id, "description", evi[1].replace('\n', '\\n').encode('utf-8'))
inifile.set(id, "image", evi[2].encode('utf-8'))
inifile.write(open(path, "wb"))
def onImportEvidence(self):
if not self.privateinv:
if QtGui.QMessageBox.warning(self, "Import evidence", 'This will OVERWRITE the global evidence server-side.\n\nContinue?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) == QtGui.QMessageBox.No:
return
else:
if QtGui.QMessageBox.warning(self, "Import evidence", 'This will OVERWRITE your private evidence.\n\nContinue?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) == QtGui.QMessageBox.No:
return
path = str(QtGui.QFileDialog.getOpenFileName(self, "Load evidence", AOpath, "Evidence (*.ini)"))
if path and exists(path):
evidence = []
inifile = ConfigParser()
inifile.read(path)
for section in inifile.sections():
name = ini.read_ini(inifile, section, "name").decode('utf-8').replace('\\n', '\n')
description = ini.read_ini(inifile, section, "description").decode('utf-8').replace('\\n', '\n')
image = ini.read_ini(inifile, section, "image", "empty.png")
evidence.append([name, description, image])
if self.privateinv:
dropdown = self.privatedropdown
self.privateevidence = evidence
if dropdown.count() > 0:
dropdown.clear()
if evidence:
for evi in evidence:
dropdown.addItem(evi[0])
dropdown.setCurrentIndex(self.selectedevi)
elif evidence:
if self.evidence:
for i in range(len(self.evidence)):
self.tcp.send('DE#' + str(self.selectedevi) + '#%')
for evi in evidence:
self.tcp.send('PE#' + evi[0] + '#' + evi[1] + '#' + evi[2] + '#%')
def onTransferEvidence(self):
if self.privateinv:
evi = self.privateevidence[self.selectedevi]
target = self.evidence
target_str = "global"
else:
evi = self.evidence[self.selectedevi]
target = self.privateevidence
target_str = "private"
if evi in target:
return QtGui.QMessageBox.information(self, "Can't transfer evidence", 'The evidence "%s" already exists in the %s inventory.' % (evi[0], target_str))
else:
if self.privateinv:
self.tcp.send('PE#' + evi[0] + '#' + evi[1] + '#' + evi[2] + '#%')
else:
self.privateevidence.append(evi)
self.privatedropdown.addItem(evi[0])
def onTransferAllEvidence(self):
fail = []
if self.privateinv:
evi = self.privateevidence[self.selectedevi]
origin = self.privateevidence
target = self.evidence
target_str = "global"
else:
evi = self.evidence[self.selectedevi]
origin = self.evidence
target = self.privateevidence
target_str = "private"
for evi in origin:
if evi in target:
fail.append(evi[0])
else:
if self.privateinv:
self.tcp.send('PE#' + evi[0] + '#' + evi[1] + '#' + evi[2] + '#%')
else:
self.privateevidence.append(evi)
self.privatedropdown.addItem(evi[0])
if fail:
return QtGui.QMessageBox.information(self, "Some evidence wasn't transferred", "The following evidence already exists in the %s inventory:\n\n%s." % (target_str, ", ".join(fail)))
def onSwitchInventory(self, reset=False):
self.privateinv = not self.privateinv
if self.privateinv and not reset:
self.present = False
self.evidencepresent.setPixmap(self.evidencepresent.button_off)
self.evidencepresent.hide()
self.evidencedropdown.hide()
self.privatedropdown.show()
self.evidencemoveglobal.show()
self.evidencemoveallglobal.show()
self.evidenceswitchglobal.show()
self.evidencemoveprivate.hide()
self.evidencemoveallprivate.hide()
self.evidenceswitchprivate.hide()
self.privatedropdown.setCurrentIndex(0)
self.changeEvidence(0, 1)
else:
self.evidencepresent.show()
self.evidencedropdown.show()
self.privatedropdown.hide()
self.evidencemoveglobal.hide()
self.evidencemoveallglobal.hide()
self.evidenceswitchglobal.hide()
self.evidencemoveprivate.show()
self.evidencemoveallprivate.show()
self.evidenceswitchprivate.show()
self.evidencedropdown.setCurrentIndex(0)
self.changeEvidence(0, 0)
def onClick_callMod(self):
if "modcall_reason" in self.features:
@ -1509,24 +1699,27 @@ class gui(QtGui.QWidget):
self.selectedplayer = s[1:s.indexOf("]")]
def onClicked_removeQueue(self):
if self.selectedmsg == -1:
return QtGui.QMessageBox.warning(self, 'Nothing selected', 'Select a message from the list to remove it.')
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.information(self, "No messages in queue", 'Enter a message on the game chat to add one.')
if self.selectedmsg == -1:
return QtGui.QMessageBox.information(self, 'No message selected', 'Select a message from the list to remove it.')
self.msgqueueList.takeItem(self.selectedmsg)
del self.msgqueue[self.selectedmsg]
def onClicked_clearQueue(self):
return QtGui.QMessageBox.information(self, "Clear queue", 'Not implemented.')
def onClicked_playerPair(self):
if not self.selectedplayer == -1:
self.gametabs.setCurrentWidget(self.gametab_pair)
self.paircheckbox.setChecked(True)
char = self.playerlist[str(self.selectedplayer)][1]
if char == '':
return QtGui.QMessageBox.warning(self, "Unable to pair", 'That player has no character selected.')
return QtGui.QMessageBox.information(self, "Unable to pair", 'That player has no character selected.')
else:
self.pairdropdown.setCurrentIndex([c[0] for c in self.charlist].index(char))
else:
return QtGui.QMessageBox.warning(self, 'No player selected', 'Select a player from the list to attempt pairing.')
return QtGui.QMessageBox.information(self, 'No player selected', 'Select a player from the list to attempt pairing.')
def onClicked_playerKick(self):
if not self.selectedplayer == -1:
@ -1534,7 +1727,7 @@ class gui(QtGui.QWidget):
if reason and ok:
self.tcp.send("MA#%s#0#%s#%%" % (self.selectedplayer, reason))
else:
return QtGui.QMessageBox.warning(self, 'No player selected', 'Select a player from the list to kick.')
return QtGui.QMessageBox.information(self, 'No player selected', 'Select a player from the list to kick.')
def onClicked_playerBan(self):
if not self.selectedplayer == -1:
@ -1544,14 +1737,30 @@ class gui(QtGui.QWidget):
if duration and ok:
self.tcp.send("MA#%s#%s#%s#%%" % (self.selectedplayer, duration, reason))
else:
return QtGui.QMessageBox.warning(self, 'No player selected', 'Select a player from the list to ban.')
return QtGui.QMessageBox.information(self, 'No player selected', 'Select a player from the list to ban.')
def changeEvidence(self, ind):
def changeEvidence(self, ind, kind):
if ind < 0:
return
if self.privateinv:
if not kind == 1:
return
evi = self.privateevidence
else:
if not kind == 0:
return
evi = self.evidence
self.selectedevi = ind
self.evidencedesc.setText(self.evidence[ind][1])
self.setEvidenceImg(self.evidenceimage, self.evidence[ind][2])
if len(evi) > 0:
self.evidencedesc.setText(evi[ind][1])
self.setEvidenceImg(self.evidenceimage, evi[ind][2])
def changeGlobalEvidence(self, ind):
self.changeEvidence(ind, 0)
def changePrivateEvidence(self, ind):
self.changeEvidence(ind, 1)
def changeEmote(self, dropdown, ind):
if ind == -1:
@ -1585,15 +1794,34 @@ class gui(QtGui.QWidget):
elif type == 'warning':
reply = QtGui.QMessageBox.warning(self, *args, **kwargs)
if self.willDisconnect:
self.stopMusic()
self.disconnectCommon()
self.gamewindow.returnToMenu()
def disconnectCommon(self):
self.onSwitchInventory(True)
self.selectedplayer = -1
self.playerList.clear()
self.playerKick.setDisabled(True)
self.playerBan.setDisabled(True)
self.ooclogin.setText("Login")
self.login = False
self.privateinv = False
self.tcp.close()
self.stopMusic()
def onMusicClick(self, item):
if "cccc_ic_support" in self.features and self.showname:
self.tcp.send('MC#' + item.text() + '#' + str(self.mychar) + '#' + self.showname + '#%')
else:
self.tcp.send('MC#' + item.text() + '#' + str(self.mychar) + '#%')
def onAreaClick(self, item):
area = item.text().split('\n')[0]
if "cccc_ic_support" in self.features and self.showname:
self.tcp.send('MC#' + area + '#' + str(self.mychar) + '#' + self.showname + '#%')
else:
self.tcp.send('MC#' + area + '#' + str(self.mychar) + '#%')
def icLogChanged(self):
if self.icLog.verticalScrollBar().value() == self.icLog.verticalScrollBar().maximum(): self.icLog.verticalScrollBar().setValue(self.icLog.verticalScrollBar().maximum())
@ -1601,8 +1829,6 @@ class gui(QtGui.QWidget):
if self.ooclog.verticalScrollBar().value() == self.ooclog.verticalScrollBar().maximum(): self.ooclog.verticalScrollBar().setValue(self.ooclog.verticalScrollBar().maximum())
def sendOOCchat(self, name, text):
print type(name)
print type(text)
self.tcp.send('CT#' + name + '#' + text + '#%')
def onOOCreturn(self):
@ -1629,14 +1855,18 @@ class gui(QtGui.QWidget):
if self.mocktext.isChecked():
text = mockStr(text)
if self.autocaps.isChecked():
l = list(text)
if isinstance(l[0], QtCore.QString):
l = QtCore.QStringList(list(text))
l[0] = l[0].toUpper()
else:
l[0] = l[0].upper()
if l[-1] != ".":
last = [".", "?", "!"]
if not l[-1] in last:
l.append(".")
text = "".join(l).replace(" i ", " I ").replace("i'm", "I'm").replace("it's", "It's")
text = l.join("").replace(" i ", " I ").replace("i'm", "I'm").replace("it's", "It's")
if self.spacebartext.isChecked():
l = QtCore.QStringList(list(text))
for i in range(1, len(l)+len(l)-1, 2):
l.insert(i, " ")
text = l.join("")
self.sendOOCchat(self.oocnameinput.text().toUtf8(), text)
self.oocinput.clear()
@ -1651,7 +1881,8 @@ class gui(QtGui.QWidget):
if self.autocaps.isChecked():
l = list(text)
l[0] = l[0].upper()
if l[-1] != ".":
last = [".", "?", "!"]
if not l[-1] in last:
l.append(".")
text = "".join(l).replace(" i ", " I ").replace("i'm", "I'm").replace("it's", "It's")
if self.spacebartext.isChecked():
@ -1769,7 +2000,6 @@ class gui(QtGui.QWidget):
fx = self.effectdropdown.currentText() if self.effectdropdown.currentIndex() > 0 else ""
fx_sound = ini.get_effect_sound(fx, self.charname)
p_effect = ini.read_ini(AOpath+"characters/"+self.charname+"/char.ini", "options", "effects")
# I have to encode it because otherwise accented characters make the client crash
msg += str(fx + "|" + p_effect + "|" + fx_sound + "#").encode('utf-8')
self.effectdropdown.setCurrentIndex(0)
@ -1874,7 +2104,7 @@ class gui(QtGui.QWidget):
#if f_char.lower() != self.charlist[f_char_id][0].lower():
# logcharname = self.charlist[f_char_id][0] + ' (' + f_char.decode("utf-8") + ')'
if self.m_chatmessage[SHOWNAME]:
if self.m_chatmessage[SHOWNAME] and self.m_chatmessage[SHOWNAME].lower() != f_char.lower():
try:
logcharname += " ("+self.m_chatmessage[SHOWNAME].decode('utf-8')+")"
except:
@ -1916,7 +2146,7 @@ class gui(QtGui.QWidget):
def set_text_color(self):
textcolor = int(self.m_chatmessage[TEXT_COLOR])
#is_rainbow = textcolor == 6
is_rainbow = textcolor == C_RAINBOW
if textcolor == 0:
color = QtGui.QColor(255, 255, 255)
@ -1936,11 +2166,13 @@ class gui(QtGui.QWidget):
color = QtGui.QColor(0, 255, 255)
elif textcolor == 8:
color = QtGui.QColor(200, 200, 200)
else:
color = QtGui.QColor(255, 255, 255)
# if is_rainbow:
# self.text.show()
# self.ao2text.hide()
# else:
if is_rainbow:
self.text.show()
self.ao2text.hide()
else:
self.text.hide()
self.ao2text.show()
@ -1948,8 +2180,11 @@ class gui(QtGui.QWidget):
style += "color: rgb("+str(color.red())+", "+str(color.green())+", "+str(color.blue())+")"
self.ao2text.setStyleSheet(style)
def set_scene(self):
def set_scene(self, init=False):
if not init:
side = self.m_chatmessage[SIDE]
else:
side = 'wit'
if side == 'def':
self.court.setPixmap(self.side_def)
@ -2332,11 +2567,11 @@ class gui(QtGui.QWidget):
f_character = QtCore.QString(f_character2)
if f_character == " ":
self.text.setText(self.text.text() + " ")
self.text.insertPlainText(" ")
self.ao2text.insertPlainText(" ")
elif f_character == "\n" or f_character == "\r":
self.text.setText(self.text.text() + "\n")
self.text.insertPlainText("\n")
self.ao2text.insertPlainText("\n")
elif f_character == "\\" and not self.next_character_is_not_special:
@ -2450,9 +2685,9 @@ class gui(QtGui.QWidget):
else:
self.ao2text.insertHtml(f_character)
else:
# if int(self.m_chatmessage[TEXT_COLOR]) == C_RAINBOW:
# self.text.setText(self.text.text() + f_character)
# else:
if int(self.m_chatmessage[TEXT_COLOR]) == C_RAINBOW:
self.text.insertHtml(f_character)
else:
self.ao2text.insertHtml(f_character)
if self.message_is_centered:
@ -2576,14 +2811,15 @@ class gui(QtGui.QWidget):
audio.sethandleattr(self.music, BASS_ATTRIB_VOL, self.musicslider.value() / 100.0)
audio.playhandle(self.music, True)
else:
print "[audio] Couldn't play music. Error", audio.getbasserror()
error = audio.getbasserror()
print "[audio] Couldn't play music. Error", error
# Here comes the evil HTTPS hack for XP systems, but it also allows us to download and play modules and midis, because, why not?
musext = os.path.splitext(basename(musl))[-1]
if musext in ['.mid', '.midi']:
self.specialstream = 1
elif musext in ['.xm', '.mod', '.mo3', '.it', '.s3m', '.mtm', '.umx']:
self.specialstream = 2
if musl.startswith("https") or self.specialstream:
if (musl.startswith("https") and error == 2) or self.specialstream:
print "[audio] Downloading music with urllib2"
self.download_thread = DownloadThread(self, mus)
self.download_thread.finished_signal.connect(self.playDownloadedMusic)
@ -2628,6 +2864,7 @@ class gui(QtGui.QWidget):
self.musiclist = musiclist
self.evidence = evidence
self.areas = areas
self.areas_len = len(areas[0])
self.features = features
if "base/" in webAO_bucket:
@ -2637,7 +2874,7 @@ class gui(QtGui.QWidget):
self.charselect.setCharList(charlist)
self.charselect.show()
self.oocnameinput.setText(ini.read_ini("AO2XP.ini", "General", "OOC name"))
self.oocnameinput.setText(ini.read_ini("AO2XP.ini", "General", "OOC name", "unnamed"))
self.shownameedit.setText(ini.read_ini("AO2XP.ini", "General", "Showname"))
self.pairdropdown.clear()
@ -2664,7 +2901,7 @@ class gui(QtGui.QWidget):
self.colordropdown.clear()
self.colordropdown.addItems(['white', 'green', 'red', 'orange', 'blue'])
if "yellowtext" in features:
self.colordropdown.addItems(['yellow', 'pink', 'cyan', 'gray'])
self.colordropdown.addItems(['yellow', 'pink', 'cyan', 'gray', 'rainbow'])
self.colordropdown.setCurrentIndex(self.mychatcolor)
for hp in hplist:
@ -2685,6 +2922,7 @@ class gui(QtGui.QWidget):
self.unmutedlist.addItem(char[0])
self.musicitems.clear()
self.areaitems.clear()
self.evidencedropdown.clear()
for evi in evidence:
self.evidencedropdown.addItem(evi[0])
@ -2700,6 +2938,9 @@ class gui(QtGui.QWidget):
self.icLog.append(logstart)
self.setBackground(background.lower())
self.set_scene(True)
self.chatbox.hide()
for msg in oocjoin:
self.ooclog.append(msg)
@ -2713,6 +2954,11 @@ class gui(QtGui.QWidget):
#songitem.setBackgroundColor(QtGui.QColor(255, 128, 128))
self.musicitems.addItem(songitem)
for area in areas[0]:
areaitem = QtGui.QListWidgetItem()
areaitem.setText("Area\n aaa\n aaa")
self.areaitems.addItem(areaitem)
for pid in playerlist:
self.updatePlayerList(pid, 0, 0)
for type in range(len(playerlist[pid])):
@ -2733,7 +2979,7 @@ class gui(QtGui.QWidget):
self.tcpthread.showCharSelect.connect(self.charselect.show)
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()
def allEvidence(self, evi):
@ -2808,7 +3054,7 @@ class EditEvidenceDialog(QtGui.QDialog):
def __init__(self, gamegui):
super(EditEvidenceDialog, self).__init__()
self.gamegui = gamegui
self.setWindowTitle('Add evidence')
self.setTitle()
self.resize(512, 384)
self.setModal(True)
@ -2872,10 +3118,22 @@ class EditEvidenceDialog(QtGui.QDialog):
name = encode_ao_str(self.eviname.text())
desc = encode_ao_str(self.evidesc.toPlainText())
if not self.gamegui.privateinv:
if self.editing:
self.gamegui.tcp.send('EE#' + str(self.edit_ind) + '#' + name + '#' + desc + '#' + self.filename + '#%')
else:
self.gamegui.tcp.send('PE#' + name + '#' + desc + '#' + self.filename + '#%')
else:
if self.editing:
self.gamegui.privateevidence[self.gamegui.selectedevi] = [unicode(name), unicode(desc), unicode(self.filename)]
self.gamegui.privatedropdown.setItemText(self.gamegui.selectedevi, name)
evi = self.gamegui.privateevidence[self.gamegui.selectedevi]
self.gamegui.evidencedesc.setText(evi[1])
self.gamegui.setEvidenceImg(self.gamegui.evidenceimage, evi[2])
else:
self.gamegui.privateevidence.append([name, desc, self.filename])
self.gamegui.privatedropdown.addItem(name)
self.eviname.setText('')
self.evidesc.setText('')
@ -2883,7 +3141,7 @@ class EditEvidenceDialog(QtGui.QDialog):
self.evipicture.setPixmap(evipic)
self.filename = 'empty.png'
self.editing = False
self.setWindowTitle('Add evidence')
self.setTitle()
self.choosepic.setCurrentIndex(self.emptyfile)
self.hide()
@ -2894,7 +3152,7 @@ class EditEvidenceDialog(QtGui.QDialog):
self.evipicture.setPixmap(evipic)
self.filename = 'empty.png'
self.editing = False
self.setWindowTitle('Add evidence')
self.setTitle()
self.choosepic.setCurrentIndex(self.emptyfile)
self.hide()
@ -2902,7 +3160,7 @@ class EditEvidenceDialog(QtGui.QDialog):
path = str(QtGui.QFileDialog.getOpenFileName(self, "Select an image", AOpath + 'evidence', "Images (*.png)"))
if path:
if not "/evidence/" in path.lower():
QtGui.QMessageBox.warning(self, 'Edit evidence', 'Please select a file from the evidence directory.')
QtGui.QMessageBox.warning(self, 'Wrong directory', 'Please select a file from the "evidence" directory.')
self.onBrowse()
return
@ -2911,21 +3169,27 @@ class EditEvidenceDialog(QtGui.QDialog):
ind = os.listdir(AOpath + 'evidence').index(file)
self.choosepic.setCurrentIndex(ind)
else:
QtGui.QMessageBox.warning(self, 'Edit evidence', 'Please select a PNG file.')
QtGui.QMessageBox.warning(self, 'Not a valid file', 'Please select a PNG image.')
self.onBrowse()
def EditEvidence(self, ind):
self.editing = True
self.edit_ind = ind
if self.gamegui.evidence[ind][2] not in self.filenames:
self.filenames.append(self.gamegui.evidence[ind][2])
self.choosepic.addItem(self.gamegui.evidence[ind][2].split('.')[0])
self.choosepic.setCurrentIndex(self.filenames.index(self.gamegui.evidence[ind][2]))
self.eviname.setText(self.gamegui.evidence[ind][0])
self.evidesc.setText(self.gamegui.evidence[ind][1])
self.setWindowTitle('Edit evidence')
evidence = self.gamegui.privateevidence if self.gamegui.privateinv else self.gamegui.evidence
if evidence[ind][2] not in self.filenames:
self.filenames.append(evidence[ind][2])
self.choosepic.addItem(evidence[ind][2].split('.')[0])
self.choosepic.setCurrentIndex(self.filenames.index(evidence[ind][2]))
self.eviname.setText(evidence[ind][0])
self.evidesc.setText(evidence[ind][1])
self.setWindowTitle("Edit evidence" if not self.gamegui.privateinv else "Edit evidence in private inventory")
self.show()
def setTitle(self):
self.setWindowTitle('Add evidence' if not self.gamegui.privateinv else "Add evidence to private inventory")
class EmoteButton(QtGui.QLabel):
@ -3002,7 +3266,7 @@ class TCP_Thread(QtCore.QThread):
charSlots = QtCore.pyqtSignal()
showCharSelect = QtCore.pyqtSignal()
allEvidence = QtCore.pyqtSignal(list)
#rainbowColor = QtCore.pyqtSignal(str)
rainbowColor = QtCore.pyqtSignal(str)
updatePlayerList = QtCore.pyqtSignal(str, int, int, str)
send_attempts = 0
@ -3014,18 +3278,15 @@ class TCP_Thread(QtCore.QThread):
def run(self):
pingtimer = 150
#rainbow = 0
rainbow = 0
sendtick = 0
tempdata = ""
color = QtGui.QColor()
#color.setHsv(rainbow, 255, 255)
color.setHsv(0, 255, 255)
color.setHsv(rainbow, 255, 255)
#color.setHsv(0, 255, 255)
while True:
if self.parent.disconnectnow:
self.parent.selectedplayer = -1
self.parent.playerList.clear()
self.parent.stopMusic()
self.parent.tcp.close()
self.parent.disconnectCommon()
self.quit()
return
pingtimer -= 1
@ -3034,13 +3295,13 @@ class TCP_Thread(QtCore.QThread):
self.parent.tcp.send('CH#%')
pingtimer = 150
# if self.parent.m_chatmessage[TEXT_COLOR] == "6":
# color.setHsv(rainbow, 255, 255)
# rainbow += 5
# if rainbow > 255:
# rainbow = 0
# #self.parent.text.setStyleSheet('color: rgb(' + str(color.red()) + ', ' + str(color.green()) + ', ' + str(color.blue()) + ')')
# self.rainbowColor.emit('color: rgb(' + str(color.red()) + ', ' + str(color.green()) + ', ' + str(color.blue()) + ')')
if self.parent.m_chatmessage[TEXT_COLOR] == str(C_RAINBOW):
color.setHsv(rainbow, 255, 255)
rainbow += 5
if rainbow > 255:
rainbow = 0
#self.parent.text.setStyleSheet('color: rgb(' + str(color.red()) + ', ' + str(color.green()) + ', ' + str(color.blue()) + ')')
self.rainbowColor.emit('background-color: rgba(0, 0, 0, 0); color: rgb(' + str(color.red()) + ', ' + str(color.green()) + ', ' + str(color.blue()) + ')')
if sendtick:
sendtick -= 1
@ -3157,7 +3418,7 @@ class TCP_Thread(QtCore.QThread):
elif header == 'KK':
reason = network[1]
self.parent.emit(QtCore.SIGNAL('showMessage(QString, QString, QString)'), 'critical', 'Connection lost', 'You were kicked off the server. (%s)' % reason)
self.parent.emit(QtCore.SIGNAL('showMessage(QString, QString, QString)'), 'critical', 'Connection lost', 'You were kicked from the server. (%s)' % reason)
elif header == 'KB':
reason = network[1]
@ -3165,11 +3426,21 @@ class TCP_Thread(QtCore.QThread):
elif header == 'BB': # message popup (AO 2.9)
message = network[1]
self.parent.emit(QtCore.SIGNAL('showMessage(QString, QString, QString)'), 'warning', 'Message from server', message)
self.parent.emit(QtCore.SIGNAL('showMessage(QString, QString, QString)'), 'information', 'Message from server', message)
elif header == 'AUTH': # login status (AO 2.9)
status = int(network[1])
statusStrings = ["You have logged out", "Wrong password", "Logged in"]
if status == 1:
self.parent.login = True
self.parent.playerKick.setDisabled(False)
self.parent.playerBan.setDisabled(False)
self.parent.ooclogin.setText("Log out")
elif status == -1:
self.parent.login = False
self.parent.playerKick.setDisabled(True)
self.parent.playerBan.setDisabled(True)
self.parent.ooclogin.setText("Login")
self.OOC_Log.emit("<b>%s</b>" % (statusStrings[status+1]))
elif header == "CHECK": #ping
@ -3181,14 +3452,30 @@ class TCP_Thread(QtCore.QThread):
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].decode('utf-8'))
elif header == 'ARUP':
del network[0]
type = int(network[0])
self.parent.areas[type] = [network[i] for i in range(1, len(network))]
for i in range(self.parent.areas_len):
try:
if self.parent.areas[1][i] == "CASING":
self.parent.areaitems.item(i).setText("%s\n%s | %s\n%s users | %s" % (self.parent.areas[4][i], self.parent.areas[1][i].title(), self.parent.areas[2][i], self.parent.areas[0][i], self.parent.areas[3][i]))
else:
self.parent.areaitems.item(i).setText("%s\n%s\n%s users | %s" % (self.parent.areas[4][i], self.parent.areas[1][i].title(), self.parent.areas[0][i], self.parent.areas[3][i].title()))
if self.parent.areas[3][i] == "LOCKED":
self.parent.areaitems.item(i).setIcon(QtGui.QIcon(AO2XPpath + "icons/" + "lock.png"))
else:
self.parent.areaitems.item(i).setIcon(QtGui.QIcon(AO2XPpath + "icons/" + "house.png"))
except:
pass
class DownloadThread(QtCore.QThread):
# Part of the evil HTTPS music download hack for XP systems
finished_signal = QtCore.pyqtSignal(int)

View File

@ -481,7 +481,7 @@ class AOServerInfo(QtCore.QThread):
gotChars = False
hplist = []
joinooc = []
areas = [[], [], [], []]
areas = [[], [], [], [], []]
features = []
evidence = []
playerlist = {}
@ -571,7 +571,7 @@ class AOServerInfo(QtCore.QThread):
self.setConnectProgress.emit('Requesting music list (%d)...' % maxmusic)
self.tcp.send('RM#%')
print '[client]', 'received characters (%d)' % len(charlist)
print '[client]', 'Received characters (%d)' % len(charlist)
elif header == 'SM':
if self.disconnect:
@ -582,7 +582,7 @@ class AOServerInfo(QtCore.QThread):
self.setConnectProgress.emit('Finishing...')
self.tcp.send('RD#%')
print '[client]', 'received songs (%d)' % len(musiclist)
print '[client]', 'Received songs (%d)' % len(musiclist)
elif header == 'CharsCheck':
if self.disconnect or not gotChars:
@ -595,7 +595,7 @@ class AOServerInfo(QtCore.QThread):
if self.disconnect:
continue
background = network[1]
print '[client]', 'courtroom background: %s' % background
print '[client]', 'Courtroom background: %s' % background
elif header == 'LE':
if self.disconnect:
@ -612,7 +612,7 @@ class AOServerInfo(QtCore.QThread):
evi[0] = decode_ao_str(evi[0].decode("utf-8"))
evi[1] = decode_ao_str(evi[1].decode("utf-8"))
evi[2] = decode_ao_str(evi[2].decode("utf-8"))
print '[client]', 'received evidence'
print '[client]', 'Received evidence'
elif header == 'HP':
if self.disconnect:
@ -624,17 +624,19 @@ class AOServerInfo(QtCore.QThread):
elif header == "ARUP": #AO2 2.6 new feature: area update
del network[0]
type = int(network[0])
if type == 0: #player count
areas[type] = [network[i] for i in range(1, len(network))]
else: #area status, casemakers or locked area
areas[type] = [network[i] for i in range(1, len(network))]
areas_len = len(areas[type])
print '[client]', 'the server has %d areas' % areas_len
for i in range(areas_len):
areas[4].append(musiclist[0])
del musiclist[0]
elif header == 'DONE':
if self.disconnect:
continue
self.setConnectProgress.emit('Done, loading...')
self.readySoon.emit()
print '[client]', 'finished requesting data, loading game...'
print '[client]', 'Finished requesting data. Loading game...'
readytick = 4
elif header == 'CT':