class_name StatsArea extends CenterContainer @export var gradient : GradientTexture1D const CURSOR_WIDTH = 0.04 const VALID_COLOR := Color(0.1, 0.9, 0.85, 1.0) const NOT_VALID_COLOR := Color(1.0, 0.0, 0.3, 1.0) # Called when the node enters the scene tree for the first time. func _ready(): $Gradient.texture = gradient func set_area(need : Array): var zone_grad := Gradient.new() zone_grad.interpolation_mode = Gradient.GRADIENT_INTERPOLATE_CONSTANT zone_grad.set_color(0, Color.BLACK) zone_grad.set_color(1, Color.BLACK) var min_value = (float(need[0]) + float(GameTerrain.LEVELS_NUMBER)/2)/GameTerrain.LEVELS_NUMBER var max_value = (float(need[1]) + float(GameTerrain.LEVELS_NUMBER)/2)/GameTerrain.LEVELS_NUMBER zone_grad.add_point(min_value, Color(0,0,0,0)) zone_grad.add_point(max_value, Color.BLACK) var texture := GradientTexture1D.new() texture.gradient = zone_grad $Zone.texture = texture func set_cursor(color_value, is_valid: bool): var zone_grad := Gradient.new() zone_grad.interpolation_mode = Gradient.GRADIENT_INTERPOLATE_CONSTANT zone_grad.set_color(0, Color(1,1,1,0)) zone_grad.set_color(1, Color(1,1,1,0)) var color := NOT_VALID_COLOR if is_valid: color = VALID_COLOR zone_grad.add_point(max(color_value - CURSOR_WIDTH/2, 0.0), color) color.a = 0 zone_grad.add_point(min(color_value + CURSOR_WIDTH/2, 1.0), color) var texture := GradientTexture1D.new() texture.gradient = zone_grad $Cursor.texture = texture