def main(): global cv5,vx4,vf4,vr4 global palette,minitiles d = pygame.display.set_mode((32*16*2,32*2)) os.chdir("tileset/platform") cv5 = open("platform.cv5") vx4 = open("platform.vx4") vf4 = open("platform.vf4") vr4 = open("platform.vr4") wpe = open("platform.wpe") palette = wpe.read() palette = struct.unpack(str(len(palette))+"B",palette) palette = [palette[4*x:4*x+3] for x in range(len(palette)/4)] minitiles = cdict.cdict(read_minitile) tiles = cdict.cdict(read_tile) print "start" z = time.time() for x in range(1513): pass #tiles[x] print "stop" print time.time()-z for n, y in enumerate(tiles): d.fill((0,0,0)) for x in range(len(y)-1): d.blit(pygame.transform.scale(y[x],(64,64)),(x*64,0)) print n, y[-1] pygame.display.update() pygame.time.delay(1000)
def main(): global cv5, vx4, vf4, vr4 global palette, minitiles d = pygame.display.set_mode((32 * 16 * 2, 32 * 2)) os.chdir("tileset/platform") cv5 = open("platform.cv5") vx4 = open("platform.vx4") vf4 = open("platform.vf4") vr4 = open("platform.vr4") wpe = open("platform.wpe") palette = wpe.read() palette = struct.unpack(str(len(palette)) + "B", palette) palette = [palette[4 * x:4 * x + 3] for x in range(len(palette) / 4)] minitiles = cdict.cdict(read_minitile) tiles = cdict.cdict(read_tile) print "start" z = time.time() for x in range(1513): pass #tiles[x] print "stop" print time.time() - z for n, y in enumerate(tiles): d.fill((0, 0, 0)) for x in range(len(y) - 1): d.blit(pygame.transform.scale(y[x], (64, 64)), (x * 64, 0)) print n, y[-1] pygame.display.update() pygame.time.delay(1000)
def __init__(self, file_prefix): cdict.cdict.__init__(self, self.read_tile) for i in ("cv5", "vx4", "vf4", "vr4", "wpe"): setattr(self, i, open(file_prefix + "." + i)) self.palette = self.read_palette() self.minitiles = cdict.cdict(self.read_minitile) self.rows = cdict.cdict(self.read_row)
def __init__(self, file_prefix): cdict.cdict.__init__(self, self.read_tile) self.file_prefix = file_prefix for i in ("cv5", "vx4", "vr4", "wpe"): setattr(self, i, file.open("tileset", self.file_prefix + "." + i)) self.palette = self.read_palette() self.minitiles = cdict.cdict(self.read_minitile) self.rows = cdict.cdict(self.read_row) self.subpalettes = cdict.cdict(self.read_subpalette)
c = radius - d c = 255*c/k c = int(c) if c < 0: c = 0 elif c > 255: c = 255 s.set_at((x,y), (c, c, c)) return s def make_fog(size, views): s = pygame.Surface(size) for pos, radius in views: o = overlays[radius] pos = (pos[0]-o.get_width()/2, pos[1]-o.get_height()/2) s.blit(o, pos, None, pygame.BLEND_MAX) return s overlays = cdict.cdict(get_overlay) if __name__ == "__main__": import random, time d = pygame.display.set_mode((256,256)) while True: x = [((int(random.random()*256), int(random.random()*256)), int(random.random()*30)) for i in xrange(20)] f = make_fog((256,256), x) d.fill((0,0,0)) d.blit(f, (0, 0)) pygame.display.update() time.sleep(1)
return pygame.transform.flip(self.minitiles[index - 1], True, False) else: self.vr4.seek(index / 2 * 64) minitile = self.vr4.read(64) minitile = pygame.image.fromstring(minitile, (8, 8), "P") minitile.set_palette(self.palette) return minitile def read_row(self, index): self.cv5.seek(52 * index) row = self.cv5.read(52) return struct.unpack("26H", row) def read_tile(self, index): row = self.rows[index >> 4] rowd = row[10:] i = rowd[index & 15] tile = pygame.surface.Surface((32, 32), 0, 8) # should be 8? tile.set_palette(self.palette) tile.set_colorkey(0) self.vx4.seek(i * 32) minindex = struct.unpack("16H", self.vx4.read(32)) for x in range(4): for y in range(4): tile.blit(self.minitiles[minindex[x + y * 4]], (x * 8, y * 8)) return tile tiles = cdict.cdict(Tileset)
class Image(cdict.cdict): def __init__(self, name): self.name = name cdict.cdict.__init__(self, self.image_getter) def image_getter(frame): return Image(self) class Sprite(cdict.cdict): def __init__(self, name): self.sprite = grp.load(frame) cdict.cdict.__init__(self, self.image_getter) def image_getter(frame): return Image(self) def image_getter(n def sprite_getter(name): sprite = grp.load(name) def image_getter(frame) image = sprite.get(frame) def subimage_getter(palette subimage = image.subsurface(image.get_rect()) subimage.set_palette(palettes.palettes[palette]) return subimage return cdict.cdict(subimage_getter) return cdict.cdict(image_getter) sprites = cdict.cdict(Sprite)
else: self.vr4.seek(index/2*64) minitile = self.vr4.read(64) minitile = pygame.image.fromstring(minitile,(8,8),"P") minitile.set_palette(self.palette) return minitile def read_row(self, index): self.cv5.seek(52*index) row = self.cv5.read(52) return struct.unpack("26H",row) def read_tile(self, index): row = self.rows[index>>4] rowd = row[10:] i = rowd[index&15] if 1: tile = pygame.surface.Surface((32,32),0,8) # should be 8? tile.set_palette(self.palette) self.vx4.seek(i*32) minindex = struct.unpack("16H",self.vx4.read(32)) self.vf4.seek(i*32) walkable = self.vf4.read(32) walkable = walkable[::2] w = pygame.image.fromstring(walkable,(4,4),"P") w.set_palette([(0,0,0),(255,255,255)]*100) for x in range(4): for y in range(4): tile.blit(self.minitiles[minindex[x+y*4]],(x*8,y*8)) return tile, w tiles = cdict.cdict(Tileset)
if c < 0: c = 0 elif c > 255: c = 255 s.set_at((x, y), (c, c, c)) return s def make_fog(size, views): s = pygame.Surface(size) for pos, radius in views: o = overlays[radius] pos = (pos[0] - o.get_width() / 2, pos[1] - o.get_height() / 2) s.blit(o, pos, None, pygame.BLEND_MAX) return s overlays = cdict.cdict(get_overlay) if __name__ == "__main__": import random, time d = pygame.display.set_mode((256, 256)) while True: x = [((int(random.random() * 256), int(random.random() * 256)), int(random.random() * 30)) for i in xrange(20)] f = make_fog((256, 256), x) d.fill((0, 0, 0)) d.blit(f, (0, 0)) pygame.display.update() time.sleep(1)