55 lines
1.4 KiB
GDScript
55 lines
1.4 KiB
GDScript
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
|