Mercurial > rinkhals
view regenerate_level_data.py @ 469:e0b11d684ee8
Reference gameboard.level rather than game.level where appropriate. Saving and restoring games appears to largely work now (even if the level of the restored game is different to the current one).
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Tue, 24 Nov 2009 22:19:53 +0000 |
parents | 02a6de5629d6 |
children |
line wrap: on
line source
#!/usr/bin/env python import os.path import pygame from pygame.locals import SWSURFACE, SRCALPHA from gamelib import tiles, buildings, equipment import regenerate_pngs LEVEL_PATH = "data/levels" TILE_WIDTH = 20 TILE_HEIGHT = 20 TILES_X = 8 TILES_Y = 8 WIDTH = TILES_X * TILE_WIDTH HEIGHT = TILES_Y * TILE_HEIGHT def generate_image(name, basepath): fn, _ = os.path.splitext(os.path.basename(name)) svg_name = os.path.join(basepath, fn+".svg") if not os.path.exists(svg_name): print 'Skipping %s, as it seems to be missing' % svg_name return None png_name = os.path.join(LEVEL_PATH, fn+".png") regenerate_pngs.svg_to_png(svg_name, png_name, TILE_WIDTH, TILE_HEIGHT) return pygame.image.load(png_name) def get_tile_mappings(): tile_map = {} for building in buildings.BUILDINGS: tn = building.TILE_NO image = generate_image(building.IMAGE, regenerate_pngs.SPRITE_PATH) if image: tile_map[tn] = image for tn, (_, tile_png) in tiles.TileMap.DEFAULT_TILES.items(): if tn not in tile_map: tile_map[tn] = generate_image(tile_png, regenerate_pngs.TILE_PATH) return tile_map def get_code_mappings(): code_map = {} # Needs better handling of wings for tn, sprites in equipment.EQUIP_MAP.iteritems(): image = generate_image('chkn', regenerate_pngs.SPRITE_PATH) need_wing = False for equip in sprites: sub_image = generate_image(equip.CHICKEN_IMAGE_FILE, regenerate_pngs.SPRITE_PATH) image.blit(sub_image, (0, 0)) if equip.UNDER_LIMB: need_wing = True if need_wing: sub_image = generate_image('wing', regenerate_pngs.SPRITE_PATH) image.blit(sub_image, (0, 0)) if image: code_map[tn] = image return code_map if __name__ == '__main__': s = pygame.Surface((WIDTH, HEIGHT), SWSURFACE|SRCALPHA, 32) s.fill((0,0,0,0)) for n, img in get_tile_mappings().items(): rect = (TILE_WIDTH*(n % TILES_X), TILE_HEIGHT*(n / TILES_X), TILE_WIDTH, TILE_HEIGHT) print n, rect s.blit(img, rect) pygame.image.save(s, os.path.join(LEVEL_PATH, "tiles.tga")) s.fill((0,0,0,0)) for n, img in get_code_mappings().items(): rect = (TILE_WIDTH*(n % TILES_X), TILE_HEIGHT*(n / TILES_X), TILE_WIDTH, TILE_HEIGHT) print n, rect s.blit(img, rect) pygame.image.save(s, os.path.join(LEVEL_PATH, "codes.tga"))