Easy Chapter Generator
EnglishEspañol

Caso práctico: guardar una condición sencilla

Llama a SetProgressState("generator_unlocked", true) tras aceptar el desbloqueo y exige Success. Utiliza el mismo ID en Required True State o con GetProgressState.

Escribir false elimina la clave. Una lectura devuelve false tanto si falta como si el valor lógico es falso. Llama a FlushProgress en el punto donde el proyecto exija durabilidad.

Caso práctico: conectar un inventario sin duplicar sus datos

  1. 1
    El inventario mantiene cantidades y propiedad.
  2. 2
    Crea la fila Obtener la llave del reactor.
  3. 3
    Escucha el evento autorizado de objeto añadido o cambio de condición.
  4. 4
    Si se cumple y el ID esperado está Active, llama a TryCompleteObjective.
  5. 5
    Si otras filas solo necesitan el hecho histórico, guarda reactor_key_obtained; no guardes el inventario en IProgressStore.

Patrones de condiciones booleanas

PatrónConfiguraciónResultado
Solo tras desbloquearRequired True StateSe omite mientras sea false
Solo primera visitaRequired False StateSe omite después de marcarlo
Dos alternativasUna exige true y la contigua falseParticipa una sola
Indicador de UIGetProgressState tras ReadyMuestra la lectura actual

Límites y errores

La fila true se omite

La clave falta, difiere o la escritura falló.

El inventario cambia y no avanza

El estado no consulta el inventario; el puente debe reenviar su notificación.

Se pierde al salir

Comprueba resultados de SetProgressState y Flush.

Necesitas cantidades

Guárdalas en inventario/partida, no en el estado booleano.

Establecer un estado booleano de progresión

Dónde colocarlo
Añade este componente al sistema de juego responsable de la señal de desbloqueo.
Cuándo llamarlo
Llama a UnlockGenerator después de aceptar el desbloqueo y comprueba ProgressOperationResult.
Comportamiento
Usa una clave estable y no vacía. El valor sirve para condiciones sencillas de objetivos; no sustituye los datos generales de una partida.
using System;
using System.Collections;
using System.Collections.Generic;
using OverFuture.ChapterObjectiveSystem.Chapters;
using OverFuture.ChapterObjectiveSystem.Events;
using OverFuture.ChapterObjectiveSystem.Objectives;
using OverFuture.ChapterObjectiveSystem.Persistence;
using OverFuture.ChapterObjectiveSystem.Progression;
using UnityEngine;

public sealed class ProgressStateWriterExample : MonoBehaviour
{
    public bool UnlockGenerator()
    {
        ChapterManager manager = ChapterManager.Instance;
        return manager != null &&
               manager.SetProgressState("generator_unlocked", true) ==
               ProgressOperationResult.Success;
    }
}

Consultar un estado booleano de progresión

Dónde colocarlo
Utiliza este lector en la interfaz o en una integración que necesite consultar la misma condición.
Cuándo llamarlo
Llama a TryReadGeneratorState después de que el Manager se haya inicializado.
Comportamiento
GetProgressState devuelve false tanto para una clave inexistente como para un valor false guardado; este contrato booleano no indica si la clave existe.
using System;
using System.Collections;
using System.Collections.Generic;
using OverFuture.ChapterObjectiveSystem.Chapters;
using OverFuture.ChapterObjectiveSystem.Events;
using OverFuture.ChapterObjectiveSystem.Objectives;
using OverFuture.ChapterObjectiveSystem.Persistence;
using OverFuture.ChapterObjectiveSystem.Progression;
using UnityEngine;

public sealed class ProgressStateReaderExample : MonoBehaviour
{
    public bool TryReadGeneratorState(out bool isUnlocked)
    {
        isUnlocked = false;
        ChapterManager manager = ChapterManager.Instance;
        if (manager == null)
        {
            return false;
        }

        isUnlocked = manager.GetProgressState("generator_unlocked");
        return true;
    }
}