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