Overflown/gamedata/objects/cinematic.py

68 lines
2.1 KiB
Python

from gamedata.objects.base import BaseObject
from gamedata.objects.transition import Transition
class Cinematic(BaseObject):
def __init__(self,game):
super().__init__(0,0,game)
self.bgm = self.game.sound_lib["bgm/cinematic.ogg"]
self.bgm.play()
text = """More and more trash is being thrown away
It's up to you now to clean everything up
Watch out for the baddies !"""
self.lines = text.split("\n")
self.sprites = []
for i in self.lines:
self.sprites.append(game.getchars(i))
self.currentlines = 1
self.timer = game.lib.Timer(5)
self.textpadding = 10
self.depth = 2
self.fill = game.pygame.Surface([self.game.globals["cameraw"],self.game.globals["camerah"]])
self.fill.fill([62,33,55])
self.totalheight = len(self.lines)*9+(len(self.lines)-1)*self.textpadding
self.offset = (self.game.globals["camerah"]-self.totalheight)/2
self.title = self.game.sprite_lib["title.png"]
self.sfx = self.game.sound_lib["sfx/return.wav"]
def step(self):
if self.currentlines < len(self.lines)+2 and self.timer.tick(self.game.dt):
self.currentlines += 1
if self.currentlines == len(self.lines):
self.timer = self.game.lib.Timer(5)
elif self.currentlines == len(self.lines)+2:
# Spawn transition
t = Transition(self.game)
self.game.gameloop.summon(t)
self.sfx.play()
self.bgm.stop()
if self.game.inputs["keys"]["up"]["timer"]==1:
self.timer.timer = 0
def draw(self):
self.game.window.blit(self.fill,[0,0])
if self.currentlines<=len(self.lines):
for i in range(self.currentlines):
cx = self.game.globals["cameraw"]/2
self.game.lib.drawcenter(self.game,self.sprites[i],cx,self.offset+i*(self.textpadding+9))
else:
cx = self.game.globals["cameraw"]/2
cy = self.game.globals["camerah"]/2
self.game.lib.drawcenter(self.game,self.title,cx,cy)