using System; using System.Collections.Generic; using System.IO; using CustomizePlus.Armatures.Data; using CustomizePlus.Core.Data; using CustomizePlus.Core.Extensions; using CustomizePlus.Core.Services; using CustomizePlus.Templates; using CustomizePlus.Templates.Data; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using OtterGui.Classes; using Penumbra.GameData.Actors; namespace CustomizePlus.Profiles.Data; /// /// Encapsulates the user-controlled aspects of a character profile, ie all of /// the information that gets saved to disk by the plugin. /// public sealed class Profile : ISavable { private static int _nextGlobalId; private readonly int _localId; public List Armatures = new(); public LowerString CharacterName { get; set; } = LowerString.Empty; public LowerString Name { get; set; } = LowerString.Empty; /// /// Whether to search only through local player owned characters or all characters when searching for game object by name /// public bool LimitLookupToOwnedObjects { get; set; } = false; public int Version { get; set; } = Constants.ConfigurationVersion; public bool Enabled { get; set; } public DateTimeOffset CreationDate { get; set; } = DateTime.UtcNow; public DateTimeOffset ModifiedDate { get; set; } = DateTime.UtcNow; public Guid UniqueId { get; set; } = Guid.NewGuid(); public List