using System.Collections.Generic;
namespace RecrownedGTK.Persistence {
    /// <summary>
    /// Serializable preferences.
    /// </summary>
    public struct PreferencesInfo {
        /// <summary>
        /// Array of preferences.
        /// </summary>
        public PreferenceInfo[] preferences;

        /// <summary>
        /// Sets the serializable preference with a string string value pair dictionary.
        /// </summary>
        /// <param name="preferences">A dictionary of string and string pair.</param>
        public void SetPreferences(Dictionary<string, string> preferences)
        {
            this.preferences = new PreferenceInfo[preferences.Count];
            int pairIndex = 0;
            foreach (KeyValuePair<string, string> item in preferences)
            {
                this.preferences[pairIndex] = new PreferenceInfo(item.Key, item.Value);
                pairIndex++;
            }
        }

        /// <summary>
        /// Return a dictionary containing a string string key value pair.
        /// </summary>
        /// <returns>Dictionary with a string value and string key representing a preference option.</returns>
        public Dictionary<string, string> GetPreferences() {
            Dictionary<string, string> res = new Dictionary<string, string>();
            for (int prefID = 0; prefID < preferences.Length; prefID++) {
                res.Add(preferences[prefID].key, preferences[prefID].value);
            }
            return res;
        }
        
        /// <summary>
        /// Serializable preference option.
        /// </summary>
        public struct PreferenceInfo {
            /// <summary>
            /// The key and value of the option in the preferences.
            /// </summary>
            public string key, value;

            public PreferenceInfo(string key, string value) {
                this.key = key;
                this.value = value;
            }
        }
    }
}