Added Level bounding box computation
Changed level YAML format to add arbitrary top-level properties and put
the layers list in a 'level' property. Modified Level loading to match.
Enabled platformtest Camera bbox bits.
import yaml
from Collage import Collage
from Surface import SurfaceSet
+import pygame
from OpenGL.GL import *
classpath = ['classes']
def load(self, dir):
f = open(os.path.join(dir, 'level.yaml'), 'r')
- layers = yaml.safe_load(f)
+ level = yaml.safe_load(f)
f.close()
+ layers = level['layers']
for layer in layers:
collage = None
if layer.has_key('things'):
self.compileThings(new_layer, layer['things'])
+ # Load or compute level bounding box
+ if level.has_key('bbox'):
+ self.bbox = pygame.Rect(level['bbox'])
+ else:
+ bboxes = filter(None, [c.bbox for c in filter(None, [l.collage for l in self.layers])])
+ if bboxes:
+ self.bbox = bboxes[0]
+ self.bbox.unionall_ip(bboxes[1:])
+ else:
+ self.bbox = None
+ print "Bounding box:", self.bbox
+
def compileThings(self, layer, things):
for (name, t) in things.iteritems():