FlagsManager es un singleton autoload que proporciona un almacén centralizado de banderas booleanas con nombre. Úsalo para realizar el seguimiento del estado persistente del juego: completar el tutorial, funciones desbloqueadas, flujos de primera ejecución y cualquier otra condición binaria que deba leerse en diferentes escenas y sistemas.

FlagsManager está registrado como un autoload, por lo que está disponible desde cualquier script del proyecto. Todos los valores de las banderas son de tipo bool; no hay enteros, cadenas u otros tipos.

Resumen de la clase

Al iniciar, FlagsManager carga un recurso Flags (flags.tres) desde uid://calw1rmsghoh8. Cada entrada en flags.tres es un valor booleano con nombre.

Inicialización

func _ready():
    _flags.expected_type = TYPE_BOOL
    _flags.check_item_types()

_ready() obliga a que cada entrada en flags.tres sea estrictamente un booleano. Si se asigna accidentalmente un valor no booleano a una bandera, check_item_types() registra un error al iniciar.

La validación TYPE_BOOL es más estricta que la de SceneManager y MusicManager, que utilizan TYPE_OBJECT. Esto significa que incluso un entero 0 o 1 en flags.tres provocará un error: cada entrada debe ser un bool real de Godot.

Referencia de la API

get_flag(flag: String) -> bool

Devuelve el valor actual de la bandera indicada.

  • flag (String): El nombre de la bandera tal como está registrada en flags.tres. Sensible a mayúsculas y minúsculas.
  • Retorno (bool): El valor booleano actual de la bandera. Devuelve false por defecto para las banderas que existen pero no han sido establecidas explícitamente a true.

set_flag(flag: String, value: bool) -> void

Actualiza el valor de la bandera indicada y emite un mensaje de registro de depuración.

  • flag (String): El nombre de la bandera tal como está registrada en flags.tres. Sensible a mayúsculas y minúsculas.
  • value (bool): El nuevo valor booleano. Pasa true para activar la bandera, false para desactivarla.

Registro de depuración (logging)

Cada llamada a set_flag imprime un mensaje con print_debug:

Bandera activada: tutorial_completed

Ejemplos de uso

Comprobar una bandera

if FlagsManager.get_flag("tutorial_completed"):
    SceneManager.change_to_scene("battle")
else:
    SceneManager.change_to_scene("tutorial")

Establecer una bandera

func _on_tutorial_finished() -> void:
    FlagsManager.set_flag("tutorial_completed", true)
    SceneManager.change_to_scene("battle")

El recurso Flags

Todos los nombres de banderas y sus valores iniciales se definen en flags.tres. Abre este archivo en el Inspector de Godot para ver la lista completa de banderas.

flags.tres es la única fuente de verdad para los nombres de banderas válidos. No puedes llamar a get_flag o set_flag con un nombre que no exista en este recurso.

Añadir una nueva bandera

  1. Abre flags.tres en el Inspector: Busca flags.tres en la pestaña Sistema de Archivos y ábrelo.
  2. Añade una nueva entrada: Añade un nuevo par clave-valor (nombre → bool).
  3. Verifica al iniciar: Ejecuta el proyecto y comprueba que no haya errores de tipo.
  4. Utiliza la bandera en el código:
    FlagsManager.set_flag("first_battle_won", true)
    

Casos de uso de las banderas

  • Seguimiento de finalización del tutorial: Dirigir a los nuevos jugadores al tutorial.
  • Alternancia de funciones (feature toggles): Activar o desactivar funciones opcionales.
  • Hitos de progreso: Hacer el seguimiento de logros únicos.
  • Banderas de depuración: Añadir banderas temporales para agilizar las pruebas.

Páginas relacionadas


This site uses Just the Docs, a documentation theme for Jekyll.