online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/colorpicker/ColorSelect.gd')
| -rw-r--r-- | ui/colorpicker/ColorSelect.gd | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/ui/colorpicker/ColorSelect.gd b/ui/colorpicker/ColorSelect.gd index 1102709..211e9f9 100644 --- a/ui/colorpicker/ColorSelect.gd +++ b/ui/colorpicker/ColorSelect.gd @@ -1,30 +1,39 @@ extends Control class_name ColorSelect -var color : Color setget set_color +var color: Color setget set_color + +var _focused := false setget set_focused onready var shader_holder := $ShaderHolder signal color_changed(color) + func set_color(newcolor): - color = newcolor - shader_holder.material.set_shader_param("hue", color.h) - update() + if newcolor != color: + color = newcolor + shader_holder.material.set_shader_param("hue", color.h) + update() + func apply_hue(newhue): self.color.h = newhue func _gui_input(event): - if event is InputEventMouseButton: + if _focused and Input.is_action_pressed("click") and event is InputEventMouse: var position = event.position var saturation = position.x / rect_size.x var value = 1 - (position.y / rect_size.y) + if saturation > 1 or saturation < 0 or value > 1 or value < 0: + _focused = false + return set_color(Color.from_hsv(color.h, saturation, value)) update() emit_signal("color_changed", color) + func _draw(): var vlinex = color.s * rect_size.x var vliney = rect_size.y @@ -39,3 +48,7 @@ func _draw(): draw_line(Vector2(0, hliney - 1), Vector2(hlinex, hliney - 1), Color.black) draw_line(Vector2(0, hliney), Vector2(hlinex, hliney), Color.white) draw_line(Vector2(0, hliney + 1), Vector2(hlinex, hliney + 1), Color.black) + + +func set_focused(focused): + _focused = focused |