X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fgamelib%2Flevel.py;h=39e456588e2a2a9a2186a8475f226af3b9f14573;hb=68fc37379b0ea2838e2df99f635216e9abe67934;hp=8c93baabb6533feb99f1f7ed50cbc547a28724d7;hpb=29ced0c100363be9400a13efad9ef3a6901a75a8;p=koperkapel.git diff --git a/koperkapel/gamelib/level.py b/koperkapel/gamelib/level.py index 8c93baa..39e4565 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,7 +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.game_pos and door.is_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.game_pos and door.is_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.game_pos: + return keypad + return None