106 lines
3.9 KiB
C#
106 lines
3.9 KiB
C#
using Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
|
using Pf2eModel.Model.Base;
|
|
using Pf2eModel.Model.Base.Source;
|
|
using Pf2eModel.Model.Common.I18n;
|
|
|
|
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder;
|
|
|
|
/// <summary>
|
|
/// Обработчик сущностей, помеченных как устаревшие.
|
|
/// </summary>
|
|
internal class LegacyEntityHandler
|
|
{
|
|
/// <summary>
|
|
/// Идентификатор устаревшей сущности.
|
|
/// </summary>
|
|
public string LegacyId { get; private set; }
|
|
|
|
/// <summary>
|
|
/// Название устаревшей сущности.
|
|
/// </summary>
|
|
public string LegacyName { get; private set; } = "";
|
|
|
|
/// <summary>
|
|
/// Коллекция источников устревшей сущности.
|
|
/// </summary>
|
|
public List<EntitySource> LegacySources { get; private set; } = [];
|
|
|
|
/// <summary>
|
|
/// Флаг, указывающий, что сведения об устаревшей сущности готовы к добавлению в обновлённые.
|
|
/// </summary>
|
|
public bool LegacyPrepared { get; private set; } = false;
|
|
|
|
/// <summary>
|
|
/// Список обновлённых сущностей, что отметели устаревшую сущность как предшественника.
|
|
/// </summary>
|
|
public List<Entity> RemasterEntities { get; } = [];
|
|
|
|
/// <summary>
|
|
/// Конструктор класса <see cref="LegacyEntityHandler"/>, если сущность сама отмечена как устаревшая.
|
|
/// </summary>
|
|
/// <param name="processor">Обработчик устаревшей сущности.</param>
|
|
public LegacyEntityHandler(AbstractEntityProcessor processor)
|
|
{
|
|
LegacyId = processor.Input.GetRequired<string>("id");
|
|
Prepare(processor);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Конструктор класса <see cref="LegacyEntityHandler"/>, если обновлённая сущность указывает на ещё недобавленную устаревшую сущность.
|
|
/// </summary>
|
|
/// <param name="legacyId">Идентификатор устаревшей сущности.</param>
|
|
/// <param name="remasterEntity">Обновлённая сущность.</param>
|
|
public LegacyEntityHandler(string legacyId, Entity remasterEntity)
|
|
{
|
|
LegacyId = legacyId;
|
|
LegacyPrepared = false;
|
|
RemasterEntities.Add(remasterEntity);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Подготовить данные об устравшей сущности.
|
|
/// </summary>
|
|
/// <param name="processor">Обработчик устаревшей сущности.</param>
|
|
public void Prepare(AbstractEntityProcessor processor)
|
|
{
|
|
if (LegacyPrepared)
|
|
{
|
|
return;
|
|
}
|
|
|
|
LegacyName = processor.Input.GetRequired<string>("name");
|
|
LegacySources = processor.GetSources();
|
|
LegacyPrepared = true;
|
|
|
|
foreach (Entity remasterEntity in RemasterEntities)
|
|
{
|
|
Apply(remasterEntity);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Применить данные устаревшей сущности к обновлённой.
|
|
/// </summary>
|
|
/// <param name="remasterEntity">Обновлённая сущность.</param>
|
|
public void Apply(Entity remasterEntity)
|
|
{
|
|
if (!remasterEntity.Name.Contains(LegacyName))
|
|
{
|
|
remasterEntity.Name[LocaleType.LegacyEnglish] = LegacyName;
|
|
}
|
|
|
|
foreach (EntitySource legacySource in LegacySources)
|
|
{
|
|
EntitySource entitySource = new()
|
|
{
|
|
Entity = remasterEntity,
|
|
Source = legacySource.Source,
|
|
Suffix = legacySource.Suffix,
|
|
IsRemaster = false,
|
|
};
|
|
|
|
remasterEntity.Sources.Add(entitySource);
|
|
}
|
|
}
|
|
}
|