changeset 162:7fbbe27120a9

Rodents! Amphibians! Import juggling!
author Jeremy Thurgood <firxen@gmail.com>
date Tue, 13 Sep 2011 23:24:20 +0200
parents 40d2d913bcde
children 41e8d4ce3af2
files data/levels/dev.txt mamba/level.py mamba/sprites.py
diffstat 3 files changed, 53 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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):
--- 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()