Пример #1
0
 public PlayerPrefsEntry(string key, string value, bool isEncrypted)
 {
     Key         = key;
     ValueString = value ?? "";
     Type        = SecurePlayerPrefs.ItemType.String;
     SetupSpecifiedEntry(key, isEncrypted);
 }
Пример #2
0
 public PlayerPrefsEntry(string key, float value, bool isEncrypted)
 {
     Key        = key;
     ValueFloat = value;
     Type       = SecurePlayerPrefs.ItemType.Float;
     SetupSpecifiedEntry(key, isEncrypted);
 }
Пример #3
0
 public PrefsEntry(string key, int value, bool isEncrypted, bool isPlayerPrefs)
 {
     Key           = key;
     ValueInt      = value;
     IsPlayerPrefs = isPlayerPrefs;
     Type          = SecurePlayerPrefs.ItemType.Int;
     SetupSpecifiedEntry(key, isEncrypted);
 }
Пример #4
0
 bool ValidateEncryptedValue(SecurePlayerPrefs.ItemType itemType, string encryptedValue)
 {
     if (SecurePlayerPrefs.DecryptValue(encryptedValue, itemType) == null)
     {
         Type        = SecurePlayerPrefs.ItemType.String;
         ValueString = encryptedValue;
         IsEncrypted = false;
         return(false);
     }
     return(true);
 }
Пример #5
0
 bool ValidateEncryptedValue(SecurePlayerPrefs.ItemType itemType, string encryptedValue)
 {
     if (SecurePlayerPrefs.DecryptValue(encryptedValue, itemType) == null)
     {
         Debug.LogWarning(
             string.Format(
                 "Unable to decrypt or parse '{0}' ({1}). Please check you have the correct pass phrase set and refresh",
                 _key, encryptedValue));
         Type        = SecurePlayerPrefs.ItemType.String;
         ValueString = encryptedValue;
         IsEncrypted = false;
         return(false);
     }
     return(true);
 }
Пример #6
0
        /// <summary>
        /// Load setup key. The passed key will always be the version read from disk so may be encrypted
        /// As we can't tell the type, we use an unlikely value to determine whether it exists or not!
        /// NOTE: (should we do a double check on 2 default values to be 100% sure)?
        /// </summary>
        void LoadValue(string key)
        {
            SecurePlayerPrefs.ItemType itemType = SecurePlayerPrefs.ItemType.None;
            var stringValue = PlayerPrefs.GetString(key, SecurePlayerPrefs.NotFoundString);

            if (stringValue != SecurePlayerPrefs.NotFoundString)
            {
                itemType = SecurePlayerPrefs.GetItemType(stringValue);
            }

            if (itemType != SecurePlayerPrefs.ItemType.None)
            {
                // check we can decrypt key - otherwise probably not encrypted
                var decryptedKey = SecurePlayerPrefs.DecryptKey(key);
                if (decryptedKey != null)
                {
                    if (!ValidateEncryptedValue(itemType, stringValue))
                    {
                        return;
                    }
                    IsEncrypted            = true;
                    OriginalEncryptedKey   = key;
                    OriginalEncryptedValue = stringValue;
                    Key  = decryptedKey;
                    Type = itemType;

                    switch (itemType)
                    {
                    case SecurePlayerPrefs.ItemType.Int:
                        //case SecurePlayerPrefs.ItemType.Bool:
                        ValueInt = SecurePlayerPrefs.GetInt(decryptedKey, 0, true);
                        break;

                    case SecurePlayerPrefs.ItemType.Float:
                        ValueFloat = SecurePlayerPrefs.GetFloat(decryptedKey, 0, true);
                        break;

                    case SecurePlayerPrefs.ItemType.String:
                        //case SecurePlayerPrefs.ItemType.Vector2:
                        //case SecurePlayerPrefs.ItemType.Vector3:
                        ValueString = SecurePlayerPrefs.GetString(decryptedKey, "", true);
                        return;
                    }
                }
                else
                {
                    itemType = SecurePlayerPrefs.ItemType.None;
                }
            }

            // If we still haven't gotten anything.
            if (itemType == SecurePlayerPrefs.ItemType.None)
            {
                // if it wasn't an encrypted item
                Key = key;
                if (stringValue != SecurePlayerPrefs.NotFoundString)
                {
                    Type        = SecurePlayerPrefs.ItemType.String;
                    ValueString = stringValue;
                }
                else
                {
                    var intValue = PlayerPrefs.GetInt(Key, int.MinValue + 10);
                    if (intValue != int.MinValue + 10)
                    {
                        Type     = SecurePlayerPrefs.ItemType.Int;
                        ValueInt = intValue;
                    }
                    else
                    {
                        var floatValue = PlayerPrefs.GetFloat(Key, float.MinValue + 10);
                        if (!Mathf.Approximately(floatValue, float.MinValue + 10))
                        {
                            Type       = SecurePlayerPrefs.ItemType.Float;
                            ValueFloat = floatValue;
                        }
                    }
                }
            }
        }