Example #1
0
    def load_level(old, num):
        game = Game(old.vw, old.vh)
        game.restart()
        game.level = num
        fp = data.loadblock("levels/%d" % num)
        for line in fp:
            layername, classname, remainder = line.split(None, 2)

            if layername == "orbs":
                layer = game.orbs
                hash = game.spatialhash
            elif layername == "deco":
                layer = game.deco
                hash = game.decohash

            if classname == "Allefant":
                o = Allefant.from_string(remainder)
                o.spawn(hash)
                layer.append(o)
                game.player = o
            elif classname == "InverseOrb":
                o = InverseOrb.from_string(remainder)
                o.spawn(hash)
                layer.append(o)
            else:
                o = globals()[classname].from_string(remainder)
                o.spawn(hash)
                layer.append(o)
                if classname == "Laser":
                    game.lasers[o.id] = o
                if classname == "Coin": game.coins += 1
                if classname == "Rider": game.rider = o
            if o.is_active(): game.active.append(o)

        return game
Example #2
0
    def __init__(self, path, area = None):

        glEnable(GL_TEXTURE_2D)

        image = pygame.image.load(data.loadblock(path))

        self.w = image.get_width()
        self.h = image.get_height()

        if area:
            x, y, w, h = area
            sub = image.subsurface(area)
            rgbadata = pygame.image.tostring(sub, "RGBA", True)
            self.w = w
            self.h = h
        else:
            rgbadata = pygame.image.tostring(image, "RGBA", True)

        def pot(x):
            y = 1.0
            while y < x: y *= 2
            return y

        self.texw = pot(self.w)
        self.texh = pot(self.h)

        if self.texw != self.w or self.texh != self.h:
            olddata = rgbadata
            rgbadata = ""
            for row in range(int(self.texh - self.h)):
                rgbadata += olddata[-4 * self.w :]
                rgbadata += rgbadata[-4:] * int(self.texw - self.w)
            for row in range(self.h):
                rgbadata += olddata[4 * row * self.w : 4 * (row + 1) * self.w]
                rgbadata += rgbadata[-4:] * int(self.texw - self.w)

        self.texture = glGenTextures(1)
        glBindTexture(GL_TEXTURE_2D, self.texture)
        glTexImage2D(GL_TEXTURE_2D, 0, 4, self.texw, self.texh, 0, GL_RGBA,
            GL_UNSIGNED_BYTE, rgbadata)
        glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) #NEAREST)
        glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) #NEAREST)
Example #3
0
 def __init__(self, filename):
     self.sound = pygame.mixer.Sound(data.loadblock(filename))