65 lines
1.9 KiB
C#
65 lines
1.9 KiB
C#
using Modules.Library.Domain.EntitiesV0.MediaContent.Items.Anime.ShadowEntities;
|
|
|
|
namespace Modules.Library.Domain.EntitiesV0.MediaContent.Items.Anime;
|
|
|
|
public class AnimeEpisode : AnimeItemSingle
|
|
{
|
|
private readonly AnimeTitle _title;
|
|
private readonly AnimeSeason? _season;
|
|
private readonly AnimeEpisodeShadow _shadow;
|
|
|
|
public AnimeEpisodeType Type => _shadow.type;
|
|
public int? Number => _shadow.number;
|
|
|
|
internal AnimeEpisode(AnimeTitle title, AnimeSeason? season, AnimeEpisodeShadow shadow) : base(shadow)
|
|
{
|
|
_title = title;
|
|
_season = season;
|
|
_shadow = shadow;
|
|
}
|
|
|
|
public void SetNumber(int? number) => _shadow.number = number;
|
|
|
|
public override void SetOrder(ushort order)
|
|
{
|
|
if (_season == null) SetItemOrder(_title._shadow.items, Order, order);
|
|
else _season.SetEpisodeOrder(Order, order);
|
|
}
|
|
|
|
public override void SetVariant(ushort variant)
|
|
{
|
|
if (_season == null)
|
|
{
|
|
SetItemVariant(_title._shadow.items.OfType<AnimeEpisodeShadow>()
|
|
.Where(q => q.order == Order), Variant, variant);
|
|
}
|
|
else _season.SetEpisodeVariant(Order, Variant, variant);
|
|
}
|
|
|
|
public override void SetCompleted()
|
|
{
|
|
if (_season == null) _title.SetEpisodeCompleted(Order, Variant, true);
|
|
else _season.SetEpisodeCompleted(Order, Variant, true);
|
|
}
|
|
|
|
public override void SetNotCompleted()
|
|
{
|
|
if (_season == null) _title.SetEpisodeCompleted(Order, Variant, false);
|
|
else _season.SetEpisodeCompleted(Order, Variant, false);
|
|
}
|
|
|
|
public override void SetExpirationTime(TimeSpan value)
|
|
{
|
|
if (_season == null) _title.SetEpisodeExpirationTime(Order, Variant, value);
|
|
else _season.SetEpisodeExpirationTime(Order, Variant, value);
|
|
}
|
|
|
|
internal void SetDeleted() => _shadow.deleted = true;
|
|
}
|
|
|
|
public enum AnimeEpisodeType
|
|
{
|
|
Regilar,
|
|
FullLength,
|
|
Ova,
|
|
} |