Implement Niko walking off part of journal

This commit is contained in:
Vinyl Darkscratch 2018-03-08 02:55:08 -08:00
parent d0ef020985
commit 9b6030414c

View file

@ -33,6 +33,14 @@ class WatchPipe(QThread):
self.change_image.emit(message.decode()) self.change_image.emit(message.decode())
time.sleep(0.05) time.sleep(0.05)
class AnimationTimer(QThread):
next_frame = pyqtSignal()
def run(self):
while True:
self.next_frame.emit()
time.sleep(1.0/60)
class Journal(QWidget): class Journal(QWidget):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -77,21 +85,37 @@ class Journal(QWidget):
class Niko(QWidget): class Niko(QWidget):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.x, self.y = kwargs['x'], kwargs['y'] self.x, self.y, self.start_y, self.app, self.thread = kwargs['x'], kwargs['y'], kwargs['y'], kwargs['app'], kwargs['thread']
self.screen_width, self.screen_height = kwargs['screen_width'], kwargs['screen_height'] self.screen_width, self.screen_height = kwargs['screen_width'], kwargs['screen_height']
del kwargs['x'], kwargs['y'], kwargs['screen_width'], kwargs['screen_height'] del kwargs['x'], kwargs['y'], kwargs['screen_width'], kwargs['screen_height'], kwargs['app'], kwargs['thread']
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint) self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
self.setAttribute(Qt.WA_TranslucentBackground) self.setAttribute(Qt.WA_TranslucentBackground)
self.setMouseTracking(True)
self.setWindowTitle('') self.setWindowTitle('')
self.setMinimumSize(self.screen_width, self.screen_height) self.setMinimumSize(self.screen_width, self.screen_height)
self.setMaximumSize(self.screen_width, self.screen_height) self.setMaximumSize(self.screen_width, self.screen_height)
self.setGeometry(0, 0, self.screen_width, self.screen_height) self.setGeometry(self.x, self.y, self.x+48, self.y+64)
self.label = QLabel(self)
self.frames = [QPixmap(os.path.join(base_path, 'images', 'niko{}.png'.format(n))) for n in range(1,4)] self.frames = [QPixmap(os.path.join(base_path, 'images', 'niko{}.png'.format(n))) for n in range(1,4)]
self.label.setPixmap(self.frames[1])
self.show()
self.thread.start()
def getFrame(self):
if ((self.y - self.start_y) % 32 >= 16): return 1
if ((self.y - self.start_y) % 64 >= 32): return 0
else: return 2
def update(self):
self.label.setPixmap(self.frames[self.getFrame()])
self.y += 2
self.setGeometry(self.x, self.y, self.x+48, self.y+64)
if self.y > self.screen_height: self.app.quit()
if __name__ == '__main__': if __name__ == '__main__':
app = QApplication(sys.argv) app = QApplication(sys.argv)
@ -101,7 +125,11 @@ if __name__ == '__main__':
x, y = int(sys.argv[1]), int(sys.argv[2]) x, y = int(sys.argv[1]), int(sys.argv[2])
screensize = app.primaryScreen().size() screensize = app.primaryScreen().size()
niko = Niko(x = x, y = y, screen_width = screensize.width(), screen_height = screensize.height()) thread = AnimationTimer()
niko = Niko(x = x, y = y, screen_width = screensize.width(), screen_height = screensize.height(), app = app, thread = thread)
thread.next_frame.connect(niko.update)
else: else:
# Author's Journal mode # Author's Journal mode