projects
/
koperkapel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Door hacking
[koperkapel.git]
/
koperkapel
/
gamelib
/
level.py
diff --git
a/koperkapel/gamelib/level.py
b/koperkapel/gamelib/level.py
index 01c260e7d5859cd836cbc52a336116f8fe7398c6..4644e0498bbf89e2647c928f1de9ad89bb367364 100644
(file)
--- a/
koperkapel/gamelib/level.py
+++ b/
koperkapel/gamelib/level.py
@@
-1,11
+1,16
@@
""" Class holding the level info """
""" 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 = []
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)
self.tileset = None
self.start_pos = (0, 0)
@@
-18,10
+23,28
@@
class Level(object):
]
def can_walk(self, x, y, layer):
]
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):
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 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