From c4a98bcc50444cc6ad0086d208a68b5e3a1290ca Mon Sep 17 00:00:00 2001 From: cidoku Date: Sun, 19 Oct 2025 04:45:46 -0300 Subject: [PATCH] compare viewport and sprite aspect ratios to scale sprites properly --- gameview.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/gameview.py b/gameview.py index 537fc16..5016359 100644 --- a/gameview.py +++ b/gameview.py @@ -248,10 +248,11 @@ class AOCharMovie(QtGui.QLabel): xx = 0 # for restoring from screenshake yy = 0 # for restoring from screenshake - def __init__(self, parent): + def __init__(self, parent, gameview): QtGui.QLabel.__init__(self, parent) self.parent = parent + self.gameview = gameview self.setAlignment(QtCore.Qt.AlignCenter) self.timeMod = 60 self.playOnce = True @@ -535,16 +536,17 @@ class AOCharMovie(QtGui.QLabel): else: return QtCore.Qt.FastTransformation - def getAspect(self, taller): - if taller: - return QtCore.Qt.KeepAspectRatio - else: + def getAspect(self, size): + ratio = size.width() / float(size.height()) + if ratio >= self.gameview.viewportRatio: return QtCore.Qt.KeepAspectRatioByExpanding + else: + return QtCore.Qt.KeepAspectRatio def getScaledImage(self, f_img): if not f_img.isNull(): transform = self.getTransform(f_img.size().height() > self.size().height()) - aspect = self.getAspect(f_img.size().width() <= self.size().width()) + aspect = self.getAspect(f_img.size()) return f_img.scaled(self.size(), aspect, transform) return f_img @@ -1100,6 +1102,8 @@ class GUI(QtGui.QWidget): self.swapping = False self.iniSwapIndex = 0 self.background = 'default' + self.viewportScale = 1 + self.viewportRatio = 1 self.viewport = QtGui.QWidget(self) self.viewport.setObjectName("ui_viewport") @@ -1113,17 +1117,17 @@ class GUI(QtGui.QWidget): self.zoom = ZoomLines(self.viewport) - self.char = AOCharMovie(self.viewport) + self.char = AOCharMovie(self.viewport, self) self.char.done.connect(self.preanimDone) - self.sideChar = AOCharMovie(self.viewport) + self.sideChar = AOCharMovie(self.viewport, self) self.sideChar.hide() self.slideLastWit = [] self.slideLastPos = None - self.slideWitness = AOCharMovie(self.viewport) + self.slideWitness = AOCharMovie(self.viewport, self) self.slideWitness.showOnPlay = False self.slideWitness.hide() - self.slideSpeaker = AOCharMovie(self.viewport) + self.slideSpeaker = AOCharMovie(self.viewport, self) self.slideSpeaker.hide() self.slideSpeaker.showOnPlay = False @@ -1757,7 +1761,6 @@ class GUI(QtGui.QWidget): # Finally, load the theme self.width = 820 self.height = 730 - self.viewportScale = 1 self.defaultStyle = QtGui.QApplication.style().objectName() self.loadTheme() @@ -1767,6 +1770,7 @@ class GUI(QtGui.QWidget): stylesheet = "" self.emotePageGeometry = [] self.viewportScale = 0 + self.viewportRatio = 0 self.gamewindow.setStyleSheet("") self.chatbox.resetGeometry() self.btnReloadTheme.setVisible(False) @@ -1908,6 +1912,8 @@ class GUI(QtGui.QWidget): if not self.viewportScale: self.viewportScale = self.viewport.height() / float(192) + self.viewportRatio = self.viewport.width() / float(self.viewport.height()) + self.court.resize(self.viewport.size()) self.bench.resize(self.viewport.size()) self.whiteFlashLabel.resize(self.viewport.size())