139 lines
4.5 KiB
C#
139 lines
4.5 KiB
C#
using Newtonsoft.Json.Linq;
|
|
using Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Helpers;
|
|
using Pf2eDataScrapper.Processors;
|
|
|
|
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder;
|
|
|
|
/// <summary>
|
|
/// Класс для работы с JSON-объектом при обработки данных с Архивов Нефиса.
|
|
/// </summary>
|
|
/// <param name="input">JSON-объект, который будет использоваться для доступа к данным.</param>
|
|
internal class AonprdProcessorInput(JObject input) : ProcessorInput(input)
|
|
{
|
|
/// <inheritdoc/>
|
|
public override T Enum<T>(string value)
|
|
{
|
|
try
|
|
{
|
|
return AonprdEnumResolver.Resolve<T>(value);
|
|
}
|
|
catch
|
|
{
|
|
return base.Enum<T>(value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Обработать строку, содержащую информацию о количестве действий.
|
|
/// </summary>
|
|
/// <param name="input">Входная строка с данными.</param>
|
|
/// <returns>Структура, хранящая информацию о количетсве действий.</returns>
|
|
public ActionStruct ResolveActionString(string input)
|
|
{
|
|
ActionStruct result = new();
|
|
|
|
switch (input)
|
|
{
|
|
case "Single Action":
|
|
result.Actions = result.MaxActions = 1;
|
|
break;
|
|
|
|
case "Two Actions":
|
|
result.Actions = result.MaxActions = 2;
|
|
break;
|
|
|
|
case "Three Actions":
|
|
result.Actions = result.MaxActions = 3;
|
|
break;
|
|
|
|
case "Reaction":
|
|
result.IsReaction = true;
|
|
break;
|
|
|
|
case "Free Action":
|
|
result.IsFreeAction = false;
|
|
break;
|
|
|
|
case "Single Action to Three Actions":
|
|
case "Single Action or more Actions":
|
|
result.Actions = 1;
|
|
result.MaxActions = 3;
|
|
break;
|
|
|
|
case "Single Action or Two Actions":
|
|
case "Single Action to Two Actions":
|
|
result.Actions = 1;
|
|
result.MaxActions = 2;
|
|
break;
|
|
|
|
case "Two Actions or Three Actions":
|
|
result.Actions = 2;
|
|
result.MaxActions = 3;
|
|
break;
|
|
|
|
case "Two Actions to 2 rounds":
|
|
result.Actions = 2;
|
|
result.MaxActions = 3;
|
|
result.TwoRounds = true;
|
|
break;
|
|
|
|
case "Reaction or One Action":
|
|
result.IsReaction = true;
|
|
result.Actions = result.MaxActions = 1;
|
|
break;
|
|
|
|
case "Reaction or Two Actions":
|
|
result.IsReaction = true;
|
|
result.Actions = result.MaxActions = 2;
|
|
break;
|
|
|
|
case "Free Action or One Action":
|
|
result.IsFreeAction = false;
|
|
result.Actions = result.MaxActions = 1;
|
|
break;
|
|
|
|
default:
|
|
result.IsPassive = true;
|
|
break;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Класс структуры, хранящей информацию о количетсве действий.
|
|
/// </summary>
|
|
public class ActionStruct
|
|
{
|
|
/// <summary>
|
|
/// Количество действий
|
|
/// </summary>
|
|
public int Actions { get; set; }
|
|
|
|
/// <summary>
|
|
/// Максимальное количество действий
|
|
/// </summary>
|
|
public int MaxActions { get; set; }
|
|
|
|
/// <summary>
|
|
/// Флаг, указывающий, что действия не требуются.
|
|
/// </summary>
|
|
public bool IsPassive { get; set; }
|
|
|
|
/// <summary>
|
|
/// Флаг, указывающий, что действие может быть использовано как реакция.
|
|
/// </summary>
|
|
public bool IsReaction { get; set; }
|
|
|
|
/// <summary>
|
|
/// Флаг, указывающий, что можно использовать свободное действие.
|
|
/// </summary>
|
|
public bool IsFreeAction { get; set; }
|
|
|
|
/// <summary>
|
|
/// Флаг, указывающий, что действие может быть продлено до 2 раундов.
|
|
/// </summary>
|
|
public bool TwoRounds { get; set; }
|
|
}
|
|
}
|