Пример #1
0
 def onMouseDown(self, event):
     if event.button is 1:
         Camera.current_camera.get_component('CameraTrackingBehavior').target = Game.camera_to_world(event.pos)
         
         c = Crosshair(ResourceLoader.load('data//crosshair.png'))
         c.position = Game.camera_to_world(event.pos)
         self.add(c)
Пример #2
0
    def __init__(self):
        super(NewScene, self).__init__()

        EventManager.subscribe(self, "onMouseDown")

        self.pool = GameObjectPool(Sprite, (ResourceLoader.load("data/crosshair.png"),))
        self.add(self.pool)
Пример #3
0
 def load_level(self, oel_file):
     """Loads an Ogmo level file and returns a Scene built from the 
     definitions.
     
     :param oel_file: The Ogmo level to load.
     :type oel_file: A filepath.
     """
     rel_path = '/'.join(oel_file.split('/')[:len(oel_file.split('/')) - 1])
     level_data = dict_from_xml(oel_file)
     
     level = Scene()
     
     for key in level_data.level:
         if key in self.layer_definitions:
             xsi_type = self.layer_definitions[key]['xsi:type']
             
             if xsi_type == 'TileLayerDefinition':
                 tile_layer = level_data.level[key]
                 
                 export_mode = tile_layer.exportMode
                 data = []
                 
                 if export_mode == 'CSV':
                     rows = str(tile_layer).split('\n')
                     
                     for row in rows:
                         data.append(map(int, row.split(',')))
                 
                 dimension = self.layer_definitions[key]['Grid']
                 path = self.tilesets[tile_layer.tileset]['FilePath']
                 
                 surf = ResourceLoader.load(rel_path + '/' + path)
                 sheet = ImageSheet(surf, dimension)
                 tilemap = TileMap(sheet, data)
                 
                 level.add(tilemap)
             
             elif xsi_type == 'EntityLayerDefinition':
                 level.add(GameObject())
                 
         elif key == 'camera':
             camera = Camera(self.camera_size)
             camera.top_left = int(level_data.level.camera.x), int(level_data.level.camera.y)
             
             level.add(camera)
         
         elif key == 'width':
             level.width = int(level_data.level[key])
             
         elif key == 'height':
             level.width = int(level_data.level[key])
             
         else:
             setattr(level, key, level_data.level[key])
     
     return level
Пример #4
0
 def __init__(self):
     super(NewScene, self).__init__()
     
     Camera.current_camera.clear_color = 20, 12, 28
     Camera.current_camera.viewport = 640, 480
     
     dimension = 32, 32
     data = ResourceLoader.load('data//planets.png')
     sheet = ImageSheet(data, dimension)
     
     # Create a sun in the center of the scene
     sun = Sprite(sheet[0], (144, 104))
     self.add(sun)
     
     mercury = Sprite(sheet[3])
     mercury.add(OrbitBehavior(28.0, 3.25))
     mercury.add(Emitter(Particle, (1250, (133, 149, 161)), 160, Particle.on_create))
     sun.add(mercury)
     
     planet = Sprite(sheet[1])
     planet.add(OrbitBehavior(64.0, 0.75))
     planet.add(Emitter(Particle, (5000, (89, 125, 206)), 400, Particle.on_create))
     sun.add(planet)
     
     moon = Sprite(sheet[3])
     moon.add(OrbitBehavior(24.0, 1.875))
     moon.add(Emitter(Particle, (2500, (133, 149, 161)), 200, Particle.on_create))
     planet.add(moon)
     
     planet = Sprite(sheet[2])
     planet.add(OrbitBehavior(132.0, 0.25))
     planet.add(Emitter(Particle, (12000, (109, 170, 44)), 800, Particle.on_create))
     sun.add(planet)
     
     moon = Sprite(sheet[3])
     moon.add(OrbitBehavior(20.0, 4.25))
     moon.add(Emitter(Particle, (1250, (133, 149, 161)), 100, Particle.on_create))
     planet.add(moon)
     
     moon = Sprite(sheet[3])
     moon.add(OrbitBehavior(42.0, 1.75))
     moon.add(Emitter(Particle, (2500, (133, 149, 161)), 200, Particle.on_create))
     planet.add(moon)
     
     planet = Sprite(sheet[4])
     planet.add(OrbitBehavior(232.0, 0.125))
     planet.add(Emitter(Particle, (18000, (208, 70, 72)), 1000, Particle.on_create))
     sun.add(planet)
     
     moon = Sprite(sheet[3])
     moon.add(OrbitBehavior(48.0, 0.75))
     moon.add(Emitter(Particle, (2500, (133, 149, 161)), 200, Particle.on_create))
     planet.add(moon)
