public static void SaveLocalUserData(string userId) { BinaryFormatter bf = new BinaryFormatter(); List <UserDataBinary> playerDataList; FileStream file = File.Open(PersistentDataPath + "/PlayerData.dat", FileMode.OpenOrCreate); if (file.Length > 0) { playerDataList = (List <UserDataBinary>)bf.Deserialize(file); } else { playerDataList = new List <UserDataBinary>(); } bool found = false; foreach (UserDataBinary player in playerDataList) { if (player.UserID == userId) { player.BoneNumber = ApplicationModel.CurrentBoneNumber; player.Level = ApplicationModel.CurrentLevel; player.ModifiedDatetimeBinary = DateTime.Now.ToBinary(); Debug.Log(String.Format("Local user data saved: {0}", player.UserID)); found = true; break; } } if (!found) { UserDataBinary newPlayer = new UserDataBinary(); newPlayer.InitFromApplicationModel(); Debug.Log(String.Format("Local user data saved to new file: {0}", newPlayer.UserID)); playerDataList.Add(newPlayer); } bf.Serialize(file, playerDataList); file.Close(); }
public static void SyncUserData(UserDataBinary localUserData, UserDataJson cloudUserData) { if (localUserData == null && cloudUserData == null) { ApplicationModel.CurrentLevel = 1; ApplicationModel.CurrentBoneNumber = 0; Debug.Log("No user data found."); return; } else if (localUserData == null || (localUserData != null && cloudUserData != null && localUserData.ModifiedDatetimeBinary <= cloudUserData.ModifiedDatetimeBinary)) { ApplicationModel.CurrentLevel = cloudUserData.Level; ApplicationModel.CurrentBoneNumber = cloudUserData.BoneNumber; ApplicationModel.SaveLocalUserData(FirebaseAuthHelper.Auth.CurrentUser.UserId); Debug.Log(String.Format("User data loaded from the cloud: {0}", FirebaseAuthHelper.Auth.CurrentUser.UserId)); } else if (cloudUserData == null || (localUserData != null && cloudUserData != null && localUserData.ModifiedDatetimeBinary >= cloudUserData.ModifiedDatetimeBinary)) { ApplicationModel.CurrentLevel = localUserData.Level; ApplicationModel.CurrentBoneNumber = localUserData.BoneNumber; Debug.Log(String.Format("User data loaded from the local file: {0}", localUserData.UserID)); UserDataJson newCloudUserData = new UserDataJson(); newCloudUserData.InitFromApplicationModel(); FirebaseDatabaseHandler.WriteUser(newCloudUserData, FirebaseAuthHelper.Auth.CurrentUser.UserId).ContinueWith(task => { if (task.Result) { Debug.Log(String.Format("Write UserId: {0} to cloud succeed.", FirebaseAuthHelper.Auth.CurrentUser.UserId)); } else { Debug.LogError(String.Format("Write UserId: {0} to cloud failed.", FirebaseAuthHelper.Auth.CurrentUser.UserId)); } }); } }
public static UserDataBinary LoadLocalUserData(string userId) { UserDataBinary ret = null; if (File.Exists(PersistentDataPath + "/PlayerData.dat")) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(PersistentDataPath + "/playerData.dat", FileMode.Open); List <UserDataBinary> playerDatalist = (List <UserDataBinary>)bf.Deserialize(file); file.Close(); foreach (UserDataBinary player in playerDatalist) { if (player.UserID == userId) { ret = player; Debug.Log(String.Format("Local user data loaded: {0}", ret.UserID)); break; } } } return(ret); }