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