TDD_SaveSystem - ChristianDominguezVicente/TFM GitHub Wiki

Sistema de Guardado y Carga de partida

Diversos scripts del juego como, sonido, configuración de pantalla, brillo, texto, pausa, misiones, entre otros, se comunican con el script principal MenuInicial, que se encarga de gestionar la lógica de los botones del menú. Esta interacción permite sincronizar y mantener la persistencia de datos mediante el sistema PlayerPrefs, lo que asegura que configuraciones como el audio, la pantalla, el progreso de las misiones, el estado de guardado o carga, la posición del personaje y el tiempo de posesión entre escenas se conserven correctamente entre sesiones.

El sistema de guardado cuenta con tres ranuras (slots), cada una asociada a un botón específico para guardar o cargar partidas. Cada tipo de dato se gestiona a través de una variable slot, que identifica a qué ranura pertenece. Cuando el jugador inicia una partida sin haber guardado previamente, el sistema realiza un guardado automático en la primera ranura, aunque este no se muestra en los menús de guardado o carga.

Además, el juego cuenta con un sistema de autoguardado que se activa cada 3 minutos, y este sí queda registrado en la cuarta ranura del menú de carga.

  • Awake(): Se realiza una búsqueda del player.
  • OnEnable() | OnDisable() | OnSceneLoaded(Scene scene, LoadSceneMode mode): Evento que distintigue si hay alguna partida guardada, si se pasa a otro escenario sin haber guardado, si se quiere cargar los datos de una partida o si se quiere iniciar una nueva partida.
  • FindPlayer(): Realización de una búsqueda del player llamado por Awake().
  • StartAutoSaveTimer(): Carga del temporizador de autoguardado.
  • StartNewPlayTime(): Nuevo inicio del tiempo y del temporizador de autoguardado.
  • Update(): Actualización del temporizador de autoguardado (siempre que no se está en una escena de transición o de menú inicial) y su ejecución.
  • SaveGame(int slotIndex): Guardado de todas las variables en el índice del slot correspondiente mediante el PlayerPrefs.
  • ObjectSave(int slotIndex): Guardado del estado de los objetos del ObjectManager y llamado por SaveGame(int slotIndex).
  • LoadGame(int slotIndex): Comprobación y guardado del índice del slot de carga, llamado por ConfigureForLoadData(BotonConfig config) del MenuInicial.
  • FadeOut(): Visualización del fundido en las transiciones del juego y cargado de la escena correspondiente al slot.
  • LoadPlayerPosition(): Carga de la posición del jugador, llamado por OnSceneLoaded(Scene scene, LoadSceneMode mode).
  • LoadPlayTime(): Carga del tiempo jugado del jugador, llamado por OnSceneLoaded(Scene scene, LoadSceneMode mode).
  • LoadKarma(): Carga del karma del jugador, llamado por OnSceneLoaded(Scene scene, LoadSceneMode mode).
  • LoadObjects(): Carga de los estados de los objetos interactuables, llamado por OnSceneLoaded(Scene scene, LoadSceneMode mode).
  • LoadHistory(): Carga del historial de conversaciones del jugador, llamado por OnSceneLoaded(Scene scene, LoadSceneMode mode).
  • HasSave(int slotIndex): Comprobación si hay una partida guardada en el slot, llamado por LoadGame(int slotIndex), GetSaveInfo(int slotIndex) y ConfigureForLoadData(BotonConfig config) y UpdateSingleSaveSlotUI(int slotIndex) del MenuInicial.
  • GetSaveInfo(int slotIndex): Obtener y visualizar los datos de la partida guardada, llamado por PerformAutoSave(), ConfigureForLoadData(BotonConfig config) del MenuInicial.
  • FormatPlayTime(float seconds): Convierte una duración en segundos a un formato de tiempo legible HH:MM:SS (horas:minutos:segundos).
  • LoadPossessionBar(): Carga del tiempo de posesión, llamado por OnSceneLoaded(Scene scene, LoadSceneMode mode).
  • PerformAutoSave(): Realización del autoguardado, visualización del icono de autoguardado, guardado de los datos y actualización del texto del menú de carga.
  • SetKarma(float value): Asignación y guardado del karma, llamado por los objetos interactuables claves que desencadenan la variación del karma del ObjectManager.
  • GetKarma(): Obtención del valor del karma, llamado por los objetos interactuables claves que desencadenan la variación del karma del ObjectManager.
  • SetHistory(string value): Asignación del historial del diálogo, llamado por DialogueHistory.