changeset 48:9aabc4752467

Added HP gauge
author Radomir Dopieralski <moindev@sheep.art.pl>
date Wed, 26 Dec 2007 12:46:23 +0100
parents 6de8cdb7647a
children 763392fbc883
files lib/display.py lib/monster/player.py
diffstat 2 files changed, 20 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lib/display.py	Wed Dec 26 12:16:46 2007 +0100
+++ b/lib/display.py	Wed Dec 26 12:46:23 2007 +0100
@@ -15,6 +15,16 @@
         l.sort(z_compare)
         return l
 
+class Gauge(pygame.sprite.Sprite):
+    def __init__(self, display):
+        pygame.sprite.Sprite.__init__(self)
+        self.base_image = pygame.image.load("data/image/gauge.png").convert()
+        self.image = self.base_image.copy()
+        self.image.set_alpha(128)
+        self.rect = self.image.get_rect()
+        self.rect.bottom = display.screen.get_rect().bottom
+        self.image.fill((128, 200, 0), Rect(11, 3, 10, 2))
+
 class Display:
     """Display-related code"""
 
@@ -25,8 +35,10 @@
         self.sprites = SortedUpdates()
         self.shadows = pygame.sprite.RenderUpdates()
         self.effects = pygame.sprite.RenderUpdates()
+        self.hud = pygame.sprite.RenderUpdates()
         self.scrollpos = [-48,-32]
         self.key_pressed = None
+        self.hud.add(Gauge(self))
         
     def get_image(self, filename, cache={}):
         """Read an image from disk, with caching."""
@@ -104,7 +116,7 @@
         source = rect.move(-self.scrollpos[0], -self.scrollpos[1])
         source = source.clip(self.background.get_clip())
         if source.width==0 or source.height==0:
-            patch = pygame.Surface((rect.width, rect.height+1))
+            patch = pygame.Surface((rect.width, rect.height+2))
         else:
             patch = self.background.subsurface(source)
         screen.blit(patch, rect)
@@ -114,26 +126,31 @@
         '''Redraw the whole level'''
         
         self.screen.blit(self.background, self.scrollpos)
+        self.hud.clear(self.screen, self.clear_func)
         self.effects.clear(self.screen, self.clear_func)
         self.sprites.clear(self.screen, self.clear_func)
         self.shadows.clear(self.screen, self.clear_func)
         self.shadows.draw(self.screen)
         self.sprites.draw(self.screen)
         self.effects.draw(self.screen)
+        self.hud.draw(self.screen)
         pygame.display.update()
 
     def update(self):
         '''Redraw and update all the animated parts'''
-        
+
+        self.hud.clear(self.screen, self.clear_func)        
         self.effects.clear(self.screen, self.clear_func)
         self.sprites.clear(self.screen, self.clear_func)
         self.shadows.clear(self.screen, self.clear_func)
         self.sprites.update()
         self.shadows.update()
         self.effects.update()
+        self.hud.update()
         dirty = self.shadows.draw(self.screen)
         dirty += self.sprites.draw(self.screen)
         dirty += self.effects.draw(self.screen)
+        dirty += self.hud.draw(self.screen)
         pygame.display.update(dirty)
     
     def show_frame(self):
--- a/lib/monster/player.py	Wed Dec 26 12:16:46 2007 +0100
+++ b/lib/monster/player.py	Wed Dec 26 12:46:23 2007 +0100
@@ -64,7 +64,7 @@
         monster.hit()
         
     def hit(self, damage=5):
-        mesg.Mesg(self.display, self, "-%d" % damage, color=(255,0,0), delay=8)
+        mesg.Mesg(self.display, self, "-%d" % damage, color=(255,0,0), delay=4)
         pass
         
     def act(self):