Saltar al contenido principal

Arquitectura de Clases

El código de Assets/_FluxSystemImova se organiza en capas con responsabilidades bien delimitadas. Esta página describe cada capa y cómo se relacionan sus clases principales.

Orquestación

FluxManager es el singleton (MonoBehaviour) que coordina todo el ciclo de vida de una secuencia: carga de datos, inicialización, ejecución del bucle de disparo de acciones y finalización. Delega el comportamiento específico del modo de flujo (Secuencial o Libre) en FluxState, una clase abstracta que actúa como estrategia intercambiable. Sus dos implementaciones concretas son Default_FluxState (modo Secuencial) y FreeMode_FluxState (modo Libre).

ClaseTipoResponsabilidad
FluxManagerSingleton MonoBehaviourOrquesta la carga, inicialización, ejecución y cierre de una secuencia; expone los eventos públicos del sistema.
FluxStateClase abstractaDefine el contrato de estrategia de comportamiento (chequeo de triggers, avance de pasos) según el modo de flujo.
Default_FluxStateImplementación de FluxStateComportamiento del modo Secuencial: avanza por índice según el "happy path".
FreeMode_FluxStateImplementación de FluxStateComportamiento del modo Libre: marca pasos como completados en un conjunto, sin orden fijo.

Modelo de datos

Sequence, Step y Action son POCOs serializables que representan el contenido del flujo de trabajo: qué secuencias existen, qué pasos las componen y qué acciones dispara cada paso. StepHandler es el singleton que actúa como registro runtime de todos los Step cargados en memoria, permitiendo consultarlos por UID sin recorrer manualmente cada Sequence.

ClaseTipoResponsabilidad
SequencePOCO serializableRepresenta un flujo de trabajo completo; contiene la lista ordenada StepsUID.
StepPOCO serializableRepresenta un punto del flujo: descripción, TriggerType, triggers correctos, timeout y Action asociadas.
ActionPOCO serializableRepresenta la unidad mínima disparable, identificada por UID.
StepHandlerSingletonRegistro runtime de todos los Step cargados, consultables por UID.

Configuración (ScriptableObjects)

La configuración del sistema se administra mediante ScriptableObjects, todos creables desde el menú Assets > Create > ScriptableObjects > Flux: FluxAssetData envuelve un FluxConfig con los parámetros globales del sistema (timers, foco de aplicación, MoveNextStepOnFailure, etc.); StepAssetData actúa como biblioteca local de Step reutilizables; PlatformAssetData describe la identidad de plataforma o arquetipo sobre la que corre la experiencia. FluxAssetData cuenta además con un Editor custom, FluxAssetDataEditor, que mejora su edición dentro del Inspector de Unity.

ClaseTipoResponsabilidad
FluxAssetDataScriptableObjectEnvuelve FluxConfig, los parámetros globales de comportamiento del sistema.
StepAssetDataScriptableObjectBiblioteca local de Step reutilizables entre secuencias.
PlatformAssetDataScriptableObjectIdentidad de plataforma/arquetipo de la experiencia.
FluxAssetDataEditorEditor customMejora la edición de FluxAssetData en el Inspector de Unity.

Componentes de escena

TriggererAction y StepChecker son el puente sin código entre el sistema de flujos y el contenido de la escena: TriggererAction dispara acciones desde botones, colliders o lectores QR, mientras que StepChecker reacciona a los cambios de paso mediante UnityEvents configurables desde el Inspector. Junto a ellos, CountDownTimer gestiona la cuenta regresiva de un paso o secuencia, e InternetConectionManager monitorea el estado de conectividad.

ClaseTipoResponsabilidad
TriggererActionComponente de escenaDispara Action desde botones, colliders o lectores QR.
StepCheckerComponente de escenaReacciona a cambios de paso mediante UnityEvents, sin necesidad de código.
CountDownTimerComponente de escenaGestiona la cuenta regresiva de tiempo de un paso o secuencia.
InternetConectionManagerComponente de escenaMonitorea el estado de conectividad a internet.

Backend de datos (Firebase)

El acceso a datos remotos se abstrae mediante FirebaseInstance, FirebaseData y Session, todas clases abstractas de tipo singleton. Cada una tiene dos implementaciones concretas seleccionadas en tiempo de compilación: una variante Mobile, que usa el SDK oficial de Firebase (#if UNITY_ANDROID || UNITY_IOS), y una variante Web, que usa SimpleFirebaseUnity vía REST (#if UNITY_WEBGL).

ClaseTipoResponsabilidad
FirebaseInstanceClase abstracta, singletonAdministra la instancia/conexión a Firebase.
FirebaseDataClase abstracta, singletonExpone las operaciones de datos (secuencias, pasos, sesiones).
SessionClase abstracta, singletonRepresenta la sesión activa del usuario.
FirebaseInstanceMobile / FirebaseDataMobileImplementación MobileUsa el SDK oficial de Firebase (UNITY_ANDROID / UNITY_IOS).
FirebaseInstanceWeb / FirebaseDataWebImplementación WebUsa SimpleFirebaseUnity vía REST (UNITY_WEBGL).

Respaldo local

LocalBackupManager persiste el progreso de la sesión en PlayerPrefs cuando se pierde la conexión a internet, y lo reenvía a Firebase automáticamente al reconectar, evitando la pérdida de datos de evaluación.

ClaseTipoResponsabilidad
LocalBackupManagerManagerPersiste el progreso en PlayerPrefs sin conexión y lo sincroniza con Firebase al reconectar.

Diagrama de clases