63 lines
1.5 KiB
GDScript
63 lines
1.5 KiB
GDScript
extends Control
|
|
|
|
onready var tween = $Tween;
|
|
|
|
const time:float = 0.2;
|
|
var state:int = 0;
|
|
var controls:Array = [];
|
|
|
|
var mem = preload("res://CustomTooltipInGame.tscn")
|
|
var tooltip = null;
|
|
var tooltipHidden = null;
|
|
|
|
var hidden:bool = false;
|
|
|
|
func _make_custom_tooltip(for_text)->Control:
|
|
if hidden:
|
|
if is_instance_valid(tooltipHidden):
|
|
return tooltipHidden;
|
|
|
|
tooltipHidden = mem.instance();
|
|
tooltipHidden.get_node("Node2D").get_node("Label").text = "";
|
|
tooltipHidden.get_node("Node2D").position.x = - 1000;
|
|
return tooltipHidden;
|
|
|
|
if is_instance_valid(tooltip):
|
|
return tooltip;
|
|
|
|
tooltip = mem.instance()
|
|
tooltip.get_node("Node2D").get_node("Label").text = for_text
|
|
return tooltip;
|
|
|
|
func HoverOn(_controls:Array):
|
|
if is_instance_valid(tooltip):
|
|
tooltip.visible = false;
|
|
hidden = true;
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
|
|
controls = _controls;
|
|
StartTween(1);
|
|
|
|
func HoverOff(_controls:Array):
|
|
if is_instance_valid(tooltip):
|
|
tooltip.visible = true;
|
|
hidden = false;
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
|
controls = _controls;
|
|
StartTween(2);
|
|
|
|
func StartTween(value):
|
|
if (state == 1 and value == 2) or (state == 2 and value == 1):
|
|
tween.remove_all();
|
|
|
|
state = value;
|
|
|
|
var modulateValue = Color(1, 1, 1, 1);
|
|
if state == 1:
|
|
modulateValue = Color(1, 1, 1, 0);
|
|
|
|
for i in controls:
|
|
tween.interpolate_property(i, "modulate", i.modulate, modulateValue, time, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT, 0)
|
|
tween.start()
|
|
|
|
func _on_Tween_tween_all_completed():
|
|
state = 0;
|