Example #1
0
    def create_level(self):
        blockImage = ASSET.blockImage

        for block in self.blocks:
            if block[2] != 0:
                levelBlock = PhysicsBody(0, 0, self.data.tilewidth, self.data.tileheight, blockImage)
                levelBlock.image = levelBlock.image.convert_alpha()
                levelBlock.rect.x = self.data.tilewidth * block[0]
                levelBlock.rect.y = self.data.tileheight * block[1]
                self.player1.collision_group.add(levelBlock)
                self.player2.collision_group.add(levelBlock)
                self.display_group.add(levelBlock)
                self.block_group.add(levelBlock)

        for dataorb in self.datafragments:
            self.fragmentWidth = dataorb.width
            self.fragmentHeight = dataorb.height

        for vport in self.dataspawner:
            io_port = PhysicsBody(vport.x, vport.y, vport.width, vport.height, ASSET.ioInImage)
            io_port.hspeed = 4
            self.dataspawner_group.add(io_port)
            self.display_group.add(io_port)
            self.fragmentSpawnPos = [vport.x + vport.width/2, vport.y + vport.height]

        for port in self.portals:
            portal_base = PhysicsBody(port.x, port.y, port.width, port.height, ASSET.portal_base, "left")
            if portal_base.rect.centerx < SCREEN.width/2:
                portal = PhysicsBody(0, 0, 60, 55, ASSET.p1_portal, "left")
            else:
                portal = PhysicsBody(0, 0, 60, 55, ASSET.p2_portal, "left")
            portal.rect.centerx = portal_base.rect.centerx
            portal.rect.bottom = portal_base.rect.top
            self.portals_group.add(portal_base)
            self.display_group.add(portal_base)
            self.display_group.add(portal)

        for bound in self.bounds:
            saw_bound = PhysicsBody(bound.x, bound.y, bound.width, bound.height, blockImage)
            self.bounds_group.add(saw_bound)

        for saw in self.saws:
            sawblade = Saw(saw.x, saw.y, saw.width, saw.height, ASSET.sawFrames)
            sawblade.bounds = self.bounds_group.copy()
            self.saw_group.add(sawblade)
            self.display_group.add(sawblade)
            tempgroup = self.display_group.copy()
            self.display_group.empty()
            self.display_group.add(sawblade)
            self.display_group.add(tempgroup)
            self.player1.danger_group.add(self.saw_group)
            self.player2.danger_group.add(self.saw_group)

        for fragment in self.datafragment_group:
            fragment.killer_group = self.enemy_group.copy()
            fragment.storage_group.add(self.portals_group)
            fragment.collision_group.add(self.dataspawner_group)
            fragment.killer_group.add(self.saw_group)

        self.player1.collision_group.add(self.portals_group)
        self.player2.collision_group.add(self.portals_group)
        self.player_group.add(self.player1)
        self.player_group.add(self.player1.label)
        self.player_group.add(self.player1.glow)
        self.player_group.add(self.player2)
        self.player_group.add(self.player2.label)
        self.player_group.add(self.player2.glow)