Added ability to apply profile to several characters

This commit is contained in:
RisaDev
2024-10-19 02:55:38 +03:00
parent 3ff5806322
commit 7085cf616c
14 changed files with 324 additions and 164 deletions

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using CustomizePlus.Armatures.Data;
using CustomizePlus.Core.Data;
using CustomizePlus.Core.Extensions;
@@ -32,7 +33,8 @@ public sealed class Profile : ISavable
/* [Obsolete("To be removed in the future versions")]
public LowerString CharacterName { get; set; } = LowerString.Empty;*/
public ActorIdentifier Character { get; set; } = ActorIdentifier.Invalid;
//public ActorIdentifier Character { get; set; } = ActorIdentifier.Invalid;
public List<ActorIdentifier> Characters { get; set; } = new();
public LowerString Name { get; set; } = LowerString.Empty;
@@ -78,7 +80,7 @@ public sealed class Profile : ISavable
/// <param name="original"></param>
public Profile(Profile original) : this()
{
Character = original.Character;
Characters = original.Characters.ToList();
foreach (var template in original.Templates)
{
@@ -88,7 +90,7 @@ public sealed class Profile : ISavable
public override string ToString()
{
return $"Profile '{Name.Text.Incognify()}' on {Character.Incognito(null)} [{UniqueId}]";
return $"Profile '{Name.Text.Incognify()}' on {string.Join(',', Characters.Select(x => x.Incognito(null)))} [{UniqueId}]";
}
#region Serialization
@@ -101,7 +103,7 @@ public sealed class Profile : ISavable
["UniqueId"] = UniqueId,
["CreationDate"] = CreationDate,
["ModifiedDate"] = ModifiedDate,
["Character"] = Character.ToJson(),
["Characters"] = SerializeCharacters(),
["Name"] = Name.Text,
["Enabled"] = Enabled,
["IsWriteProtected"] = IsWriteProtected,
@@ -124,6 +126,16 @@ public sealed class Profile : ISavable
return ret;
}
private JArray SerializeCharacters()
{
var ret = new JArray();
foreach (var character in Characters)
{
ret.Add(character.ToJson());
}
return ret;
}
#endregion
//Loading is in ProfileManager