using System; using System.Collections.Generic; using UnityEngine.Pool; namespace RosettaUI.Swatch { /// /// Swatchのセーブロード /// public class SwatchPersistentService { public event Action onSaveSwatches; private readonly string _keyPrefix; public bool HasSwatches => PersistentData.HasKey(KeySwatches); protected string KeySwatches => $"{_keyPrefix}-Swatches"; public SwatchPersistentService(string keyPrefix) => _keyPrefix = keyPrefix; public void SaveSwatches(IEnumerable> nameAndValueEnumerable) { using var _ = ListPool>.Get(out var nameAndValues); nameAndValues.AddRange(nameAndValueEnumerable); PersistentData.Set(KeySwatches, nameAndValues); onSaveSwatches?.Invoke(); } public virtual IEnumerable> LoadSwatches() { return PersistentData.Get>>(KeySwatches); } /// /// 汎用サービス /// public T Get(string key) { return PersistentData.Get($"{_keyPrefix}-{key}"); } public void Set(string key, T value) { PersistentData.Set($"{_keyPrefix}-{key}", value); } } }