def repack(name, font_sizes, font='coda'): shutil.rmtree('build/assets/data%s' % name, ignore_errors=True) # Create dirs for f in 'common', 'packed', 'portal_info', 'upgrade': os.makedirs('build/assets/data%s/%s' % (name, f)) # Copy some files for f in 'inconsolata-14.fnt', 'inconsolata-14.png', 'inconsolata-28.fnt', 'inconsolata-28.png': shutil.copy('app/assets/common/data%s/%s' % (name, f), 'build/assets/data%s/common' % name) shutil.copy('app/assets/common/data%s/nemesis.json' % name, 'build/assets/data%s/common/nemesis.json' % name) # Copy upgrade/data*/* images if os.path.exists('app/assets/upgrade/data%s' % name): for f in os.listdir('app/assets/upgrade/data%s' % name): shutil.copy('app/assets/upgrade/data%s/%s' % (name, f), 'build/assets/data%s/upgrade/%s' % (name, f)) # Repack atlases (replace fonts) d = tempfile.mkdtemp() texture_unpacker.Unpacker('app/assets/%s/data%s/%s.atlas' % ('packed', name, 'common')).unpack(d, 1) # For common.atlas copy fonts for size, font_name in zip(font_sizes, ('x-small', 'sm', 'med', 'lg')): shutil.copy('res/fonts/%s/coda-%d.fnt' % (font, size), 'build/assets/data%s/common/coda-%s.fnt' % (name, font_name)) shutil.copy('res/fonts/%s/coda-%d_0.png' % (font, size), '%s/coda-%s.png' % (d, font_name)) shutil.copy('res/lowres/%s-pack.json' % 'common', '%s/pack.json' % d) texture_pack(d, 'build/assets/data%s/%s' % (name, 'packed'), 'common') texture_unpacker.reprocess_atlas('app/assets/%s/data%s/%s.atlas' % ('packed', name, 'common'), 'build/assets/data%s/%s/%s.atlas' % (name, 'packed', 'common'), 1.0) shutil.rmtree(d) shutil.copy('app/assets/portal_info/data%s/portal_ui.atlas' % name, 'build/assets/data%s/portal_info/portal_ui.atlas' % name) shutil.copy('app/assets/portal_info/data%s/portal_ui.png' % name, 'build/assets/data%s/portal_info/portal_ui.png' % name)
def resize(name, scale, coda_sizes, font='coda'): shutil.rmtree('build/assets/data-%s' % name, ignore_errors=True) # Create dirs for f in 'common', 'packed', 'portal_info', 'upgrade', 'levelup', 'verify': os.makedirs('build/assets/data-%s/%s' % (name, f)) # Copy some files for f in 'inconsolata-14.fnt', 'inconsolata-14.png', 'inconsolata-28.fnt', 'inconsolata-28.png': shutil.copy('app/assets/common/data/%s' % f, 'build/assets/data-%s/common' % name) shutil.copy('app/assets/portal_info/data/portal_ui.json', 'build/assets/data-%s/portal_info' % name) # nemesis.json def _repl(m): return \ ''' compass: { height: %d.0, width: %d.0, x: %d.0, y: %d.0 }''' % tuple([round(float(m.group(i)) * scale) for i in range(1, 5)]) s = open('app/assets/common/data/nemesis.json').read() s = PAT_NEMESIS_COMPASS.sub(_repl, s, 1) open('build/assets/data-%s/common/nemesis.json' % name, 'w').write(s) # Resize upgrade/data*/* images for f in os.listdir('app/assets/upgrade/data'): im = Image.open('app/assets/upgrade/data/%s' % f) im.resize((round(im.size[0] * scale), round(im.size[1] * scale)), Image.ANTIALIAS).save( 'build/assets/data-%s/upgrade/%s' % (name, f)) # Resize levelup/data*/* images for f in os.listdir('app/assets/levelup/data'): im = Image.open('app/assets/levelup/data/%s' % f) im.resize((round(im.size[0] * scale), round(im.size[1] * scale)), Image.ANTIALIAS).save( 'build/assets/data-%s/levelup/%s' % (name, f)) # Resize verify/data*/* images for f in os.listdir('app/assets/verify/data'): im = Image.open('app/assets/verify/data/%s' % f) im.resize((round(im.size[0] * scale), round(im.size[1] * scale)), Image.ANTIALIAS).save( 'build/assets/data-%s/verify/%s' % (name, f)) # Resize atlases d = tempfile.mkdtemp() texture_unpacker.Unpacker('app/assets/%s/data/%s.atlas' % ('packed', 'common')).unpack(d, scale) # For common.atlas copy fonts for size, font_name in zip(coda_sizes, ('x-small', 'sm', 'med', 'lg', 'outline-red-med', 'outline-orange-med')): shutil.copy('res/fonts/%s/coda-%s.fnt' % (font, size), 'build/assets/data-%s/common/coda-%s.fnt' % (name, font_name)) shutil.copy('res/fonts/%s/coda-%s_0.png' % (font, size), '%s/coda-%s.png' % (d, font_name)) shutil.copy('res/lowres/%s-pack.json' % 'common', '%s/pack.json' % d) texture_pack(d, 'build/assets/data-%s/%s' % (name, 'packed'), 'common') texture_unpacker.reprocess_atlas('app/assets/%s/data/%s.atlas' % ('packed', 'common'), 'build/assets/data-%s/%s/%s.atlas' % (name, 'packed', 'common'), scale) shutil.rmtree(d) # Resize "magic" portal_ui.atlas # Repack portal, energy-alien and energy-resistance images only, then readd additional "images" to the atlas file u = texture_unpacker.Unpacker('app/assets/portal_info/data/portal_ui.atlas') u.parse_atlas() page = u.atlas.pages[0] page.images, images2 = partition(lambda im: im.name in ('portal', 'energy-alien', 'energy-resistance'), page.images) page.images = list(page.images) d = tempfile.mkdtemp() u.unpack(d, scale) shutil.copy('res/lowres/portal_ui-pack.json', '%s/pack.json' % d) texture_pack(d, 'build/assets/data-%s/portal_info' % name, 'portal_ui') u = texture_unpacker.Unpacker('build/assets/data-%s/portal_info/portal_ui.atlas' % name) u.parse_atlas() page = u.atlas.pages[0] for im in images2: p = im.params p['xy'] = round(p['xy'][0] * scale), round(p['xy'][1] * scale) p['size'] = round(p['size'][0] * scale), round(p['size'][1] * scale) p['orig'] = round(p['orig'][0] * scale), round(p['orig'][1] * scale) page.images.append(im) u.save_atlas('build/assets/data-%s/portal_info/portal_ui.atlas' % name)