view regenerate_level_data.py @ 498:62b9a4e21f1a

chickens in closed buildings deselected. building opens if you put in chickens and it's not full. opening building with move or select tool allows rearrangement of chickens in building. fixed multiselect in buildings.
author Adrianna Pińska <adrianna.pinska@gmail.com>
date Wed, 25 Nov 2009 23:51:33 +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"))