online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/colorpicker/ColorSelect.gd')
-rw-r--r--ui/colorpicker/ColorSelect.gd41
1 files changed, 41 insertions, 0 deletions
diff --git a/ui/colorpicker/ColorSelect.gd b/ui/colorpicker/ColorSelect.gd
new file mode 100644
index 0000000..1102709
--- /dev/null
+++ b/ui/colorpicker/ColorSelect.gd
@@ -0,0 +1,41 @@
+extends Control
+class_name ColorSelect
+
+var color : Color setget set_color
+
+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()
+
+func apply_hue(newhue):
+ self.color.h = newhue
+
+
+func _gui_input(event):
+ if event is InputEventMouseButton:
+ var position = event.position
+ var saturation = position.x / rect_size.x
+ var value = 1 - (position.y / rect_size.y)
+ 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
+
+ draw_line(Vector2(vlinex - 1, 0), Vector2(vlinex - 1, vliney), Color.black)
+ draw_line(Vector2(vlinex, 0), Vector2(vlinex, vliney), Color.white)
+ draw_line(Vector2(vlinex + 1, 0), Vector2(vlinex + 1, vliney), Color.black)
+
+ var hlinex = rect_size.x
+ var hliney = rect_size.y - color.v * rect_size.y
+
+ 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)