diff --git a/gamedata/assets/title.png b/gamedata/assets/title.png new file mode 100644 index 0000000..2cc0502 Binary files /dev/null and b/gamedata/assets/title.png differ diff --git a/gamedata/game.py b/gamedata/game.py index 883901e..0d4eaef 100644 --- a/gamedata/game.py +++ b/gamedata/game.py @@ -105,7 +105,7 @@ class Game(): self.pasttime = time.time() # Je charge la scene de base - scenes.overworld(self) + scenes.boot(self) def set_camera(self,posx,posy): self.globals["camerax"], self.globals["cameray"] = posx,posy diff --git a/gamedata/objects/cinematic.py b/gamedata/objects/cinematic.py new file mode 100644 index 0000000..74be728 --- /dev/null +++ b/gamedata/objects/cinematic.py @@ -0,0 +1,60 @@ +from gamedata.objects.base import BaseObject +from gamedata.objects.transition import Transition + +class Cinematic(BaseObject): + + def __init__(self,game): + + super().__init__(0,0,game) + + 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() + + + 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) + diff --git a/gamedata/scenes.py b/gamedata/scenes.py index 17833b4..24e8c7c 100644 --- a/gamedata/scenes.py +++ b/gamedata/scenes.py @@ -2,9 +2,9 @@ from gamedata.objects.ingame.player import Player from gamedata.objects.ingame.tileset import TilesetRenderer from gamedata.objects.ingame.water import Water from gamedata.objects.results import Results +from gamedata.objects.cinematic import Cinematic def ingame(game,level="Level 2"): - game.scaleCamera(416,234) game.globals["camerax"] = 0 game.globals["cameray"] = 0 game.gameloop.reinit() @@ -16,9 +16,13 @@ def ingame(game,level="Level 2"): game.gameloop.summon(p1) def overworld(game): - game.scaleCamera(416,234) game.globals["camerax"] = 0 game.globals["cameray"] = 0 game.gameloop.reinit() tileset = TilesetRenderer(0,0,game,"Overworld") game.gameloop.summon(tileset) + +def boot(game): + game.scaleCamera(416,234) + c = Cinematic(game) + game.gameloop.summon(c)