X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fgamelib%2Flevel.py;fp=koperkapel%2Fgamelib%2Flevel.py;h=4644e0498bbf89e2647c928f1de9ad89bb367364;hb=923be78dc52aa3334d658a8958672d0dfe23ac6a;hp=01c260e7d5859cd836cbc52a336116f8fe7398c6;hpb=2b01e520d6299b5d8ea9451d924b01e87588792d;p=koperkapel.git diff --git a/koperkapel/gamelib/level.py b/koperkapel/gamelib/level.py index 01c260e..4644e04 100644 --- a/koperkapel/gamelib/level.py +++ b/koperkapel/gamelib/level.py @@ -1,11 +1,16 @@ """ Class holding the level info """ +from .keypad import Keypad +from .door import Door + class Level(object): def __init__(self): self.width = self.height = 0 self.tiles = [] + self.keypads = [] + self.doors = [] self.tileset = None self.start_pos = (0, 0) @@ -18,10 +23,28 @@ class Level(object): ] def can_walk(self, x, y, layer): - return 'walk' in self.tiles[y][x][layer]['behaviour'] + if 'walk' in self.tiles[y][x][layer]['behaviour']: + # check doors + for door in self.doors: + if (x, y) == door.pos and door.closed(): + return False + return True + return False def can_fly(self, x, y, layer): - return 'fly' in self.tiles[y][x][layer]['behaviour'] + if 'fly' in self.tiles[y][x][layer]['behaviour']: + for door in self.doors: + if (x, y) == door.pos and door.closed(): + return False + return True + + return False def can_crawl(self, x, y, layer): return 'crawl' in self.tiles[y][x][layer]['behaviour'] + + def keypad_at(self, x, y): + for keypad in self.keypads: + if (x, y) == keypad.pos: + return keypad + return None