generator.py

1.4 kB · python · 48 lines

1import mrlypy.paint2import mrlypy.tile3from mrlypy.core.helpers import hex_key, random_seed4from mrlypy.core.state import seed5from mrlypy.paint.enums import Edition6from mrlypy.paint.models import Paint7from mrlypy.paint.randomizer import random_edition8from mrlypy.tile.models import Tile9from .config import Config10from .models import File, Gen1112# MASK1314def pop_center(tile: Tile):15    center = tile.cell.width // 216    tile.cell.types[center, center] = 01718# CREATE1920def create(config: Config) -> Gen:21    s = random_seed()22    seed(s)23    v = Gen()24    v.key = hex_key()25    v.seed = s26    v.files = [File(w, h) for w, h in config.files]27    v.edition = random_edition(config.paint.editions)28    v.primaries = config.paint.primaries29    v.tile = mrlypy.tile.create(config.tile)30    if v.edition == Edition.NEIGHBORS:31        mask_config = mrlypy.tile.Config(min_size=3, max_size=3)32        v.mask = mrlypy.tile.create(mask_config)33    return v3435# GENERATE3637def generate(v: Gen) -> Gen:38    v.tile = mrlypy.tile.build(v.tile)39    if v.mask:40        v.mask = mrlypy.tile.build(v.mask)41        pop_center(v.mask)42    if v.is_cover:43        paint_config = mrlypy.paint.Config(editions=[v.edition], primaries=v.primaries)44        v.paint = mrlypy.paint.setup(Paint(edition=v.edition), paint_config)45    else:46        paint_config = mrlypy.paint.Config(editions=[v.edition], primaries=v.primaries)47        v.paint = mrlypy.paint.paint(v.tile, paint_config, mask=v.mask)48    return v