79 lines
1.9 KiB
C#

using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "SettingGroup", menuName = "Создание настроек/Создать группу настроек")]
public class SettingsGroup : ScriptableObject
{
public string Name;
public string IconPath;
public List<Setting> Settings;
public SettingsGroupDTO GetDTO()
{
SettingsGroupDTO dto = new SettingsGroupDTO();
dto.Name = this.Name;
dto.IconPath = this.IconPath;
// Конвертируем список Setting в DTO
dto.Settings = new List<SettingDTO>();
if (this.Settings != null)
{
foreach (var setting in this.Settings)
{
if (setting != null)
{
dto.Settings.Add(setting.GetDTO());
}
}
}
return dto;
}
public static SettingsGroup FromDTO(SettingsGroupDTO dto)
{
SettingsGroup group = CreateInstance<SettingsGroup>();
dto.ApplyTo(group);
return group;
}
}
[System.Serializable]
public class SettingsGroupDTO
{
public string Name;
public string IconPath;
public List<SettingDTO> Settings;
// Метод для восстановления из DTO в SettingsGroup
public void ApplyTo(SettingsGroup group)
{
group.Name = this.Name;
group.Settings = new List<Setting>();
if (this.Settings != null)
{
foreach (var settingDTO in this.Settings)
{
Setting setting = Setting.FromDTO(settingDTO);
group.Settings.Add(setting);
}
}
}
public string GetStringForHash()
{
string result = Name+IconPath;
if (Settings != null)
{
foreach (var setting in Settings)
{
result += setting.GetStringForHash();
}
}
return result;
}
}