コード例 #1
0
    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();
    }
コード例 #2
0
    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));
                }
            });
        }
    }
コード例 #3
0
    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);
    }