def parse(self, node): """ parse a tileset element and return a tileset object and properties for tiles as a dict a bit of mangling is done here so that tilesets that have external TSX files appear the same as those that don't """ import os # if true, then node references an external tileset source = node.get('source', False) if source: if source[-4:].lower() == ".tsx": # external tilesets don't save this, store it for later self.firstgid = int(node.get('firstgid')) # we need to mangle the path - tiled stores relative paths dirname = os.path.dirname(self.parent.filename) path = os.path.abspath(os.path.join(dirname, source)) try: node = ElementTree.parse(path).getroot() except IOError: msg = "Cannot load external tileset: {0}" raise Exception, msg.format(path) else: msg = "Found external tileset, but cannot handle type: {0}" raise Exception, msg.format(self.source) self.set_properties(node) # since tile objects [probably] don't have a lot of metadata, # we store it separately in the parent (a TiledMap instance) for child in node.getiterator('tile'): real_gid = int(child.get("id")) p = parse_properties(child) p['width'] = self.tilewidth p['height'] = self.tileheight for gid, flags in self.parent.mapGID(real_gid + self.firstgid): self.parent.setTileProperties(gid, p) image_node = node.find('image') self.source = image_node.get('source') self.width = int(image_node.get('width')) self.height = int(image_node.get('height')) self.trans = image_node.get("trans", None)
def set_properties(self, node): """ read the xml attributes and tiled "properties" from a xml node and fill in the values into the object's dictionary. Names will be checked to make sure that they do not conflict with reserved names. """ # set the attributes reserved for tiled [ setattr(self, k, types[str(k)](v)) for (k,v) in node.items() ] # set the attributes that are derived from tiled 'properties' for k,v in parse_properties(node).items(): if k in self.reserved: msg = "{0} \"{1}\" has a property called \"{2}\"" print msg.format(self.__class__.__name__, self.name, k, self.__class__.__name__) msg = "This name is reserved for {0} objects and cannot be used." print msg.format(self.__class__.__name__) print "Please change the name in Tiled and try again." print v raise ValueError setattr(self, k, types[str(k)](v)) # hack self.properties = parse_properties(node)
def parse(self, node): """ parse a tileset element and return a tileset object and properties for tiles as a dict a bit of mangling is done here so that tilesets that have external TSX files appear the same as those that don't """ import os # if true, then node references an external tileset source = node.get('source', False) if source: if source[-4:].lower() == ".tsx": # external tilesets don't save this, store it for later self.firstgid = int(node.get('firstgid')) # we need to mangle the path - tiled stores relative paths dirname = os.path.dirname(self.parent.filename) path = os.path.abspath(os.path.join(dirname, source)) try: node = ElementTree.parse(path).getroot() except IOError: msg = "Cannot load external tileset: {0}" raise Exception, msg.format(path) else: msg = "Found external tileset, but cannot handle type: {0}" raise Exception, msg.format(self.source) self.set_properties(node) # since tile objects [probably] don't have a lot of metadata, # we store it separately in the parent (a TiledMap instance) for child in node.getiterator('tile'): real_gid = int(child.get("id")) p = parse_properties(child) p['width'] = self.tilewidth p['height'] = self.tileheight for gid, flags in self.parent.mapGID(real_gid + self.firstgid): self.parent.setTileProperties(gid, p) image_node = node.find('image') self.source = image_node.get('source') self.trans = image_node.get("trans", None)
def set_properties(self, node): """ read the xml attributes and tiled "properties" from a xml node and fill in the values into the object's dictionary. Names will be checked to make sure that they do not conflict with reserved names. """ # set the attributes reserved for tiled [setattr(self, k, types[str(k)](v)) for (k, v) in node.items()] # set the attributes that are derived from tiled 'properties' for k, v in parse_properties(node).items(): if k in self.reserved: msg = "{0} \"{1}\" has a property called \"{2}\"" print msg.format(self.__class__.__name__, self.name, k, self.__class__.__name__) msg = "This name is reserved for {0} objects and cannot be used." print msg.format(self.__class__.__name__) print "Please change the name in Tiled and try again." print v raise ValueError setattr(self, k, types[str(k)](v))
import logging import time from utils import parse_properties app = Flask(__name__) time.sleep(7) ####################### ### S E T U P ####################### app.logger.setLevel(logging.DEBUG) app.logger.info("Setting up the chaos...") settings = parse_properties("settings.properties") app.logger.info("Loaded settings: " + str(settings)) app.logger.info("%d settings loaded" % len(settings)) ####################### ### R O U T E S ####################### @app.route("/") def route_index(): # status = request.args["status"] if "status" in request.args else "" return render_template('index.html', settings=settings, args=request.args) @app.route("/settings", methods=['POST', 'GET'])