online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/colorpicker/ColorSelect.gd')
-rw-r--r--ui/colorpicker/ColorSelect.gd36
1 files changed, 20 insertions, 16 deletions
diff --git a/ui/colorpicker/ColorSelect.gd b/ui/colorpicker/ColorSelect.gd
index 4533514..1a8ddfa 100644
--- a/ui/colorpicker/ColorSelect.gd
+++ b/ui/colorpicker/ColorSelect.gd
@@ -2,38 +2,42 @@ extends Control
class_name ColorSelect
var color: Color setget set_color
+var last_clicked_pos := Vector2.ZERO
onready var shader_holder := $ShaderHolder
signal color_changed(color)
-func set_color(newcolor):
+func set_color(newcolor: Color, sig := false) -> void:
if newcolor != color:
color = newcolor
shader_holder.material.set_shader_param("hue", color.h)
update()
+ if sig:
+ emit_signal("color_changed", color)
-func _gui_input(event):
+func _gui_input(event: InputEvent) -> void:
if Input.is_action_pressed("click") and event is InputEventMouse:
- var position = event.position
- var saturation = clamp(position.x / rect_size.x, 0, 1)
- var value = clamp(1 - (position.y / rect_size.y), 0, 1)
- set_color(Color.from_hsv(color.h, saturation, value))
- update()
- emit_signal("color_changed", color)
+ last_clicked_pos = event.position
+ var saturation := clamp(last_clicked_pos.x / rect_size.x, 0, 1)
+ var value := clamp(1 - (last_clicked_pos.y / rect_size.y), 0, 1)
+ set_color(Color.from_hsv(color.h, saturation, value), true)
+
+
+func _draw() -> void:
+ var draw_color := color.inverted()
+ var vlinex := clamp(last_clicked_pos.x, 0, rect_size.x)
-func _draw():
- var draw_color = color.inverted()
+ draw_line(Vector2(vlinex, 0), Vector2(vlinex, rect_size.x), draw_color)
- var vlinex = color.s * rect_size.x
- var vliney = rect_size.y
+ var hliney = clamp(last_clicked_pos.y, 0, rect_size.y)
- draw_line(Vector2(vlinex, 0), Vector2(vlinex, vliney), draw_color)
+ draw_line(Vector2(0, hliney), Vector2(rect_size.x, hliney), draw_color)
- var hlinex = rect_size.x
- var hliney = rect_size.y - color.v * rect_size.y
- draw_line(Vector2(0, hliney), Vector2(hlinex, hliney), draw_color)
+func _hue_changed(hue: float) -> void:
+ color.h = hue
+ set_color(color, true)