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)