def _point_circle_wetness(obj, power, normalizer, power_percent): return power_points.CircleAreaPoint(layer_type=layers.LAYER_TYPE.WETNESS, name='wetness_' + obj.uid, x=obj.x, y=obj.y, radius=obj.r, power=power * power_percent, normalizer=normalizer)
def _point_circle_temperature(obj, power, normalizer, power_percent): return power_points.CircleAreaPoint( layer_type=layers.LAYER_TYPE.TEMPERATURE, name='temperature_' + obj.uid, x=obj.x, y=obj.y, radius=obj.r, power=power * power_percent, normalizer=normalizer)
def _point_circle_soil(obj, power, normalizer, power_percent): return power_points.CircleAreaPoint(layer_type=layers.LAYER_TYPE.SOIL, name='soil_' + obj.uid, x=obj.x, y=obj.y, radius=obj.r, power=power * power_percent, default_power=0.0, normalizer=normalizer)
def _point_circle_height(obj, borders, normalizer, power_percent): return power_points.CircleAreaPoint(layer_type=layers.LAYER_TYPE.HEIGHT, name='height_circle_' + obj.uid, x=obj.x, y=obj.y, radius=obj.r, power=get_height_power_function( borders, power_percent), default_power=(0.0, 0.0), normalizer=normalizer)
def _default_soil_points(delta=0.0): return power_points.CircleAreaPoint( layer_type=layers.LAYER_TYPE.SOIL, name='default_soil', x=map_settings.WIDTH / 2, y=map_settings.HEIGHT / 2, power=0.3 + delta, radius=int(math.hypot(map_settings.WIDTH, map_settings.HEIGHT) / 2) + 1, normalizer=normalizers.equal)
def _default_temperature_points(delta=0.0): return power_points.CircleAreaPoint( layer_type=layers.LAYER_TYPE.TEMPERATURE, name='default_temperature', x=map_settings.WIDTH / 2, y=map_settings.HEIGHT / 2, power=0.5 + delta, radius=int(math.hypot(map_settings.WIDTH, map_settings.HEIGHT) / 2) + 1, normalizer=normalizers.equal)
def _point_circle_vegetation(obj, power, normalizer, power_percent): return power_points.CircleAreaPoint( layer_type=layers.LAYER_TYPE.VEGETATION, name='vegetation_' + obj.uid, x=obj.x, y=obj.y, radius=obj.r, power=(power[0] * power_percent, power[1] * power_percent), default_power=(0.0, 0.0), normalizer=normalizer)
def _default_wetness_points(delta=0.0): return power_points.CircleAreaPoint( layer_type=layers.LAYER_TYPE.WETNESS, name='default_wetness', x=map_settings.WIDTH // 2, y=map_settings.HEIGHT // 2, power=0.6 + delta, radius=int(math.hypot(map_settings.WIDTH, map_settings.HEIGHT) / 2) + 1, normalizer=normalizers.equal)
def _default_vegetation_points(): return power_points.CircleAreaPoint( layer_type=layers.LAYER_TYPE.VEGETATION, name='default_vegetation', x=map_settings.WIDTH / 2, y=map_settings.HEIGHT / 2, power=(0.25, 0.25), default_power=(0.0, 0.0), radius=int(math.hypot(map_settings.WIDTH, map_settings.HEIGHT) / 2) + 1, normalizer=normalizers.equal)
if height < optimal: return (0.0, math.fabs(borders[0] - height) / 2 * power_percent) if height > optimal: return (math.fabs(borders[1] - height) / 2 * power_percent, 0.0) return (0.0, 0.0) return power_function world.add_power_point( power_points.CircleAreaPoint( layer_type=LAYER_TYPE.HEIGHT, name='circular_point_1', x=25, y=25, power=get_height_power_function(borders=(-0.5, 0.5)), default_power=(0, 0), radius=15, normalizer=normalizers.linear_2)) world.add_power_point( power_points.CircleAreaPoint( layer_type=LAYER_TYPE.HEIGHT, name='circular_point_2', x=35, y=45, power=get_height_power_function(borders=(0.25, 0.75)), default_power=(0, 0), radius=15, normalizer=normalizers.linear_2))