changeset 647:aeb366d97774

Show splash image on startup
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 08 Sep 2013 02:02:09 +0200
parents 45dbbc4c1fd0
children 9346fa37f887
files nagslang/engine.py nagslang/game_object.py nagslang/render.py nagslang/screens/area.py
diffstat 4 files changed, 33 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/engine.py	Sun Sep 08 01:49:23 2013 +0200
+++ b/nagslang/engine.py	Sun Sep 08 02:02:09 2013 +0200
@@ -37,6 +37,7 @@
         # http://stackoverflow.com/q/16442573/8629
         pygame.event.post(pygame.event.Event(pgl.VIDEORESIZE,
                                              size=(0, 0), w=0, h=0))
+        self._current_screen.splash()
 
     def change_screen(self, new_screen):
         if self._current_screen is not None:
--- a/nagslang/game_object.py	Sun Sep 08 01:49:23 2013 +0200
+++ b/nagslang/game_object.py	Sun Sep 08 02:02:09 2013 +0200
@@ -321,6 +321,23 @@
             return Result(remove=[self])
 
 
+class SplashImage(GameObject):
+    def __init__(self, image, timeout):
+        super(SplashImage, self).__init__(
+            None,
+            render.NullRenderer(),
+            puzzle.YesPuzzler(),
+            render.ImageOverlay(image),
+        )
+        self.add_timer('timeout', timeout)
+        self.start_timer('timeout')
+
+    def update(self, dt):
+        super(SplashImage, self).update(dt)
+        if not self.check_timer('timeout'):
+            return Result(remove=[self])
+
+
 class FloorLight(GameObject):
     zorder = ZORDER_FLOOR
 
--- a/nagslang/render.py	Sun Sep 08 01:49:23 2013 +0200
+++ b/nagslang/render.py	Sun Sep 08 02:02:09 2013 +0200
@@ -242,6 +242,16 @@
             self.widget.draw(surface)
 
 
+class ImageOverlay(Overlay):
+    def __init__(self, image):
+        self.image = image
+
+    def render(self, surface, display_offset, max_width):
+        x = (surface.get_width() - self.image.get_width()) / 2
+        y = (surface.get_height() - self.image.get_height()) / 2
+        surface.blit(self.image, (x, y))
+
+
 class TiledRenderer(Renderer):
     """Tile the given image to fit the given outline
 
--- a/nagslang/screens/area.py	Sun Sep 08 01:49:23 2013 +0200
+++ b/nagslang/screens/area.py	Sun Sep 08 02:02:09 2013 +0200
@@ -13,6 +13,7 @@
     CMD_TOGGLE_FORM, CMD_ACTION, PROTAGONIST_HEALTH_MAX_LEVEL)
 from nagslang.events import (
     AddDrawableEvent, DeathEvent, DoorEvent, QuitEvent, ScreenChange)
+from nagslang.game_object import SplashImage
 from nagslang.level import Level
 from nagslang.screens.base import Screen
 from nagslang.sound import sound
@@ -325,3 +326,7 @@
         y_pos = surface.get_height() - 20 - inv_surf.get_height()
         x_pos = 130 + padding
         surface.blit(inv_surf, (x_pos, y_pos))
+
+    def splash(self):
+        AddDrawableEvent.post(SplashImage(resources.get_image('title.png'),
+                              10))