compare viewport and sprite aspect ratios to scale sprites properly

This commit is contained in:
cidoku 2025-10-19 04:45:46 -03:00
parent 664c9bde46
commit c4a98bcc50

View File

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