Esempio n. 1
0
def init():
    tiles = loader('tiles', unit=TILE_SIZE)

    terrain2.terrain_blocks('grass', tiles('lpc-base-tiles/grass.png'), shape='floor')
    terrain2.terrain_blocks('water_grass', tiles('lpc-base-tiles/watergrass.png'))
    terrain2.terrain_cross_blocks('water_grass', tiles('lpc-watergrass-cross.png'))

    terrain2.interior_blocks('farmland', tiles('farmland-interior-parts.png'), shape='floor')

    structures = loader('structures', unit=TILE_SIZE)
    s = STRUCTURE.prefixed('tree') \
            .shape(TREE_SHAPE) \
            .layer(1)

    s.new('v0') \
            .part(models.TREE['shadow'], structures('tree-shadow-round.png')) \
            .part(models.TREE['trunk'], structures('tree-trunk.png')) \
            .part(models.TREE['top'], structures('tree-top-round.png'))

    s.new('v1') \
            .part(models.TREE['shadow'], structures('tree-shadow-cone.png')) \
            .part(models.TREE['trunk'], structures('tree-trunk.png')) \
            .part(models.TREE['top'], structures('tree-top-cone.png'))

    STRUCTURE.new('stump') \
            .shape(STUMP_SHAPE) \
            .layer(1) \
            .part(models.TREE['stump'], structures('tree-stump.png'))
Esempio n. 2
0
def do_wall_parts(basename, image, door_image=None, extra_parts=()):
    parts = (
            'corner/nw',
            'edge/horiz',
            'corner/ne',
            'corner/sw',
            '_/edge/horiz/copy',
            'corner/se',
            'edge/vert',
            'tee/e',
            'tee/w',
            'tee/n',
            'tee/s',
            'cross',
            # Doors are handled separately.
        )

    s = STRUCTURE.prefixed(basename) \
            .shape(solid(1, 1, 2)) \
            .layer(1)

    for j, part_name in enumerate(parts):
        if part_name.startswith('_'):
            continue
        s.new(part_name) \
                .part(models.WALL2[part_name], image.extract((j, 0), size=(1, 3)))

    for j, part_name in enumerate(extra_parts):
        x = len(parts) + (3 if door_image is not None else 0) + j
        s.new(part_name) \
                .part(models.WALL2['edge/horiz'], image.extract((x, 0), size=(1, 3)))

    if door_image is not None:
        doorway_img = image.extract((len(parts), 0), size=(3, 3))
        door_anim = door_image.sheet_to_anim((3, 3), door_image.size[0] // 3 * 4, oneshot=True)

        s.new('door/open').shape(OPEN_DOOR_SHAPE) \
                .part(models.WALL2['door'], door_anim.get_frame(-1)) \
                .part(models.WALL2['door'], doorway_img)
        s.new('door/closed').shape(CLOSED_DOOR_SHAPE) \
                .part(models.WALL2['door'], door_anim.get_frame(0)) \
                .part(models.WALL2['door'], doorway_img)

        s.new('door/opening').shape(CLOSED_DOOR_SHAPE) \
                .part(models.WALL2['door'], door_anim) \
                .part(models.WALL2['door'], doorway_img)
        s.new('door/closing').shape(CLOSED_DOOR_SHAPE) \
                .part(models.WALL2['door'], door_anim.reversed()) \
                .part(models.WALL2['door'], doorway_img)

    return s