1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using System;
- using Newtonsoft.Json;
- using UnityEngine;
- namespace Unity.Services.Core.Configuration
- {
- /// <summary>
- /// Wrapper for project configuration values.
- /// </summary>
- [Serializable]
- class ConfigurationEntry
- {
- [JsonRequired]
- [SerializeField]
- string m_Value;
- /// <summary>
- /// Get the stored configuration value.
- /// </summary>
- [JsonIgnore]
- public string Value => m_Value;
- [JsonRequired]
- [SerializeField]
- bool m_IsReadOnly;
- /// <summary>
- /// If true, <see cref="Value"/> can't be changed.
- /// </summary>
- [JsonIgnore]
- public bool IsReadOnly
- {
- get => m_IsReadOnly;
- internal set => m_IsReadOnly = value;
- }
- /// <summary>
- /// Create a new instance of the <see cref="ConfigurationEntry"/> class.
- /// </summary>
- /// <remarks>
- /// Required for serialization.
- /// </remarks>
- public ConfigurationEntry() {}
- /// <summary>
- /// Create a new instance of the <see cref="ConfigurationEntry"/> class.
- /// </summary>
- /// <param name="value">
- /// The value to store.
- /// </param>
- /// <param name="isReadOnly">
- /// If true, the value can't be changed after construction.
- /// </param>
- public ConfigurationEntry(string value, bool isReadOnly = false)
- {
- m_Value = value;
- m_IsReadOnly = isReadOnly;
- }
- /// <summary>
- /// Set <see cref="Value"/> only if <see cref="IsReadOnly"/> is false.
- /// Does nothing otherwise.
- /// </summary>
- /// <param name="value">
- /// The new value to store.
- /// </param>
- /// <returns>
- /// Return true if <see cref="IsReadOnly"/> is false;
- /// return false otherwise.
- /// </returns>
- public bool TrySetValue(string value)
- {
- if (IsReadOnly)
- {
- return false;
- }
- m_Value = value;
- return true;
- }
- public static implicit operator string(ConfigurationEntry entry) => entry.Value;
- public static implicit operator ConfigurationEntry(string value) => new ConfigurationEntry(value);
- }
- }
|