def run(self):
   self.time = 0
   window = pyglet.window.Window(caption = 'Fragmented Space', width = 800, height = 600)
   try:
     self.music = pyglet.media.Player()
     music = pyglet.resource.media('sounds/music.ogg')
     sg = pyglet.media.SourceGroup(music.audio_format, music.video_format)
     sg.queue(music)
     sg.loop = True
     self.music.queue(sg)
     self.music.play()
     self.music.volume = NORMAL_MUSIC_VOLUME
   except:
     self.music = None
   self.window = window
   self.layers = collections.defaultdict(pyglet.graphics.Batch)
   self.keys = key.KeyStateHandler()
   self.fullscreen = False
   try:
     window.set_icon(pyglet.resource.image('images/icon256.png'))
   except:
     pass # Doesn't work on Windows for some reason.
   self.add(MainMenu())
   background = sprite('background.png')
   gl.glClearColor(247 / 255.0, 251 / 255.0, 1, 1)
   gl.glEnable(gl.GL_LINE_SMOOTH);
   gl.glHint(gl.GL_LINE_SMOOTH_HINT, gl.GL_NICEST);
   @window.event
   def on_draw():
     window.clear()
     gl.glLoadIdentity()
     gl.glTranslatef(window.width / 2, window.height / 2, 0)
     background.draw()
     for l in ['corruption', 'longest', 'blocks-inside', 'blocks-outside']:
       self.layers[l].draw()
     self.objs.sort(key=lambda o: o.z if hasattr(o, 'z') else 100)
     for o in self.objs:
       o.draw()
   @window.event
   def on_key_release(symbol, modifiers):
     if symbol == key.F:
       self.fullscreen = not self.fullscreen
       window.set_fullscreen(self.fullscreen)
   def update(dt):
     self.time += dt
     for o in self.objs[:]:
       o.think(dt)
     if self.keys[key.R]:
       levels[self.level].make()
   pyglet.clock.schedule_interval(update, 1.0 / 70)
   window.push_handlers(self.keys)
   pyglet.app.run()
 def draw(self):
   bx, by = toX(self.bi), toY(self.bj)
   lx, ly = self.x, self.y
   flat = math.copysign(self.text1.content_width / 2, lx - bx)
   coords = int(bx), int(by), int(lx - flat), int(ly), int(lx + flat), int(ly)
   gl.glEnable(gl.GL_BLEND);
   gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA);
   gl.glLineWidth(1)
   vs = len(coords) / 2
   t = game.time - self.t0
   if self.ttl and self.ttl - game.time < 1:
     t = self.ttl - game.time
   op = int(min(1, t) * self.opacity)
   pyglet.graphics.draw(vs, gl.GL_LINE_STRIP, ('v2i', coords), ('c4B', (0, 0, 0, 0) + (0, 0, 0, op) * (vs - 1)))
   if t > 0.5 or t > 0.25 and t % 0.05 < 0.02:
     self.text1.draw()
     self.text2.draw()