Example #1
0
class Map(object):
	"""
	Class for storing tile layers
	"""
	def __init__(self, mapData):
		self.layers = []
		self.offset = {
			'x': 0,
			'y': 0
		}
		if mapData:
			self.load_map_data(mapData)
		self.camera = Camera(
			(0,0), (self.mapSize['x'], self.mapSize['y']), 10)
			
	def load_map_data(self, mapData):
		try:
			tree = ET.parse(os.path.join(MAPDATA_PATH, mapData))
		except:
			raise 'Could not open map data file.'
		
		data = tree.getroot()
		self.tileSize = {
			'x': int(data.attrib['tilewidth']),
			'y': int(data.attrib['tileheight'])
		}
		self.mapSize = {
			'x': int(data.attrib['width']) * self.tileSize['x'],
			'y': int(data.attrib['height']) * self.tileSize['y']
		}
		self.tileset = Tileset(data.find('tileset'))
		
		for prop in data.iter('property'):
			if prop.attrib['name'] == 'name':
				self.name = prop.attrib['value']
			
		for layer in data.findall('layer'):
			self.layers.append(Layer(layer, self.tileset))
		
	def update(self, events):
		self.camera.update(events)
		for layer in self.layers:
			layer.update(events, self.camera)
		
	def draw(self, surface):
		for layer in self.layers:
			layer.draw(surface)