diff --git a/doc/grid.svg b/doc/grid.svg index 8d5f64b..8332b83 100644 --- a/doc/grid.svg +++ b/doc/grid.svg @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/map_machine/mapper.py b/map_machine/mapper.py index 55ed2f3..a6af16a 100644 --- a/map_machine/mapper.py +++ b/map_machine/mapper.py @@ -87,49 +87,57 @@ class Map: path.update(figure.line_style.style) self.svg.add(path) - for tree in constructor.trees: - tree.draw(self.svg, self.flinger, self.scheme) - for crater in constructor.craters: - crater.draw(self.svg, self.flinger) + if self.scheme.draw_trees: + for tree in constructor.trees: + tree.draw(self.svg, self.flinger, self.scheme) - self.draw_buildings(constructor, self.configuration.use_building_colors) + if self.scheme.draw_craters: + for crater in constructor.craters: + crater.draw(self.svg, self.flinger) - for direction_sector in constructor.direction_sectors: - direction_sector.draw(self.svg, self.scheme) + if self.scheme.draw_buildings: + self.draw_buildings( + constructor, self.configuration.use_building_colors + ) + + if self.scheme.draw_directions: + for direction_sector in constructor.direction_sectors: + direction_sector.draw(self.svg, self.scheme) # All other points - occupied: Optional[Occupied] - if self.configuration.overlap == 0: - occupied = None - else: - occupied = Occupied( - self.flinger.size[0], - self.flinger.size[1], - self.configuration.overlap, - ) - - nodes: list[Point] = sorted( - constructor.points, key=lambda x: -x.priority - ) - logging.info("Drawing main icons...") - for node in nodes: - node.draw_main_shapes(self.svg, occupied) - - logging.info("Drawing extra icons...") - for point in nodes: - point.draw_extra_shapes(self.svg, occupied) - - logging.info("Drawing texts...") - for point in nodes: - if ( - not self.configuration.is_wireframe() - and self.configuration.label_mode != LabelMode.NO - ): - point.draw_texts( - self.svg, occupied, self.configuration.label_mode + if self.scheme.draw_nodes: + occupied: Optional[Occupied] + if self.configuration.overlap == 0: + occupied = None + else: + occupied = Occupied( + self.flinger.size[0], + self.flinger.size[1], + self.configuration.overlap, ) + nodes: list[Point] = sorted( + constructor.points, key=lambda x: -x.priority + ) + logging.info("Drawing main icons...") + for node in nodes: + node.draw_main_shapes(self.svg, occupied) + + logging.info("Drawing extra icons...") + for point in nodes: + point.draw_extra_shapes(self.svg, occupied) + + logging.info("Drawing texts...") + for point in nodes: + if ( + not self.configuration.is_wireframe() + and self.configuration.label_mode != LabelMode.NO + ): + point.draw_texts( + self.svg, occupied, self.configuration.label_mode + ) + if self.configuration.show_credit: self.draw_credits(constructor.flinger.size) diff --git a/map_machine/scheme.py b/map_machine/scheme.py index b6b561b..1ffe718 100644 --- a/map_machine/scheme.py +++ b/map_machine/scheme.py @@ -321,6 +321,16 @@ class Scheme: for element in group["tags"]: self.node_matchers.append(NodeMatcher(element, group)) + options = content.get("options", {}) + + self.draw_nodes: bool = options.get("draw_nodes", False) + + # Map features. + self.draw_buildings: bool = options.get("draw_buildings", False) + self.draw_trees: bool = options.get("draw_trees", False) + self.draw_craters: bool = options.get("draw_craters", False) + self.draw_directions: bool = options.get("draw_directions", False) + self.colors: dict[str, str] = content.get("colors", {}) self.material_colors: dict[str, str] = content.get( "material_colors", {} diff --git a/map_machine/scheme/default.yml b/map_machine/scheme/default.yml index 2437049..8f10e63 100644 --- a/map_machine/scheme/default.yml +++ b/map_machine/scheme/default.yml @@ -1,3 +1,11 @@ +options: + + draw_nodes: yes + draw_trees: yes + draw_craters: yes + draw_buildings: yes + draw_directions: yes + colors: # Entity