Vamos a mejorar el menú creado en la pagina anterior , vamos hacer varias mejoras.
- Ocultar opciones.
- Habilitar/Deshabilitar opciones, no enviando señal si esta deshabilitado.
- Renombrar opciones después de haber creado el menú.
- Crear opciones no seleccionables.
Este script contiene todas las interacciones de cada Label de la lista.
La variable comando será lo que se envíe mediante la señal del script de MarginContainer. Gracias a ello, la interacción con la otra escena resulta más intuitiva y no hay que preocuparse por cambios en el índice.
Las funciones Deshabilitar() y Habilitar() sirven para evitar que se envíe una señal cuando la opción esté desactivada.
Las funciones Ocultar() y Mostrar() permiten hacer desaparecer o reaparecer la opción indicada.
Por último, Renombrar() cambia el texto del Label.
Ahora vamos actualizar el script principal para que el menú pueda gestionar los estados de sus opciones.
Vamos a revisar las novedades en el codigo.
Ahora el menu solo escogera los labels que tengan la clase Etiquetas, así que podremos meter labels no selecciona bles.
Función pensada para que, al inicializar el menú, si la primera opción está oculta, se seleccione la primera opción visible, aunque también se puede usar para reiniciar la selección.
Se actualiza la función para que se ajuste tambien al ancho, aunque de momento el selector no lo cambiara de tamaño.
Para evitar que se seleccionen opciones ocultas, comprobamos si la opción está oculta. Si lo está, la saltamos. Pero ojo: hay que asegurarse de no intentar saltar la primera o la última opción. Si después de hacer el salto el índice seleccionado no cambia, significa que hemos llegado a uno de los dos límites, así que recuperaremos el índice original.
Revisaremos si la Etiqueta esta habilitada, de no estarlo, no se enviara ninguna señal.
La gestión de las etiquetas se hará pasando un índice. La idea es que sea la escena a la que están conectada la que realmente controle el estado de las etiquetas.
Un pequeño ejemplo de como se comportaria el menu, usando las nuevas funciones que modifican las propiedades de la clase Etiqueta.
La primera opción no tiene dicha clase y por eso el selector no lo selecciona y tampoco puedes seleccionarla.
Aquí acabo, posiblemente no sea la ultima página sobre el tema, ya que es muy mejorable, como el selector que no se adapta al texto del label que ha quedado pendiente.
Enlace al proyecto del Github: https://github.com/ApuntesGodot/apuntesgodot.blogspot.com/tree/main/MenuDinamico%20V2
No hay comentarios:
Publicar un comentario