Reduce latency on level change by loading all backgrounds at start

This commit is contained in:
adrienmalin 2018-08-22 02:09:53 +02:00
parent bac7f945ac
commit 9f2b687a8a

View File

@ -846,10 +846,11 @@ class Frames(QtWidgets.QWidget):
self.matrix.drop_signal.connect(self.stats.update_drop_score) self.matrix.drop_signal.connect(self.stats.update_drop_score)
self.matrix.lock_signal.connect(self.stats.update_score) self.matrix.lock_signal.connect(self.stats.update_score)
self.set_background( self.bg_image = QtGui.QImage(
os.path.join(consts.BG_IMAGE_DIR, consts.START_BG_IMAGE_NAME) os.path.join(consts.BG_IMAGE_DIR, consts.START_BG_IMAGE_NAME)
) )
self.resize_bg_image()
self.apply_settings() self.apply_settings()
def load_music(self): def load_music(self):
@ -895,15 +896,11 @@ class Frames(QtWidgets.QWidget):
self.resize_bg_image() self.resize_bg_image()
def reset_backgrounds(self): def reset_backgrounds(self):
backgrounds_paths = ( backgrounds = tuple(
os.path.join(consts.BG_IMAGE_DIR, entry.name) QtGui.QImage((os.path.join(consts.BG_IMAGE_DIR, entry.name)))
for entry in os.scandir(consts.BG_IMAGE_DIR) for entry in os.scandir(consts.BG_IMAGE_DIR)
) )
self.backgrounds_cycle = itertools.cycle(backgrounds_paths) self.backgrounds_cycle = itertools.cycle(backgrounds)
def set_background(self, path):
self.bg_image = QtGui.QImage(path)
self.resize_bg_image()
def resize_bg_image(self): def resize_bg_image(self):
self.resized_bg_image = QtGui.QPixmap.fromImage(self.bg_image) self.resized_bg_image = QtGui.QPixmap.fromImage(self.bg_image)
@ -965,7 +962,8 @@ class Frames(QtWidgets.QWidget):
self.new_piece() self.new_piece()
def new_level(self): def new_level(self):
self.set_background(next(self.backgrounds_cycle)) self.bg_image = QtGui.QImage(next(self.backgrounds_cycle))
self.resize_bg_image()
level = self.stats.new_level() level = self.stats.new_level()
self.matrix.new_level(level) self.matrix.new_level(level)