Exemplo n.º 1
0
 def __init__(
   self, mapName, gravity, worldSize, layers, renderCallable):
     BasicGame.__init__(self, name)
     print 'new WorldSimulator'
     assert (
         isinstance(gravity, int),
         'WorldSimulator : Gravity is not an integer!')
     assert isinstance(worldSize, CWorldSize)
     assert callable(renderCallable)
     self.world = World(Vec2(0, gravity))
     
     # Gravity has a vertical AND a horizontal value 
     self.playerMovement = PlayerMovement()
     self.gravityMan = GravityManager(gravity)
     self.boundsChecker = BoundsChecker(worldSize)
     self._sortLayers(layers)
     self.layerPainter = LayerPainter(
         self.renderLayers, renderCallable)
     self.animPainter = AnimPainter()
     self.imagePainter = ImagePainter()
     self._registerObjects()
Exemplo n.º 2
0
class WorldSimulator(BasicGame):
    '''
    Simulates a collection of GameObjects and Subsystems in a game
    world.
    '''
    updatables = []
    
    def __init__(
      self, mapName, gravity, worldSize, layers, renderCallable):
        BasicGame.__init__(self, name)
        print 'new WorldSimulator'
        assert (
            isinstance(gravity, int),
            'WorldSimulator : Gravity is not an integer!')
        assert isinstance(worldSize, CWorldSize)
        assert callable(renderCallable)
        self.world = World(Vec2(0, gravity))
        
        # Gravity has a vertical AND a horizontal value 
        self.playerMovement = PlayerMovement()
        self.gravityMan = GravityManager(gravity)
        self.boundsChecker = BoundsChecker(worldSize)
        self._sortLayers(layers)
        self.layerPainter = LayerPainter(
            self.renderLayers, renderCallable)
        self.animPainter = AnimPainter()
        self.imagePainter = ImagePainter()
        self._registerObjects()

    def _sortLayers(self, layers):
        for l in layers:
            assert isinstance(l, GameLayer)
        self.renderLayers = []
        for l in layers:
            if l.name != TMXParser.COLLISION_INDEX_NAME:
                self.renderLayers += [l]
            else:
                self.collisionIndex = l.index
        
        self.updateLayers = [
            l for l in layers if l.objects != []
        ]
        self.allLayers = layers

    def _registerObjects(self):
        '''
        Hooks up GameObjects to the required Subsystems.
        '''
        print 'TODO Simulator._registerObjects'
        for layer in self.updateLayers:
            for o in layer.objects:
                pass
    
    def update(self):
        print 'World Simulator.update'

    def _updateGameObjects(self):
        '''
        Updates all GameObjects, by layer.
        '''
        print 'WorldSimulator._updateGameObjects'
        for u in self.updateLayers:
            for o in u.objects:
                o.update() 
    
    def render(self, graphics):
        '''
        Renders the World.
        '''
        print 'WorldSimulator.render'
        self.layerPainter.draw(graphics)