Mercurial > skaapsteker
comparison skaapsteker/sprites/player.py @ 315:0fc2b9d1a9cb
Recreate inventory image on scene changes
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 09 Apr 2011 00:04:35 +0200 |
parents | f29999d1bba6 |
children | 0dc80b153580 |
comparison
equal
deleted
inserted
replaced
314:f29999d1bba6 | 315:0fc2b9d1a9cb |
---|---|
34 self.running = False | 34 self.running = False |
35 self.sprinting = 0 | 35 self.sprinting = 0 |
36 self.jumping = False | 36 self.jumping = False |
37 self.flying = False | 37 self.flying = False |
38 self._load_images() | 38 self._load_images() |
39 self.inventory_image = None | |
39 # We muck with these in load for convience, so ensure they're right | 40 # We muck with these in load for convience, so ensure they're right |
40 self.the_world = the_world | 41 self.the_world = the_world |
41 self.set_facing('left') | 42 self.set_facing('left') |
42 self.set_image() | 43 self.set_image() |
43 self.set_pos((0, 0)) | 44 self.set_pos((0, 0)) |
296 | 297 |
297 def discard_item(self): | 298 def discard_item(self): |
298 self.the_world.fox.item = None | 299 self.the_world.fox.item = None |
299 | 300 |
300 | 301 |
301 def drop_item(self): | 302 def get_sprite(self): |
302 my_item = self.the_world.fox.item | 303 my_item = self.the_world.fox.item |
303 if my_item is None: | 304 if my_item is None: |
304 return | 305 return None |
305 self.discard_item() | |
306 world_item = getattr(self.the_world.items, my_item) | 306 world_item = getattr(self.the_world.items, my_item) |
307 world_item.level = self.the_world.fox.level | 307 world_item.level = self.the_world.fox.level |
308 world_item.pos = [a/b for a, b in zip(self.rect.center, TILE_SIZE)] | 308 world_item.pos = [a/b for a, b in zip(self.rect.center, TILE_SIZE)] |
309 sprite_dict = world_item.copy() | 309 sprite_dict = world_item.copy() |
310 sprite_dict.pop('level') | 310 sprite_dict.pop('level') |
311 sprite_dict['name'] = my_item | 311 sprite_dict['name'] = my_item |
312 sprite_dict['world'] = self.the_world | 312 sprite_dict['world'] = self.the_world |
313 ItemRepopulationEvent.post(find_sprite(sprite_dict, 'items')) | 313 return find_sprite(sprite_dict, 'items') |
314 | |
315 | |
316 def drop_item(self): | |
317 sprite = self.get_sprite() | |
318 if sprite is None: | |
319 return | |
320 self.discard_item() | |
321 ItemRepopulationEvent.post(sprite) | |
314 | 322 |
315 | 323 |
316 def take_item(self, item): | 324 def take_item(self, item): |
317 self.take_item_by_name(item.name) | 325 self.take_item_by_name(item.name) |
318 # We create a scaled version of the image for the inventory display | 326 # We create a scaled version of the image for the inventory display |
319 image = item.image | 327 item.kill() |
328 print "took", item | |
329 self.make_inventory_image() | |
330 | |
331 | |
332 def make_inventory_image(self): | |
333 sprite = self.get_sprite() | |
334 if sprite is None: | |
335 self.inventory_image = None | |
336 image = sprite.image | |
320 if image.get_width() > image.get_height(): | 337 if image.get_width() > image.get_height(): |
321 new_width = 48 | 338 new_width = 48 |
322 new_height = int(image.get_height() * (48.0 / image.get_width())) | 339 new_height = int(image.get_height() * (48.0 / image.get_width())) |
323 else: | 340 else: |
324 new_height = 48 | 341 new_height = 48 |
325 new_width = int(image.get_width() * (48.0 / image.get_height())) | 342 new_width = int(image.get_width() * (48.0 / image.get_height())) |
326 self.inventory_image = pygame.transform.scale(image, (new_width, new_height)) | 343 self.inventory_image = pygame.transform.scale(image, (new_width, new_height)) |
327 item.kill() | |
328 print "took", item | |
329 | 344 |
330 | 345 |
331 def take_item_by_name(self, item_name): | 346 def take_item_by_name(self, item_name): |
332 self.drop_item() | 347 self.drop_item() |
333 getattr(self.the_world.items, item_name).level = "_limbo" | 348 getattr(self.the_world.items, item_name).level = "_limbo" |