changeset 357:742731e6e6fd

Centre small inventory items rather than resizing
author Stefano Rivera <stefano@rivera.za.net>
date Sat, 09 Apr 2011 14:03:44 +0200
parents f5148f70ca84
children 3642c36bbd32
files skaapsteker/levelscene.py skaapsteker/sprites/player.py
diffstat 2 files changed, 16 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/skaapsteker/levelscene.py	Sat Apr 09 13:42:50 2011 +0200
+++ b/skaapsteker/levelscene.py	Sat Apr 09 14:03:44 2011 +0200
@@ -213,9 +213,15 @@
         my_item = fox.item
         if my_item:
             # Get image and resize it
-            inv_pos = self._clip_rect.left + 8, self._clip_rect.top + fox_hud.INVENTORY_START
             if self._player.inventory_image is None:
                 self._player.make_inventory_image()
+            inv_pos = self._player.inventory_image.get_rect()
+            inv_pos.move_ip(self._clip_rect.left + 8,
+                            self._clip_rect.top + fox_hud.INVENTORY_START)
+            if inv_pos.width < fox_hud.INVENTORY_SIZE:
+                inv_pos.left += (fox_hud.INVENTORY_SIZE - inv_pos.width) / 2
+            if inv_pos.height < fox_hud.INVENTORY_SIZE:
+                inv_pos.top += (fox_hud.INVENTORY_SIZE - inv_pos.height) / 2
             self._level_surface.blit(self._player.inventory_image, inv_pos)
         # Tail bg
         bgsurf = pygame.Surface((self._tail.get_size()[0] + 2 * fox_hud.BG_MARGIN,
--- a/skaapsteker/sprites/player.py	Sat Apr 09 13:42:50 2011 +0200
+++ b/skaapsteker/sprites/player.py	Sat Apr 09 14:03:44 2011 +0200
@@ -6,7 +6,7 @@
 from ..sprites.base import find_sprite, TILE_SIZE, PC_LAYER, MONSTER_LAYER
 from ..sprites.projectiles import Fireball
 from ..physics import Sprite
-from ..constants import Layers
+from ..constants import Layers, FoxHud
 from ..data import get_files, load_image
 from ..engine import PlayerDied, AddSpriteEvent
 
@@ -411,12 +411,15 @@
             self.inventory_image = None
         image = sprite.image
         if image.get_width() > image.get_height():
-            new_width = 48
-            new_height = int(image.get_height() * (48.0 / image.get_width()))
+            new_width = FoxHud.INVENTORY_SIZE
+            new_height = int(image.get_height() * (float(FoxHud.INVENTORY_SIZE) / image.get_width()))
         else:
-            new_height = 48
-            new_width = int(image.get_width() * (48.0 / image.get_height()))
-        self.inventory_image = pygame.transform.scale(image, (new_width, new_height))
+            new_height = FoxHud.INVENTORY_SIZE
+            new_width = int(image.get_width() * (float(FoxHud.INVENTORY_SIZE) / image.get_height()))
+        if image.get_width() <= FoxHud.INVENTORY_SIZE and image.get_height() <= FoxHud.INVENTORY_SIZE:
+            self.inventory_image = image
+        else:
+            self.inventory_image = pygame.transform.smoothscale(image, (new_width, new_height))
         sprite.kill() # ensure we don't leak into the scene at any point