-
Notifications
You must be signed in to change notification settings - Fork 0
/
nodoPunto.gd
82 lines (72 loc) · 3.48 KB
/
nodoPunto.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
extends TextureRect
class_name nodoPunto
var nodo:NodoGrafo
var tablero = load("res://Tablero.tres")
var analisisInfo = load("res://AnalisisInfo.tres")
var CartaInfo = preload("res://CartaInfo.tscn")
func _ready():
if nodo.cartasRestantes.size()==1: texture = load("res://Texturas/PuntoCompleto.png")
func _on_mouse_entered():
var infoDeCarta = CartaInfo.instantiate()
infoDeCarta.get_node("FondoAtribs/Atribs").text="Estado del tablero:\n\n"
infoDeCarta.get_node("FondoNombre/Nombre").text=""
var textoAñadir =""
for atribIndex in range(tablero.tiposAtributos.size()):
textoAñadir = ""
var primerCheck=false
var segundoCheck=false
textoAñadir += tablero.tiposAtributos[atribIndex] + "\n"
var sortedAtributos = tablero.posiblesAtributos[atribIndex].duplicate()
sortedAtributos.sort()
for posibleAtributo in sortedAtributos:
var counter = 0
for carta in nodo.cartasRestantes:
if carta.atributos[atribIndex]==posibleAtributo: counter +=1
if counter!=0:
textoAñadir += posibleAtributo + ": " + str(counter) + ", "
if primerCheck:
segundoCheck=true
primerCheck=true
if segundoCheck:
infoDeCarta.get_node("FondoAtribs/Atribs").text += textoAñadir
infoDeCarta.get_node("FondoAtribs/Atribs").text = infoDeCarta.get_node("FondoAtribs/Atribs").text.left(infoDeCarta.get_node("FondoAtribs/Atribs").text.length() - 2)
infoDeCarta.get_node("FondoAtribs/Atribs").text += "\n"
var textoLargo = 0
var font = (infoDeCarta.get_node("FondoAtribs/Atribs").get_theme_font("font", ""))
infoDeCarta.get_node("FondoNombre/Nombre").text = nodo.name
for line in infoDeCarta.get_node("FondoAtribs/Atribs").text.split("\n"):
if font.get_string_size(line).x>textoLargo:
textoLargo = font.get_string_size(line).x
if font.get_string_size(infoDeCarta.get_node("FondoNombre/Nombre").text).x>textoLargo:
textoLargo = font.get_string_size(infoDeCarta.get_node("FondoNombre/Nombre").text).x
var numLineas = infoDeCarta.get_node("FondoAtribs/Atribs").text.count("\n")
infoDeCarta.position=Vector2(size.x, 0)
if numLineas>5:
var heightAnterior = infoDeCarta.get_node("FondoAtribs").size.y
infoDeCarta.get_node("FondoNombre").size.x = textoLargo
infoDeCarta.get_node("FondoAtribs").size = Vector2(textoLargo, heightAnterior*(numLineas/5.0))
infoDeCarta.size = Vector2(textoLargo+30, infoDeCarta.size.y + (heightAnterior*(numLineas/5.0))-heightAnterior)
if (global_position.y+infoDeCarta.size.y>get_viewport().size.y):
infoDeCarta.position=Vector2(size.x, (get_viewport().size.y-(global_position.y+infoDeCarta.size.y)))
if infoDeCarta.get_node("FondoAtribs/Atribs").text == "Estado del tablero:\n\n":
infoDeCarta.get_node("FondoAtribs").queue_free()
infoDeCarta.size.y = infoDeCarta.get_node("FondoNombre").size.y+20
infoDeCarta.position=Vector2(size.x, 0)
if global_position.x>get_viewport().size.x/2:
infoDeCarta.position.x = -infoDeCarta.size.x
add_child(infoDeCarta)
func _gui_input(event):
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
_on_node_clicked()
func _on_node_clicked():
var listaFinal = [nodo]
var nodosPendientes = [nodo]
while nodosPendientes.size()!=0:
var nodoPadre = nodosPendientes.pop_front()
for posibleNodoHijo in analisisInfo.listaNodos:
if posibleNodoHijo.padre == nodoPadre:
listaFinal.append(posibleNodoHijo)
nodosPendientes.append(posibleNodoHijo)
get_parent().representarGrafo(listaFinal, false)
func _on_mouse_exited():
if has_node("InfoAdicional"):get_node("InfoAdicional").free()