changeset 492:b02d51e06c17

Add Victory CutScene (and refactor CutScenes)
author Stefano Rivera <stefano@rivera.za.net>
date Sat, 09 Apr 2011 22:37:59 +0200
parents 6f110e347f30
children cb2060f8316f
files skaapsteker/cutscene.py
diffstat 1 files changed, 47 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/skaapsteker/cutscene.py	Sat Apr 09 22:37:50 2011 +0200
+++ b/skaapsteker/cutscene.py	Sat Apr 09 22:37:59 2011 +0200
@@ -10,27 +10,12 @@
 from .levelscene import LevelScene
 from .widgets.text import Text, ButtonSet, TextButton, unindent_text
 
+
 class CutScene(Scene):
     def __init__(self, game_state, soundsystem):
         super(CutScene, self).__init__(game_state, soundsystem)
-        self._background_img = data.load_image('backgrounds/' + self.background)
-        fill = pygame.Surface(self._background_img.get_size(), flags=SRCALPHA)
-        fill.fill((255, 255, 255, 128))
-        self._background_img.convert_alpha(fill)
-        self._background_img.blit(fill, (0, 0))
-        self._background_img.convert_alpha()
-        self._start_time = pygame.time.get_ticks()
-        self._run_time = 60000 # ms
-
         self._background_music = self.music
 
-        text_widget = Text(unindent_text(self.text),
-                           pygame.Rect(20, 20,
-                                       constants.SCREEN[0] - 40,
-                                       constants.SCREEN[1] - 40),
-                           size=24, shadow='gray', wrap=True)
-        self.widgets.append(text_widget)
-
         button_set = ButtonSet()
         # TODO: Dynamic position
         button_set.append(TextButton("Continue", (20, constants.SCREEN[1] - 68),
@@ -43,6 +28,36 @@
         from .menuscene import MenuScene
         ChangeScene.post((MenuScene,))
 
+    def dispatch(self, ev):
+        if ev.type is KEYDOWN:
+            if ev.key in(K_q, K_ESCAPE):
+                self.done()
+        super(CutScene, self).dispatch(ev)
+
+    def enter(self):
+        if self._background_music:
+            self._soundsystem.play_background_music(self._background_music)
+
+
+class TextCutScene(CutScene):
+    def __init__(self, game_state, soundsystem):
+        super(TextCutScene, self).__init__(game_state, soundsystem)
+        self._background_img = data.load_image('backgrounds/' + self.background)
+        fill = pygame.Surface(self._background_img.get_size(), flags=SRCALPHA)
+        fill.fill((255, 255, 255, 128))
+        self._background_img.convert_alpha(fill)
+        self._background_img.blit(fill, (0, 0))
+        self._background_img.convert_alpha()
+        self._start_time = pygame.time.get_ticks()
+        self._run_time = 60000 # ms
+
+        text_widget = Text(unindent_text(self.text),
+                           pygame.Rect(20, 20,
+                                       constants.SCREEN[0] - 40,
+                                       constants.SCREEN[1] - 40),
+                           size=24, shadow='gray', wrap=True)
+        self.widgets.append(text_widget)
+
     def draw(self, surface, engine):
         viewport = surface.get_clip()
 
@@ -56,20 +71,10 @@
         surface.blit(self._background_img, viewport.topleft,
                      pygame.Rect((pos, bottom), viewport.size))
 
-        super(CutScene, self).draw(surface, engine)
-
-    def dispatch(self, ev):
-        if ev.type is KEYDOWN:
-            if ev.key in(K_q, K_ESCAPE):
-                self.done()
-        super(CutScene, self).dispatch(ev)
-
-    def enter(self):
-        if self._background_music:
-            self._soundsystem.play_background_music(self._background_music)
+        super(TextCutScene, self).draw(surface, engine)
 
 
-class OpeningCutScene(CutScene):
+class OpeningCutScene(TextCutScene):
     text = u"""
     Many moons ago, an evil nine-tailed kitsune, a fearsome fox god, ruled the
     land.
@@ -94,7 +99,7 @@
         ChangeScene.post((LevelScene, '.'.join([fox.level, fox.doorway])))
 
 
-class UsageCutScene(CutScene):
+class UsageCutScene(TextCutScene):
     text = u"""
     Arrow keys control your movement.
 
@@ -106,7 +111,7 @@
     music = None
 
 
-class CreditsCutScene(CutScene):
+class CreditsCutScene(TextCutScene):
     text = u"""
     Credits:
 
@@ -135,3 +140,15 @@
     """
     background = 'background_03_back.png'
     music = None
+
+
+class VictoryCutScene(CutScene):
+    music = None
+
+    def __init__(self, game_state, soundsystem):
+        super(VictoryCutScene, self).__init__(game_state, soundsystem)
+        self._background_img = data.load_image('backgrounds/victory-menu.png')
+
+    def draw(self, surface, engine):
+        surface.blit(self._background_img, (0, 0))
+        super(VictoryCutScene, self).draw(surface, engine)