online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/colorpicker/ColorSelect.gd')
| -rw-r--r-- | ui/colorpicker/ColorSelect.gd | 41 |
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) |