Пример #5
0
 def __init__(self, image, lifetime):
     super(Particle, self).__init__(image)
     self.__velocity = Vector2D.from_angle(random.randrange(80, 100)) * -1.35
     
     sheet = ImageSheet(ResourceLoader.load('data//puffs.png'), (32, 32))
     
     puff = [(sheet[3], int(lifetime * 0.2)),
             (sheet[2], int(lifetime * 0.1)),
             (sheet[1], int(lifetime * 0.3)),
             (sheet[0], int(lifetime * 2.0))]
     
     self.animation = Animation('puff', puff)
     self.add(self.animation)
     self.add(DestroyAfter(lifetime))
Пример #6
0
 def __init__(self):
     super(EmitterPerformanceTest, self).__init__()
     
     bg = Gradient.createVerticalGradient((20, 15), (255,255,255), (228, 139, 165), (111,86,117))
     bg = pygame.transform.scale(bg, (320, 240))
     self.add(Sprite(bg, (160, 120)))
     
     num_emitters = 8
     for i in range(num_emitters):
         e = Emitter(Particle, (ImageSheet(ResourceLoader.load('data//puffs.png'), (32, 32))[0], 1000), 40, self.onCreate)
         e.position = 40 + (i * (256 / (num_emitters - 1))), 216
         self.add(e)
     
     self.add(EndGameAfter(1000 * 30))
Пример #7
0
 def __init__(self):
     super(NewScene, self).__init__()
     
     # Read the alphabet string from a file.
     alphaArray = open('Data\\anomaly.dat','r').readline()
     # Define the font dimensions
     fontDimension = (32,32)
     # Create bitmap font object
     font = BitmapFont(ResourceLoader.load('Data\\anomaly.png'), fontDimension, alphaArray)
     
     # Create the text object
     text = Text(font,'Basic Text')
     # Set the text object's position
     text.position = (0, 88)
     
     self.add(text)
Пример #8
0
    def __init__(self):
        super(NewScene, self).__init__()

        EventManager.subscribe(self, 'onKeyDown')
        
        # Read the alphabet string from a file.
        alphaArray = open('Data\\anomaly.dat','r').readline()
        # Define the font dimensions
        fontDimension = (32,32)
        # Create bitmap font object
        self.font = BitmapFont(ResourceLoader.load('Data\\anomaly.png'), fontDimension, alphaArray)

        # Create the text object
        self.text = Text(self.font,'Wavy Text')
        # Wrap the text object with an effect
        self.effect = wavy_text.WavyText(self.text)
        
        # Set the text object's position
        self.effect.position = (16, 88)
        
        self.add(self.text)
Пример #9
0
    def __init__(self):
        super(NewScene, self).__init__()
        
        dimension = (32, 37)
        data = ResourceLoader.load('data//player_run.png')
        sheet = ImageSheet(data, dimension)
        
        interval = 80

        run = [(sheet[i], interval) for i in range(8)]
        
        for i in range(8):
            animation = Animation('run_cycle', run)
            animation.play('run_cycle', i)
            
            staticSprite = Sprite(sheet[i])
            staticSprite.position = (i + 1) * 32 + 16, 84
            self.add(staticSprite)
            
            animatedSprite = Sprite(animation)
            animatedSprite.position = (i + 1) * 32 + 16, 148
            self.add(animatedSprite)
Пример #10
0
 def __init__(self, lifetime):
     super(PuffEmitter, self).__init__(Particle, (ImageSheet(ResourceLoader.load('data//puffs.png'), (32, 32))[3], 300), 20, self.onCreate)
     self.__counter = 0
     self.lifetime = lifetime
     self.position = Vector2D(0, 0)
     self.velocity = Vector2D(0, 0)
Пример #11
0
# Define the origin
ORIGIN = (0,0)
# Set the screen size
SCREEN_SIZE = (256, 256)

# Setup pygame display
pygame.display.set_mode(SCREEN_SIZE)
# Get a surface the size of the window
screen = pygame.display.get_surface()
# Create a buffer to render to
buffer = pygame.Surface((43, 43))

# Define the sub-image dimension.
dimension = (40,43)

data = ResourceLoader.load('Data/run.png')


# Create the image sheet object.
sheet = ImageSheet(data, dimension)

target = sheet[0]

interval = 80

run = [(sheet[0], interval), 
       (sheet[1], interval), 
       (sheet[2], interval), 
       (sheet[3], interval), 
       (sheet[4], interval), 
       (sheet[5], interval),