Untitled

 avatar
unknown
plain_text
a year ago
2.4 kB
11
Indexable
using Firebase;
using Firebase.Database;
using Firebase.Extensions;
using UnityEngine;

public class FirebaseManager : MonoBehaviour
{
    public static FirebaseManager instance;
    private DatabaseReference reference;
    private FirebaseApp app;
    public bool firebaseReady = false;

    void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
            InitializeFirebase();
        }
        else
        {
            Destroy(gameObject);
        }
    }

    void InitializeFirebase()
    {
        Debug.Log("Inicializando Firebase...");

        FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task =>
        {
            var dependencyStatus = task.Result;

            if (dependencyStatus == DependencyStatus.Available)
            {
                app = FirebaseApp.DefaultInstance;
                FirebaseDatabase.DefaultInstance.SetPersistenceEnabled(false);
                reference = FirebaseDatabase.DefaultInstance.RootReference;

                firebaseReady = true;
                Debug.Log("Firebase inicializado correctamente");

                reference.Child("connection_test").SetValueAsync("success");
            }
            else
            {
                Debug.LogError($"No se pudo inicializar Firebase: {dependencyStatus}");
            }
        });
    }

    public void SavePlayerStats(string userId, int coins, int score)
    {
        if (!firebaseReady || reference == null)
        {
            Debug.LogError("Referencia a Firebase aUn no estA lista");
            return;
        }

        var playerData = new PlayerData()
        {
            monedas = coins,
            puntuacion = score
        };

        string json = JsonUtility.ToJson(playerData);

        reference.Child("players").Child(userId).SetRawJsonValueAsync(json).ContinueWithOnMainThread(task =>
        {
            if (task.IsCompleted && !task.IsFaulted)
            {
                Debug.Log("Datos guardados en Firebase correctamente");
            }
            else
            {
                Debug.LogError("Error guardando datos: " + task.Exception);
            }
        });
    }

    [System.Serializable]
    public class PlayerData
    {
        public int monedas;
        public int puntuacion;
    }
}
Editor is loading...
Leave a Comment