#!/usr/bin/env python3 import argparse import sys import xml.etree.ElementTree as ET def main(): parser = argparse.ArgumentParser(description="Cleanup rc3.world maps") parser.add_argument("map", help="map in .tmx format") parser.add_argument("-o", "--output", help="where to write modified map") parser.add_argument( "-i", "--in-place", help="replace map with modified version", action="store_true", ) parser.add_argument( "--fix-copyright", help="add mapCopyright/tilesetCopyright properties", action="store_true", ) args = parser.parse_args() if not args.output and not args.in_place: print("Output unspecified.", file=sys.stderr) sys.exit(1) tree = ET.parse(args.map) map = tree.getroot() if args.fix_copyright: fix_copyright(map) tree.write(args.output or args.map, xml_declaration=False) def fix_copyright(map): if map.find("properties/property[@name='mapCopyright']") is None: license = input("Map license? [CC0] ") or "CC0" properties = map.find("properties") if properties is None: properties = ET.SubElement(map, "properties") ET.SubElement(properties, "property", name="mapCopyright", value=license) for tileset in map.findall("tileset"): if tileset.find("properties/property[@name='tilesetCopyright']") is None: license = ( input("Tileset '%s' license? [CC0] " % tileset.attrib["name"]) or "CC0" ) properties = tileset.find("properties") if properties is None: properties = ET.SubElement(tileset, "properties") ET.SubElement( properties, "property", name="tilesetCopyright", value=license ) if __name__ == "__main__": main()