Skip to content
Snippets Groups Projects
GestionProgression.cs 2.96 KiB
using UnityEngine;
using System.Collections.Generic;
using System;
using Newtonsoft.Json;

public class GestionProgression : MonoBehaviour
{
    public mainManager mM;
    // Appeler cette fonction pour sauvegarder la progression
    public void SauveProgression(int numeroSession3, bool forcezero = false)
    {
        // Crer un objet contenant les donnes  sauvegarder, y compris le timestamp actuel



        // Charger la liste actuelle de sauvegardes ou crer une nouvelle liste si elle n'existe pas encore
        listDeDonnees sauvegardes = ChargerSauvegardes();
        bool foundinside = false;
        foreach(DonneesProgression dd in sauvegardes.listeDeDonnees)
        {
            if(dd.clef == mM.clefPourSauvegardeUtilisateur)
            {
                foundinside = true;
                if(numeroSession3> dd.NumeroSession)
                {
                    dd.NumeroSession = numeroSession3;
                }
                if (forcezero)
                {
                    dd.NumeroSession = 0;
                }
            }
        }
        if (!foundinside)
        {
            DonneesProgression newdonneesForUser = new DonneesProgression();
            newdonneesForUser.clef = mM.clefPourSauvegardeUtilisateur;
            newdonneesForUser.NumeroSession = numeroSession3;
            sauvegardes.listeDeDonnees.Add(newdonneesForUser);
        }


        // Ajouter la nouvelcole sauvegarde  la liste des sauvegardes associes  cette cl
        Debug.Log("sauvegarde count = " + sauvegardes.listeDeDonnees.Count);
        string jsonData = JsonUtility.ToJson(sauvegardes);
        Debug.Log("jsontosave = " + jsonData);
        // Sauvegarder le JSON dans PlayerPrefs
        PlayerPrefs.SetString("Sauvegardes", jsonData);
        // Sauvegarder PlayerPrefs pour s'assurer que les donnes sont enregistres immdiatement
        PlayerPrefs.Save();
        Debug.Log("Progression sauvegarde avec succs !");
        string jsonDataRetrieved  = PlayerPrefs.GetString("Sauvegardes", "{}");
        Debug.Log("jsonDataRetrieved = " + jsonDataRetrieved);
    }

    // Charger la liste actuelle de sauvegardes ou crer une nouvelle liste si elle n'existe pas encore
    public listDeDonnees ChargerSauvegardes()
    {
        string jsonData = PlayerPrefs.GetString("Sauvegardes", "{}");

        // Vrifier si la chane JSON n'est pas vide
        if (!string.IsNullOrEmpty(jsonData))
        {
            // Dsrialiser la chane JSON en une liste d'objets DonneesProgression
            return JsonUtility.FromJson<listDeDonnees>(jsonData);
        }
        else
        {
            // Si la chane JSON est vide, retourner une liste vide
            return new listDeDonnees();
        }
    }
}
[Serializable]
public class listDeDonnees
{
    [SerializeField]
    public List<DonneesProgression> listeDeDonnees;
}

// Classe pour stocker les donnes de progression
[Serializable]
public class DonneesProgression
{
    public string clef;
    public int NumeroSession;
}