# HG changeset patch # User Jeremy Thurgood # Date 1315949060 -7200 # Node ID 7fbbe27120a953b44d0dc95cc0aaf4bdb989e1a6 # Parent 40d2d913bcdecf619def1c230184cba9ee61ea80 Rodents! Amphibians! Import juggling! diff -r 40d2d913bcde -r 7fbbe27120a9 data/levels/dev.txt --- a/data/levels/dev.txt Tue Sep 13 23:07:48 2011 +0200 +++ b/data/levels/dev.txt Tue Sep 13 23:24:20 2011 +0200 @@ -9,10 +9,10 @@ X...XXX................................X X......................................X X......................................X -X......................................X +X.................m....................X +X...................M..................X X......................................X -X......................................X -X......................................X +X.................f....................X X......................................X X...........~~~~~~.....................X X..........~~~~~~~~....................X diff -r 40d2d913bcde -r 7fbbe27120a9 mamba/level.py --- a/mamba/level.py Tue Sep 13 23:07:48 2011 +0200 +++ b/mamba/level.py Tue Sep 13 23:24:20 2011 +0200 @@ -6,8 +6,7 @@ from pygame.sprite import RenderUpdates from mamba.data import load_file -from mamba.sprites import (tile_sizify, TileSprite, BaseSprite, DoorSprite, - EntrySprite, ExitSprite, PuddleSprite) +from mamba import sprites from mamba.snake import Snake @@ -21,19 +20,22 @@ TILE_MAP = { '.': None, - 'X': mktile(TileSprite, image_name='wall', solid=True), - 'R': mktile(DoorSprite, colour='red'), - 'B': mktile(DoorSprite, colour='blue'), - '^': mktile(EntrySprite, direction=Snake.UP), - 'v': mktile(EntrySprite, direction=Snake.DOWN), - '<': mktile(EntrySprite, direction=Snake.LEFT), - '>': mktile(EntrySprite, direction=Snake.RIGHT), - 'E': mktile(ExitSprite), - '~': mktile(PuddleSprite), + 'X': mktile(sprites.TileSprite, image_name='wall', solid=True), + 'R': mktile(sprites.DoorSprite, colour='red'), + 'B': mktile(sprites.DoorSprite, colour='blue'), + '^': mktile(sprites.EntrySprite, direction=Snake.UP), + 'v': mktile(sprites.EntrySprite, direction=Snake.DOWN), + '<': mktile(sprites.EntrySprite, direction=Snake.LEFT), + '>': mktile(sprites.EntrySprite, direction=Snake.RIGHT), + 'E': mktile(sprites.ExitSprite), + '~': mktile(sprites.PuddleSprite), + 'M': mktile(sprites.BigMouse), + 'm': mktile(sprites.SmallMouse), + 'f': mktile(sprites.Frog), } THING_MAP = { - 'a': mktile(BaseSprite, image_name='red'), + 'a': mktile(sprites.BaseSprite, image_name='red'), } @@ -44,7 +46,8 @@ def load_tiles(self): self.tiles = {} - self.floor = TileSprite(tileset=self.name, image_name='floor').image + self.floor = sprites.TileSprite(tileset=self.name, + image_name='floor').image for name, value in TILE_MAP.items(): if value is not None: value[1]['tileset'] = self.name @@ -103,7 +106,7 @@ # tile_char) tile = self.tileset.get_tile(tile_char, (x, y), self.sprites) tile_row.append(tile) - if isinstance(tile, EntrySprite): + if isinstance(tile, sprites.EntrySprite): if self.entry is not None: raise InvalidMapError("Too many entry points.") self.entry = tile @@ -152,12 +155,12 @@ def get_size(self): x, y = self.get_tile_size() - return tile_sizify((x, y)) + return sprites.tile_sizify((x, y)) def make_background(self): sx, sy = self.get_tile_size() self.background = Surface(self.get_size()) - [self.background.blit(self.tileset.floor, tile_sizify((x, y))) + [self.background.blit(self.tileset.floor, sprites.tile_sizify((x, y))) for x in range(sx) for y in range(sy)] def get_entry(self): diff -r 40d2d913bcde -r 7fbbe27120a9 mamba/sprites.py --- a/mamba/sprites.py Tue Sep 13 23:07:48 2011 +0200 +++ b/mamba/sprites.py Tue Sep 13 23:24:20 2011 +0200 @@ -86,6 +86,7 @@ mutators=(), solid=False): super(BaseSprite, self).__init__() self.tile_char = tile_char + self.solid = solid if tileset is not None: self.tileset = tileset if image_name is not None: @@ -157,3 +158,33 @@ def __init__(self, variant=(0, 0, 0, 0), **kw): super(PuddleSprite, self).__init__(**kw) self.image = self.load_image(*self.get_variant(*variant)) + + +class EdibleTile(SingleImageTileSprite): + def eat(self): + self.image = None + self.solid = False + + +class BigMouse(EdibleTile): + image_name = "rat-big" + + def interact(self, snake): + print "Embiggen!" + self.eat() + + +class SmallMouse(EdibleTile): + image_name = "rat-small" + + def interact(self, snake): + print "Ensmallen!" + self.eat() + + +class Frog(EdibleTile): + image_name = "frog" + + def interact(self, snake): + print "Swimmery!" + self.eat()