import os
from data import load_image, load, filepath
+
+from kivy.logger import Logger
+
WALL = '.'
FLOOR = ' '
ENTRY = 'E'
class Level(object):
- def __init__(self, levelfile):
+ def __init__(self, levelfile, name):
self._data = []
self.exit_pos = []
self.enter_pos = None
self._changed = []
self._gates = {}
self._buttons = {}
+ self._name = name
# Because of how kivy's coordinate system works,
# we reverse the lines so things match up between
# the file and the display (top of file == top of display)
def load_tiles(self):
"""Load the list of tiles for the level"""
+ Logger.info('%s: load tiles' % self._name)
self._tiles = []
self._gates = {}
self._buttons = {}
if tile == WALL or tile == ENTRY:
return True
if tile == GATE:
- print tile, pos, self._gates[pos]
if self._gates[pos] > 0:
return True
return False
LEVELS = 'level_list'
def __init__(self):
- self.levels = []
- self.errors = []
+ self._levels = []
+ self._level_names = []
+ self._errors = []
level_list = load(self.LEVELS)
for line in level_list:
line = line.strip()
if os.path.exists(filepath(line)):
level_file = load(line)
- level = Level(level_file)
+ level = Level(level_file, line)
level_file.close()
try:
level.validate()
- self.levels.append(level)
+ self._levels.append(level)
+ self._level_names.append(line)
except RuntimeError as err:
- self.errors.append(
+ self._errors.append(
'Invalid level %s in level_list: %s' % (line, err))
else:
- self.errors.append(
+ self._errors.append(
'Level list includes non-existant level %s' % line)
level_list.close()
self._cur_level = 0
def get_current_level(self):
- if self._cur_level < len(self.levels):
- return self.levels[self._cur_level]
+ if self._cur_level < len(self._levels):
+ return self._levels[self._cur_level]
else:
return None
def get_errors(self):
- return self.errors
+ return self._errors
+
+ def get_level_names(self):
+ return self._level_names
+
+ def set_level_to(self, level_name):
+ if level_name in self._level_names:
+ self._cur_level = self._level_names.index(level_name)
def advance_to_next_level(self):
self._cur_level += 1