79 lines
1.9 KiB
C#
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;
|
|
}
|
|
} |