annotate mamba/level.py @ 21:f76c3f033772

Release early, release broken. Level stuff.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 11 Sep 2011 14:03:00 +0200
parents 66ae99f6903e
children 67218082cdbb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 """
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2 Level for our shiny game.
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 """
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4
21
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
5 from pygame.sprite import Sprite
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
6 from pygame.surface import Surface
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
7
8
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
8 from mamba.data import load_file, load_image
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
9
21
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
10 TILE_SIZE = (20, 20)
8
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
11
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
12 TILE_MAP = {
21
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
13 '.': None,
8
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
14 'a': 'randomtile',
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
15 }
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
16
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17
21
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
18 class TileSprite(Sprite):
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
19 def __init__(self, image_path, *groups):
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
20 super(TileSprite, self).__init__(*groups)
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
21 if image_path is None:
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
22 self.image = Surface(TILE_SIZE)
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
23 else:
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
24 self.image = load_image(image_path)
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
25
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
26
8
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
27 class Tileset(object):
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
28 def __init__(self, tileset_name):
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
29 self.name = tileset_name
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
30 self.tiles = {}
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
31
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
32 def load_tiles(self):
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
33 for k, v in TILE_MAP.items():
21
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
34 if v:
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
35 v = 'tiles/%s/%s.png' % (self.name, v)
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
36 self.tiles[k] = TileSprite(v)
8
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
37
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
38 def __getitem__(self, key):
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
39 return self.tiles[key]
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
40
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
41
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
42 class Level(object):
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
43 def __init__(self, level_name):
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
44 self.level_name = level_name
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
45 self.load_level_data()
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
46
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
47 def load_level_data(self):
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
48 """
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
49 This file format it potentially yucky.
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
50 """
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
51 level_data = load_file('levels/%s.txt' % (self.level_name,))
21
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
52 tileset_name = level_data.readline()
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
53 self.tileset = Tileset(tileset_name)
8
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
54 tiles_ascii = level_data.readlines()
21
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
55 print "Tileset:", self.tileset.name
8
66ae99f6903e First stab at tile/level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
56 print "Tiles:", tiles_ascii
21
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
57
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
58 def get_size(self):
f76c3f033772 Release early, release broken. Level stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
59 pass