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'))
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