Mercurial > mhrok
changeset 40:6d38f7032b0d
Move vision handling into the level
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sat, 10 Mar 2012 13:08:48 +0100 |
| parents | 2475e658d13f |
| children | 6b1e309eafc3 |
| files | mhrok/mobs.py mhrok/rooms_level.py mhrok/sprites.py |
| diffstat | 3 files changed, 14 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mhrok/mobs.py Sat Mar 10 13:03:32 2012 +0100 +++ b/mhrok/mobs.py Sat Mar 10 13:08:48 2012 +0100 @@ -22,6 +22,7 @@ def __init__(self, (x, y)): self.pos = x, y + self.vision = None def make_sprite(self, tiles): self.sprite = self.Sprite(tiles, self.pos, self.animation) @@ -76,14 +77,6 @@ return self.sprite, shadow, self.vision def control(self, level): - room = level.find_room(*self.pos) - if room: - self.vision.radius = 64 - if room not in level.lit_rooms: - level.lit_rooms.append(room) - self.vision.rooms.append(room) - else: - self.vision.radius = 40 keys = pygame.key.get_pressed() for key, direction in KEY_DIRS.iteritems():
--- a/mhrok/rooms_level.py Sat Mar 10 13:03:32 2012 +0100 +++ b/mhrok/rooms_level.py Sat Mar 10 13:08:48 2012 +0100 @@ -69,9 +69,20 @@ return self[ex, y] = fill - def find_room(self, x, y): + def find_room(self, (x, y)): for room in self.rooms: (rx, ry), (rw, rh) = room if rx <= x <= rx + rw and ry <= y <= ry + rh: return room + def walk(self, mob, direction): + super(Level, self).walk(mob, direction) + if mob.vision: + room = self.find_room(mob.pos) + if room: + mob.vision.radius = 64 + if room not in self.lit_rooms: + self.lit_rooms.append(room) + mob.vision.rooms.append(room) + else: + mob.vision.radius = 40
--- a/mhrok/sprites.py Sat Mar 10 13:03:32 2012 +0100 +++ b/mhrok/sprites.py Sat Mar 10 13:08:48 2012 +0100 @@ -19,6 +19,7 @@ self.rect.move_ip(4 + 20 * x, 12 * y) self.depth = self.rect.bottom self.animation = None + self.vision = None def update(self): self.frame = (self.frame + 1) % len(self.steps)
