# HG changeset patch # User Stefano Rivera # Date 1378139278 -7200 # Node ID d1f543ff080536990358b52e8af77ee64e5cdf8b # Parent 366b334a7018c2e233e6981a282beefb2ba53c9c YAML levels diff -r 366b334a7018 -r d1f543ff0805 data/levels/level1 --- a/data/levels/level1 Mon Sep 02 18:12:42 2013 +0200 +++ b/data/levels/level1 Mon Sep 02 18:27:58 2013 +0200 @@ -1,19 +1,19 @@ -X-Size: 1200 -Y-Size: 900 -Base tile: tiles/floor.png -Polygon 1 : 15 -Point: 60 780 -Point: 130 850 -Point: 1150 850 -Point: 1010 710 -Point: 1010 190 -Point: 880 60 -Point: 700 60 -Point: 560 200 -Point: 560 650 -Point: 410 650 -Point: 410 70 -Point: 60 70 -Point: 260 270 -Point: 60 470 -Point: 60 780 +base_tile: tiles/floor.png +polygons: + 1: + - [60, 780] + - [130, 850] + - [1150, 850] + - [1010, 710] + - [1010, 190] + - [880, 60] + - [700, 60] + - [560, 200] + - [560, 650] + - [410, 650] + - [410, 70] + - [60, 70] + - [260, 270] + - [60, 470] + - [60, 780] +size: [1200, 900] \ No newline at end of file diff -r 366b334a7018 -r d1f543ff0805 nagslang/level.py --- a/nagslang/level.py Mon Sep 02 18:12:42 2013 +0200 +++ b/nagslang/level.py Mon Sep 02 18:27:58 2013 +0200 @@ -2,6 +2,7 @@ import pygame.locals as pgl from nagslang.resources import resources +from nagslang.yamlish import load, dump POLY_COLORS = { 1: pygame.color.THECOLORS['red'], @@ -27,41 +28,14 @@ self._exterior = False def load(self): - - def add_polygon(polygon, index, num_points): - self.polygons[index] = polygon - if len(polygon) != num_points: - print 'Error - incorrect polygon size' - print 'Expected: %d, got %d' % (num_points, len(polygon)) - - inpoly = False - polygon = [] - index = 0 - num_points = 0 with resources.get_file('levels', self.name) as f: - for line in f: - if inpoly: - if not line.startswith('Point:'): - add_polygon(polygon, index, num_points) - polygon = [] - inpoly = False - index = 0 - else: - point = line.split(':', 1)[1] - x, y = [int(i) for i in point.split()] - polygon.append((x, y)) - if line.startswith('X-Size:'): - self.x = int(line.split(':', 1)[1]) - elif line.startswith('Y-Size:'): - self.y = int(line.split(':', 1)[1]) - elif line.startswith('Base tile:'): - self.basetile = line.split(':', 1)[1].strip() - elif line.startswith('Polygon'): - rest = line.split(' ', 1)[1] - index, num_points = [int(x) for x in rest.split(':', 1)] - inpoly = True - if index: - add_polygon(polygon, index, num_points) + data = load(f) + self.x, self.y = data['size'] + self.base_tile = data['base_tile'] + for i, points in data['polygons'].iteritems(): + self.polygons[i] = [] + for point in points: + self.polygons[i].append(tuple(point)) def all_closed(self): """Check if all the polygons are closed""" @@ -84,15 +58,11 @@ if not closed: return False with resources.get_file('levels', self.name, mode='w') as f: - f.write('X-Size: %s\n' % self.x) - f.write('Y-Size: %s\n' % self.y) - f.write('Base tile: %s\n' % self.basetile) - for i, poly in self.polygons.items(): - if len(poly) == 0: - continue - f.write('Polygon %d : %d\n' % (i, len(poly))) - for point in poly: - f.write('Point: %d %d\n' % point) + dump({ + 'size': [self.x, self.y], + 'base_tile': self.basetile, + 'polygons': self.polygons, + }, f) return True def get_size(self):