#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Copyright 2010 British Broadcasting Corporation and Kamaelia Contributors(1)
#
# (1) Kamaelia Contributors are listed in the AUTHORS file and at
#     http://www.kamaelia.org/AUTHORS - please extend this file,
#     not this notice.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -------------------------------------------------------------------------
#
 
import pygame
pygame.init()
import time
 
 
from Axon.Component import component
from Axon.Ipc import newComponent
 
class SpriteScheduler(component):
   def __init__(self, cat_args, cat_sprites, background, display_surface, eventHandlerClass=None):
      super(SpriteScheduler,self).__init__()
      self.allsprites = []
      self.cat_args = cat_args
      self.cat_sprites = cat_sprites
      self.background = background
      self.display_surface = display_surface
      self.eventHandlerClass = eventHandlerClass
 
   def main(self):
      event_handler = self.eventHandlerClass(self.cat_args)
      self.allsprites = pygame.sprite.RenderPlain(self.cat_sprites)
      while 1:
         for event in pygame.event.get():
            event_handler.dispatch(event,self)
         self.allsprites.update() # This forces the "logic" method in BasicSprites to be updated
         self.display_surface.blit(self.background, (0, 0))
         self.allsprites.draw(self.display_surface)
         pygame.display.flip()
         yield 1