def _draw_preview_building_range(self, building, settlement): """Color the range as if the building was selected""" # get required data from component definition (instance doesn't not # exist yet try: template = self._class.get_component_template(SelectableComponent.NAME) except KeyError: pass else: radius_only_on_island = True if 'range_applies_only_on_island' in template: radius_only_on_island = template['range_applies_only_on_island'] SelectableBuildingComponent.select_building(self.session, building.position, settlement, self._class.radius, radius_only_on_island)
def _color_preview_building(self, building, settlement): """Draw fancy stuff for build preview @param building: return value from buildable, _BuildPosition """ if building.buildable: # Tile might still have not buildable color -> remove it self.renderer.removeColored(self.buildings_fife_instances[building]) self.renderer.addOutlined( self.buildings_fife_instances[building], self.buildable_color[0], self.buildable_color[1], self.buildable_color[2], GFX.BUILDING_OUTLINE_WIDTH, GFX.BUILDING_OUTLINE_THRESHOLD, ) # get required data from component definition (instance doesn't not # exist yet try: template = self._class.get_component_template(SelectableComponent.NAME) except KeyError: pass else: radius_only_on_island = True if "range_applies_only_on_island" in template: radius_only_on_island = template["range_applies_only_on_island"] SelectableBuildingComponent.select_building( self.session, building.position, settlement, self._class.radius, radius_only_on_island ) # highlight directly related buildings (tree for lumberjacks) if settlement is not None: related = frozenset(self.session.db.get_related_building_ids(self._class.id)) for tile in settlement.get_tiles_in_radius( building.position, self._class.radius, include_self=True ): obj = tile.object if (obj is not None) and (obj.id in related) and (obj not in self._highlighted_buildings): self._highlighted_buildings.add( (obj, False) ) # False: was_selected, see _restore_highlighted_buildings # currently same code as highlight_related_buildings inst = obj.fife_instance self.renderer.addOutlined(inst, *self.related_building_outline) self.renderer.addColored(inst, *self.related_building_color) else: # not buildable # must remove other highlight, fife does not support both self.renderer.removeOutlined(self.buildings_fife_instances[building]) self.renderer.addColored(self.buildings_fife_instances[building], *self.not_buildable_color)