94 lines
2.7 KiB
C#
94 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Firebase.Extensions;
|
|
using Firebase.Firestore;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class CharacterSelection : MonoBehaviour
|
|
{
|
|
|
|
[SerializeField] public static string selectedCharJson = "";
|
|
public List<CharacterDataSO> predefinedCharacterJsons;
|
|
public List<Button> predefinedCharacterButtons;
|
|
|
|
public static Action OnCharacterChanged;
|
|
|
|
|
|
void Start()
|
|
{
|
|
for (int i = 0; i < predefinedCharacterButtons.Count; i++)
|
|
{
|
|
int tempI = i;
|
|
predefinedCharacterButtons[i].onClick.AddListener(() => { OnPredefinedCharButtonPress(tempI); });
|
|
}
|
|
LoadCharacterSkinCloud();
|
|
}
|
|
|
|
public void LoadCharacterFromString(string characterData)
|
|
{
|
|
selectedCharJson = characterData;
|
|
OnCharacterChanged?.Invoke();
|
|
}
|
|
|
|
void OnPredefinedCharButtonPress(int i)
|
|
{
|
|
selectedCharJson = predefinedCharacterJsons[i].jsonCharData;
|
|
OnCharacterChanged?.Invoke();
|
|
SaveCharacterSkinCloud();
|
|
}
|
|
|
|
public static void SaveCharacterSkinCloud()
|
|
{
|
|
#if UNITY_EDITOR
|
|
PlayerPrefs.SetString("skinData", selectedCharJson);
|
|
PlayerPrefs.Save();
|
|
#else
|
|
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
|
|
|
|
Dictionary<string,object> skindataDictionary = new Dictionary<string, object>();
|
|
skindataDictionary.Add("json", selectedCharJson);
|
|
|
|
DocumentReference docRef = db.Collection("SkinData").Document(gplayAuth.userID);
|
|
docRef.SetAsync(skindataDictionary).ContinueWithOnMainThread(task => {
|
|
if(task.IsCompleted){
|
|
Debug.Log("**** Save Completed Firestore ****");
|
|
}
|
|
else{
|
|
Debug.Log("**** Failed to save data to firestore ****");
|
|
}
|
|
});
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
void LoadCharacterSkinCloud()
|
|
{
|
|
#if UNITY_EDITOR
|
|
if (PlayerPrefs.HasKey("skinData"))
|
|
{
|
|
LoadCharacterFromString(PlayerPrefs.GetString("skinData"));
|
|
}
|
|
|
|
#else
|
|
|
|
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
|
|
DocumentReference docRef = db.Collection("SkinData").Document(gplayAuth.userID);
|
|
docRef.GetSnapshotAsync().ContinueWithOnMainThread(task => {
|
|
DocumentSnapshot snapshot = task.Result;
|
|
if(snapshot.Exists){
|
|
|
|
LoadCharacterFromString(snapshot.GetValue<string>("json"));
|
|
|
|
}else{
|
|
//show error previous data doesnt exists to load
|
|
Debug.Log("**** No previous data to load ****");
|
|
|
|
}
|
|
});
|
|
|
|
#endif
|
|
|
|
}
|
|
} |