Документирование и небольшой рефакторинг модели.

This commit is contained in:
2025-05-11 00:31:15 +04:00
parent 1a977ee988
commit 3c65274b45
64 changed files with 1960 additions and 554 deletions
+20 -5
View File
@@ -1,23 +1,38 @@
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Действие.
/// </summary>
[EntityOfType(EntityType.Action)]
public class Action : IEntity
{
[System.ComponentModel.DataAnnotations.Key]
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Количество действий.
/// </summary>
[Column(Order = 2)]
[Comment("Количество действий")]
public ActionEnum Actions { get; set; } = ActionEnum.Unknown;
/// <summary>
/// Дополнительная информация.
/// </summary>
[Column(Order = 3)]
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
[Comment("Дополнительная информация")]
public string? Extra { get; set; }
public Entity Entity { get; set; } = null!;
}
+40 -4
View File
@@ -1,37 +1,73 @@
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
using Pf2eModel.Model.Structure.AncestryRelation;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Родословная.
/// </summary>
[EntityOfType(EntityType.Ancestry)]
public class Ancestry : IEntity
{
[System.ComponentModel.DataAnnotations.Key]
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Размеры родословной.
/// </summary>
[Column(Order = 2)]
public Size[] Size { get; set; } = [];
[Comment("Размеры родословной")]
public SizeEnum[] Size { get; set; } = [];
/// <summary>
/// Количество очков здоровья.
/// </summary>
[Column(Order = 3)]
[Comment("Количество очков здоровья")]
public int Hp { get; set; }
/// <summary>
/// Скорость передвижения.
/// </summary>
[Column(Order = 4)]
[Comment("Скорость передвижения")]
public int Speed { get; set; }
/// <summary>
/// Тип зрения.
/// </summary>
[Column(Order = 5)]
public AncestryVision Vision { get; set; } = AncestryVision.Normal;
[Comment("Тип зрения")]
public VisionEnum VisionEnum { get; set; } = VisionEnum.Normal;
/// <summary>
/// Коллекция повышениий аттрибутов.
/// </summary>
public ICollection<AncestryBoost> AncestryBoosts { get; set; } = [];
/// <summary>
/// Коллекция сущностей родословной.
/// </summary>
public ICollection<AncestryItem> AncestryItems { get; set; } = [];
/// <summary>
/// Коллекция языков родословной.
/// </summary>
public ICollection<AncestryLanguage> AncestryLanguages { get; set; } = [];
/// <summary>
/// Коллекция наследий.
/// </summary>
public ICollection<Heritage> Heritages { get; set; } = [];
}
+26 -1
View File
@@ -1,30 +1,55 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Архетип.
/// </summary>
[EntityOfType(EntityType.Archetype)]
public class Archetype : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Уровень.
/// </summary>
[Column(Order = 2)]
[Comment("Уровень")]
public int Level { get; set; }
/// <summary>
/// Идентификатор способности, которая является посвящением в архетип.
/// </summary>
[Column(Order = 3)]
[Comment("ID посвящения")]
public int? DedicationFeatId { get; set; } = null;
/// <summary>
/// Дополнительная информация об архетипе.
/// </summary>
[Column(Order = 4)]
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
[Comment("Дополнительная информация")]
public string? Extra { get; set; }
/// <summary>
/// Посвящение в архетип.
/// </summary>
public Feat DedicationFeat { get; set; } = null!;
/// <summary>
/// Способности архетипа.
/// </summary>
public ICollection<Feat> Feats { get; set; } = [];
}
+16
View File
@@ -1,24 +1,40 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
using Pf2eModel.Model.Structure.BackgroundRelation;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Предыстория.
/// </summary>
[EntityOfType(EntityType.Background)]
public class Background : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Аттрибуты предыстории.
/// </summary>
public ICollection<BackgroundBoost> BackgroundBoosts { get; set; } = [];
/// <summary>
/// Способности предыстории.
/// </summary>
public ICollection<BackgroundItem> BackgroundItems { get; set; } = [];
/// <summary>
/// Навыки предыстории.
/// </summary>
public ICollection<BackgroundTraining> BackgroundSkills { get; set; } = [];
}
+39 -6
View File
@@ -1,40 +1,73 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
using Pf2eModel.Model.Structure.ClassRelation;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Класс.
/// </summary>
[EntityOfType(EntityType.Class)]
public class Class : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
[Column(Order = 3)]
/// <summary>
/// Количество очков здоровья.
/// </summary>
[Column(Order = 2)]
[Comment("Количество очков здоровья")]
public int Hp { get; set; }
[Column(Order = 4)]
public int Perception { get; set; }
[Column(Order = 5)]
/// <summary>
/// Флаг, указывающий на то, что класс является заклинательным.
/// </summary>
[Column(Order = 3)]
[Comment("Заклинатель?")]
public bool Spellcasting { get; set; }
/// <summary>
/// Традиция заклинаний класса.
/// </summary>
[Column(Order = 6)]
public SpellTradition Tradition { get; set; }
[Comment("Традиция заклинаний")]
public SpellTradition? Tradition { get; set; } = null;
/// <summary>
/// Количество дополнительных навыков.
/// </summary>
[Column(Order = 7)]
[Comment("Дополнительные навыки")]
public int AdditionalTrainedSkills { get; set; }
/// <summary>
/// Аттрибуты класса.
/// </summary>
public virtual ICollection<ClassKeyAbility> ClassKeyAbilities { get; set; } = [];
/// <summary>
/// Прогрессия класса.
/// </summary>
public virtual ICollection<ClassProgression> ClassProgressions { get; set; } = [];
/// <summary>
/// Навыки класса.
/// </summary>
public virtual ICollection<ClassTraining> ClassTrainings { get; set; } = [];
/// <summary>
/// Группы подклассов.
/// </summary>
public virtual ICollection<SubclassGroup> SubclassGroups { get; set; } = [];
}
+15 -1
View File
@@ -1,24 +1,38 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Состояние.
/// </summary>
[EntityOfType(EntityType.Condition)]
public class Condition : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Группа состояния.
/// </summary>
[Column(Order = 2)]
[Comment("Группа состояния")]
public ConditionGroup? Group { get; set; }
/// <summary>
/// Дополнительная информация.
/// </summary>
[Column(Order = 3)]
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
[Comment("Дополнительная информация")]
public string? Extra { get; set; }
}
+38
View File
@@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Common;
using Pf2eModel.Model.Enum;
@@ -7,35 +8,72 @@ using Pf2eModel.Model.Structure.DeityRelation;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Божество.
/// </summary>
[EntityOfType(EntityType.Deity)]
public class Deity : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Тип божества.
/// </summary>
[Column(Order = 2)]
[Comment("Тип божества")]
public DeityCategory Category { get; set; }
/// <summary>
/// Тип божественный силы.
/// </summary>
[Column(Order = 3)]
[Comment("Тип божественной силы")]
public DeityFonts Fonts { get; set; }
/// <summary>
/// Тип освящения.
/// </summary>
[Column(Order = 4)]
[Comment("Тип освящения")]
public DeitySanctification Sanctification { get; set; }
/// <summary>
/// Обязательное освящение.
/// </summary>
[Column(Order = 5)]
[Comment("Обязательное освящение")]
public bool SanctificationMust { get; set; }
/// <summary>
/// Аттрибуты божества.
/// </summary>
public ICollection<DeityAttribute> DeityAttributes { get; set; } = new List<DeityAttribute>();
/// <summary>
/// Домены божества.
/// </summary>
public ICollection<DeityDomain> DeityDomains { get; set; } = new List<DeityDomain>();
/// <summary>
/// Заклинания божества.
/// </summary>
public ICollection<DeitySpell> DeitySpells { get; set; } = new List<DeitySpell>();
/// <summary>
/// Оружия божества.
/// </summary>
public ICollection<DeityWeapon> DeityWeapons { get; set; } = new List<DeityWeapon>();
/// <summary>
/// Навыки божества.
/// </summary>
public ICollection<Training> Skills { get; set; } = new List<Training>();
}
+27 -2
View File
@@ -1,28 +1,44 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
using Pf2eModel.Model.Structure.FeatRelation;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Способность.
/// </summary>
[EntityOfType(EntityType.Feat)]
public class Feat : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Категория способности.
/// </summary>
[Column(Order = 3)]
public ActionCategory Category { get; set; }
[Comment("Категория способности")]
public FeatCategory Category { get; set; }
/// <summary>
/// Уровень способности.
/// </summary>
[Column(Order = 4)]
[Comment("Уровень способности")]
public int Level { get; set; }
[Column(Order = 5)]
[Comment("Количество действий")]
public int? Actions { get; set; } = null;
[Column(Order = 6)]
@@ -37,11 +53,20 @@ public class Feat : IEntity
[Column(Order = 9)]
public bool IsPassive { get; set; } = false;
/// <summary>
/// Дополнительная информация.
/// </summary>
[Column(Order = 10)]
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
[Comment("Дополнительная информация")]
public string? Extra { get; set; }
/// <summary>
/// Архетипы, которые могут использовать эту способность.
/// </summary>
public ICollection<Archetype> Archetypes { get; set; } = [];
/// <summary>
/// Требования к получению способности.
/// </summary>
public ICollection<FeatPrerequisite> FeatPrerequisites { get; set; } = [];
}
+15 -1
View File
@@ -1,22 +1,36 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Наследие.
/// </summary>
[EntityOfType(EntityType.Heritage)]
public class Heritage : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Идентификатор родословной.
/// </summary>
[Column(Order = 2)]
[Comment("Идентификатор родословной")]
public int? AncestryId { get; set; }
public virtual Ancestry? Ancestry { get; set; }
/// <summary>
/// Родословная.
/// </summary>
public Ancestry? Ancestry { get; set; }
}
+8 -1
View File
@@ -1,17 +1,24 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Язык.
/// </summary>
[EntityOfType(EntityType.Language)]
public class Language : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
}
+69 -2
View File
@@ -8,60 +8,127 @@ using Pf2eModel.Model.Structure.RitualRelation;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Ритуал.
/// </summary>
[EntityOfType(EntityType.Ritual)]
public class Ritual : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Уровень ритуала.
/// </summary>
[Column(Order = 2)]
[Comment("Уровень ритуала")]
public int Level { get; set; }
/// <summary>
/// Продолжительность ритуала в секундах.
/// </summary>
[Column(Order = 3)]
[Comment("Продолжительность ритуала в секундах")]
public int CastTime { get; set; }
/// <summary>
/// Время действия эффекта ритуала в секундах.
/// </summary>
[Column(Order = 4)]
[Comment("Время действия эффекта ритуала в секундах")]
public int Duration { get; set; }
/// <summary>
/// Элементы ритуала.
/// </summary>
[Column(Order = 5)]
[Comment("Элементы ритуала")]
public ElementEnum[] Elements { get; set; } = [];
/// <summary>
/// Дальнность ритуала в футах.
/// </summary>
[Column(Order = 6)]
[Comment("Дальнность ритуала")]
public int Range { get; set; }
/// <summary>
/// Ранг основной проверки.
/// </summary>
[Column(Order = 7)]
[Comment("Ранг основной проверки")]
public TrainingRank PrimaryCheckRank { get; set; } = TrainingRank.Trained;
/// <summary>
/// Дополнительная информация об основной проверки.
/// </summary>
[Column(Order = 8)]
[Comment("Дополнительная информация об основной проверки")]
public LocaleString? PrimaryCheckSuffix { get; set; } = null;
/// <summary>
/// Количество дополнительных заклинателей, необходимых для ритуала.
/// </summary>
[Column(Order = 9)]
[Comment("Количество дополнительных заклинателей")]
public int SecondaryCasters { get; set; } = 0;
/// <summary>
/// Максимальное количество дополнительных заклинателей, необходимых для ритуала.
/// </summary>
[Column(Order = 10)]
[Comment("Максимальное количество дополнительных заклинателей")]
public int SecondaryCastersMax { get; set; } = 0;
/// <summary>
/// Дополнительная информация о дополнительных заклинателях.
/// </summary>
[Column(Order = 11)]
[Comment("Дополнительная информация о дополнительных заклинателях")]
public LocaleString? SecondaryCastersSuffix { get; set; } = null;
/// <summary>
/// Строка, описывающая дальность ритуала.
/// </summary>
[Column(Order = 12)]
[Comment("Дальность ритуала")]
public LocaleString? RangeString { get; set; } = null;
/// <summary>
/// Строка, описывающая цель ритуала.
/// </summary>
[Column(Order = 13)]
[Comment("Цель ритуала")]
public LocaleString? Target { get; set; } = null;
/// <summary>
/// Строка, описывающая стоимость ритуала.
/// </summary>
[Column(Order = 14)]
[Comment("Стоимость ритуала")]
public LocaleString? Cost { get; set; } = null;
/// <summary>
/// Строка, описывающая требования к ритуалу.
/// </summary>
[Column(Order = 15)]
[Comment("Требования к ритуалу")]
public LocaleString? Requirement { get; set; } = null;
public virtual RitualArea? Area { get; set; } = null;
/// <summary>
/// Коллекция областей ритуала.
/// </summary>
public RitualArea? Area { get; set; } = null;
public virtual ICollection<RitualCheck> Checks { get; set; } = [];
/// <summary>
/// Коллекция проверок ритуала.
/// </summary>
public ICollection<RitualCheck> Checks { get; set; } = [];
}
+24
View File
@@ -1,29 +1,53 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Правило.
/// </summary>
[EntityOfType(EntityType.Rule)]
public class Rule : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Порядок отображения.
/// </summary>
[Column(Order = 2)]
[Comment("Порядок отображения")]
public int Order { get; set; }
/// <summary>
/// Идентификатор родительского правила.
/// </summary>
[Column(Order = 3)]
[Comment("Родительского правило")]
public int? ParentId { get; set; } = null;
/// <summary>
/// Родительское правило.
/// </summary>
public Rule? Parent { get; set; } = null;
/// <summary>
/// Дочерние правила.
/// </summary>
public ICollection<Rule> Children { get; set; } = [];
/// <summary>
/// Хлебные крошки для отображения в интерфейсе.
/// </summary>
public string[] Breadcrumbs { get; set; } = [];
}
+58 -2
View File
@@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Common.I18n;
using Pf2eModel.Model.Enum;
@@ -7,48 +8,97 @@ using Pf2eModel.Model.Structure.SpellRelation;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Заклинание.
/// </summary>
[EntityOfType(EntityType.Spell)]
public class Spell : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Уровень заклинания.
/// </summary>
[Column(Order = 2)]
public int Level { get; set; }
/// <summary>
/// Является ли заклинание фокусом.
/// </summary>
[Column(Order = 3)]
[Comment("Фокус?")]
public bool IsFocus { get; set; }
/// <summary>
/// Количество действий, необходимых для применения заклинания.
/// </summary>
[Column(Order = 4)]
[Comment("Количество действий")]
public ActionEnum Actions { get; set; } = ActionEnum.Other;
/// <summary>
/// Время длительности заклинания в секундах.
/// </summary>
[Column(Order = 5)]
[MaxLength(255)]
[Comment("Время длительности заклинания")]
public int? Duration { get; set; } = null;
/// <summary>
/// Дальность заклинания в футах.
/// </summary>
[Column(Order = 6)]
[Comment("Дальность заклинания")]
public int Range { get; set; }
/// <summary>
/// Традиции заклинания.
/// </summary>
[Column(Order = 7)]
[Comment("Традиции заклинания")]
public SpellTradition[] Traditions { get; set; } = [];
/// <summary>
/// Элементы заклинания.
/// </summary>
[Column(Order = 8)]
[Comment("Элементы заклинания")]
public ElementEnum[] Elements { get; set; } = [];
/// <summary>
/// Триггер заклинания.
/// </summary>
[Column(Order = 9)]
[Comment("Триггер заклинания")]
public LocaleString? Trigger { get; set; } = null;
/// <summary>
/// Цель заклинания.
/// </summary>
[Column(Order = 10)]
[Comment("Цель заклинания")]
public LocaleString? Target { get; set; } = null;
/// <summary>
/// Стоимость заклинания.
/// </summary>
[Column(Order = 11)]
[Comment("Стоимость заклинания")]
public LocaleString? Cost { get; set; } = null;
/// <summary>
/// Требования к заклинанию.
/// </summary>
[Column(Order = 12)]
[Comment("Требования к заклинанию")]
public LocaleString? Requirement { get; set; } = null;
/*
@@ -78,7 +128,13 @@ public class Spell : IEntity
public bool CanHeightening { get; set; }
*/
public virtual ICollection<SpellArea> SpellAreas { get; set; } = [];
/// <summary>
/// Коллекция области заклинания.
/// </summary>
public ICollection<SpellArea> SpellAreas { get; set; } = [];
public virtual ICollection<SpellDefense> SpellDefenses { get; set; } = new List<SpellDefense>();
/// <summary>
/// Коллекция защиты от заклинания.
/// </summary>
public ICollection<SpellDefense> SpellDefenses { get; set; } = new List<SpellDefense>();
}
+24 -3
View File
@@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Common.I18n;
using Pf2eModel.Model.Enum;
@@ -7,28 +8,48 @@ using Pf2eModel.Model.Structure.ClassRelation;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Подкласс.
/// </summary>
[EntityOfType(EntityType.Subclass)]
public class Subclass : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Идетификатор группы подклассов.
/// </summary>
[Column(Order = 2)]
[Comment("Группа подклассов")]
public int GroupId { get; set; }
/// <summary>
/// Группа подклассов.
/// </summary>
public SubclassGroup Group { get; set; } = null!;
/// <summary>
/// Дополнительная информация.
/// </summary>
[Column(Order = 3)]
[Comment("Дополнительная информация")]
public LocaleString Additional { get; set; } = [];
/// <summary>
/// Дополнительная информация в формате JSON.
/// </summary>
[Column(Order = 4)]
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
public string Extra { get; set; } = "{}";
public virtual ICollection<Entity> Entities { get; set; } = [];
public ICollection<Entity> Entities { get; set; } = [];
public virtual ICollection<SubclassTrainings> Trainings { get; set; } = [];
public ICollection<SubclassTrainings> Trainings { get; set; } = [];
}
@@ -1,23 +1,41 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Группа подклассов.
/// </summary>
[EntityOfType(EntityType.SubclassGroup)]
public class SubclassGroup : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Идентификатор класса.
/// </summary>
[Column(Order = 2)]
[Comment("Идентификатор класса")]
public int? ClassId { get; set; } = null;
/// <summary>
/// Класс, к которому относится группа подклассов.
/// </summary>
public Class? Class { get; set; } = null!;
/// <summary>
/// Коллекция подклассов, относящихся к этой группе.
/// </summary>
public ICollection<Subclass> Subclasses { get; set; } = [];
}
+15 -2
View File
@@ -1,23 +1,36 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Structure;
/// <summary>
/// Признак.
/// </summary>
[EntityOfType(EntityType.Trait)]
public class Trait : IEntity
{
/// <inheritdoc/>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Тип признака.
/// </summary>
[Column(Order = 2)]
[Comment("Тип признака")]
public TraitType Type { get; set; }
[Newtonsoft.Json.JsonIgnore]
public virtual ICollection<Entity> Entities { get; set; } = [];
/// <summary>
/// Сущности, которые имеют данный признак.
/// </summary>
public ICollection<Entity> Entities { get; set; } = [];
}