add tooltips to character selection

This commit is contained in:
cidoku 2025-02-12 19:57:36 -03:00
parent d06bc9943d
commit 2e589f1b36
3 changed files with 122 additions and 3004 deletions

View File

@ -6,132 +6,132 @@ from buttons import PixmapButton
AOpath = "base/" AOpath = "base/"
AO2XPpath = "AO2XPbase/" AO2XPpath = "AO2XPbase/"
#AOpath = "I:/aovanilla1.7.5/client/base/"
def get_option(section, value, default=""): def get_option(section, value, default=""):
tempini = ConfigParser() tempini = ConfigParser()
tempini.read("ao2xp.ini") tempini.read("ao2xp.ini")
return ini.read_ini(tempini, section, value, default) return ini.read_ini(tempini, section, value, default)
class CharIcon(QtGui.QLabel): class CharIcon(QtGui.QLabel):
def __init__(self, parent, ind): def __init__(self, parent, ind):
super(CharIcon, self).__init__(parent) super(CharIcon, self).__init__(parent)
self.parent = parent self.parent = parent
self.ind = ind self.ind = ind
def mousePressEvent(self, event): def mousePressEvent(self, event):
self.parent.onCharClicked(self.ind) self.parent.onCharClicked(self.ind)
class charselect(QtGui.QWidget): class charselect(QtGui.QWidget):
setBtnImage = QtCore.pyqtSignal(str, int) setBtnImage = QtCore.pyqtSignal(str, int)
def __init__(self, parent): def __init__(self, parent):
super(charselect, self).__init__(parent) super(charselect, self).__init__(parent)
self.parent = parent self.parent = parent
self.page = 0 self.page = 0
self.image = QtGui.QLabel(self) self.image = QtGui.QLabel(self)
self.image.setPixmap(QtGui.QPixmap(AO2XPpath+"themes/default/charselect_background.png")) self.image.setPixmap(QtGui.QPixmap(AO2XPpath+"themes/default/charselect_background.png"))
self.image.show() self.image.show()
self.quittolobby = QtGui.QPushButton(self) self.quittolobby = QtGui.QPushButton(self)
self.quittolobby.setText("Disconnect") self.quittolobby.setText("Disconnect")
self.quittolobby.resize(self.quittolobby.sizeHint()) self.quittolobby.resize(self.quittolobby.sizeHint())
self.quittolobby.clicked.connect(self.quitToLobby) self.quittolobby.clicked.connect(self.quitToLobby)
self.buttons = [] self.buttons = []
self.chartaken = [] self.chartaken = []
#directly stolen from ao2 source code and default theme because i was stuck (i'm so sorry) #directly stolen from ao2 source code and default theme because i was stuck (i'm so sorry)
btn_width, btn_height = 60, 60 btn_width, btn_height = 60, 60
x_spacing, y_spacing = 7, 7 x_spacing, y_spacing = 7, 7
x_mod_count, y_mod_count = 0, 0 x_mod_count, y_mod_count = 0, 0
left, top = 25, 36 left, top = 25, 36
width, height = 663, 596 width, height = 663, 596
columns = (width - btn_width) / (x_spacing + btn_width) +1 columns = (width - btn_width) / (x_spacing + btn_width) +1
rows = (height - btn_height) / (y_spacing + btn_height) +1 rows = (height - btn_height) / (y_spacing + btn_height) +1
self.max_chars_on_page = columns * rows self.max_chars_on_page = columns * rows
for i in range(self.max_chars_on_page): for i in range(self.max_chars_on_page):
self.buttons.append(CharIcon(self, i)) self.buttons.append(CharIcon(self, i))
self.chartaken.append(QtGui.QLabel(self)) self.chartaken.append(QtGui.QLabel(self))
self.chartaken[i].setPixmap(QtGui.QPixmap(AO2XPpath+"themes/default/char_taken.png")) self.chartaken[i].setPixmap(QtGui.QPixmap(AO2XPpath+"themes/default/char_taken.png"))
self.chartaken[i].hide() self.chartaken[i].hide()
x_pos = (btn_width + x_spacing) * x_mod_count x_pos = (btn_width + x_spacing) * x_mod_count
y_pos = (btn_height + y_spacing) * y_mod_count y_pos = (btn_height + y_spacing) * y_mod_count
self.buttons[i].setGeometry(left+x_pos, top+y_pos, btn_width, btn_height) self.buttons[i].setGeometry(left+x_pos, top+y_pos, btn_width, btn_height)
self.chartaken[i].move(left+x_pos, top+y_pos) self.chartaken[i].move(left+x_pos, top+y_pos)
self.buttons[i].show() self.buttons[i].show()
x_mod_count += 1 x_mod_count += 1
if x_mod_count == columns: if x_mod_count == columns:
y_mod_count += 1 y_mod_count += 1
x_mod_count = 0 x_mod_count = 0
self.prevpage = PixmapButton(self, QtGui.QPixmap(AO2XPpath+"themes/default/arrow_left.png")) self.prevpage = PixmapButton(self, QtGui.QPixmap(AO2XPpath+"themes/default/arrow_left.png"))
self.prevpage.move(left - self.prevpage.pixmap.size().width(), top + height) self.prevpage.move(left - self.prevpage.pixmap.size().width(), top + height)
self.prevpage.clicked.connect(self.prevPageButton) self.prevpage.clicked.connect(self.prevPageButton)
self.prevpage.show() self.prevpage.show()
self.nextpage = PixmapButton(self, QtGui.QPixmap(AO2XPpath+"themes/default/arrow_right.png")) self.nextpage = PixmapButton(self, QtGui.QPixmap(AO2XPpath+"themes/default/arrow_right.png"))
self.nextpage.move(left + width, top + height) self.nextpage.move(left + width, top + height)
self.nextpage.clicked.connect(self.nextPageButton) self.nextpage.clicked.connect(self.nextPageButton)
self.nextpage.show() self.nextpage.show()
self.setBtnImage.connect(self.setButtonImage) self.setBtnImage.connect(self.setButtonImage)
def quitToLobby(self): def quitToLobby(self):
self.parent.gamewindow.returnToMenu() self.parent.gamewindow.returnToMenu()
def setPic(self, pixmap, ind): def setPic(self, pixmap, ind):
self.buttons[ind].setPixmap(QtGui.QPixmap(pixmap)) self.buttons[ind].setPixmap(QtGui.QPixmap(pixmap))
def setCharList(self, charlist): def setCharList(self, charlist):
self.charlist = charlist self.charlist = charlist
self.page = 0 self.page = 0
self.showCharPage() self.showCharPage()
def nextPageButton(self): def nextPageButton(self):
self.page += 1 self.page += 1
self.showCharPage() self.showCharPage()
def prevPageButton(self): def prevPageButton(self):
self.page -= 1 self.page -= 1
self.showCharPage() self.showCharPage()
def showCharPage(self): def showCharPage(self):
for ind in range(self.page * self.max_chars_on_page, self.max_chars_on_page * (self.page+1)): for ind in range(self.page * self.max_chars_on_page, self.max_chars_on_page * (self.page+1)):
i = ind - (self.page * self.max_chars_on_page) i = ind - (self.page * self.max_chars_on_page)
if ind >= len(self.charlist): if ind >= len(self.charlist):
self.chartaken[i].hide() self.chartaken[i].hide()
self.buttons[i].hide() self.buttons[i].hide()
self.nextpage.hide() self.nextpage.hide()
continue continue
else: else:
self.nextpage.show() self.nextpage.show()
if self.page > 0: if self.page > 0:
self.prevpage.show() self.prevpage.show()
else: else:
self.prevpage.hide() self.prevpage.hide()
if exists(AOpath+"characters/"+self.charlist[ind][0]+"/char_icon.png"): # AO2 if exists(AOpath+"characters/"+self.charlist[ind][0]+"/char_icon.png"): # AO2
self.setBtnImage.emit(AOpath+"characters/"+self.charlist[ind][0]+"/char_icon.png", i) self.setBtnImage.emit(AOpath+"characters/"+self.charlist[ind][0]+"/char_icon.png", i)
elif exists(AOpath+"misc/demothings/"+self.charlist[ind][0]+"_char_icon.png"): # AO 1.7.5/1.8 elif exists(AOpath+"misc/demothings/"+self.charlist[ind][0]+"_char_icon.png"): # AO 1.7.5/1.8
self.setBtnImage.emit(AOpath+"misc/demothings/"+self.charlist[ind][0]+"_char_icon.png", i) self.setBtnImage.emit(AOpath+"misc/demothings/"+self.charlist[ind][0]+"_char_icon.png", i)
else: else:
self.setBtnImage.emit("placeholder.png", i) self.setBtnImage.emit("placeholder.png", i)
if self.charlist[ind][1] == 0: # free slot if self.charlist[ind][1] == 0: # free slot
self.chartaken[i].hide() self.chartaken[i].hide()
else: else:
self.chartaken[i].show() self.chartaken[i].show()
self.buttons[i].show() self.buttons[i].show()
self.buttons[i].setToolTip(self.charlist[ind][0])
def setButtonImage(self, filename, ind): def setButtonImage(self, filename, ind):
self.buttons[ind].setPixmap(QtGui.QPixmap(filename)) self.buttons[ind].setPixmap(QtGui.QPixmap(filename))
def onCharClicked(self, ind): def onCharClicked(self, ind):
self.parent.tcp.send("CC#0#"+str(ind+(self.page*self.max_chars_on_page))+"#ur mom gay#%") self.parent.tcp.send("CC#0#"+str(ind+(self.page*self.max_chars_on_page))+"#ur mom gay#%")
def show(self): def show(self):
super(charselect, self).show() super(charselect, self).show()
self.parent.gamewindow.setFixedSize(714, 668) self.parent.gamewindow.setFixedSize(714, 668)

Binary file not shown.

File diff suppressed because it is too large Load Diff