mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-22 23:35:30 +00:00
59 lines
2.3 KiB
C#
59 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using PckStudio.Core.Interfaces;
|
|
using PckStudio.Core.Skin;
|
|
|
|
namespace PckStudio.Core.DLC
|
|
{
|
|
public enum DLCSkinPackageOrder
|
|
{
|
|
ById,
|
|
ByName,
|
|
}
|
|
|
|
public sealed class DLCSkinPackage : DLCPackage
|
|
{
|
|
public DLCSkinPackageOrder SkinPackageOrder { get; set; } = DLCSkinPackageOrder.ById;
|
|
|
|
private readonly IDictionary<int, Image> _capes;
|
|
private readonly IDictionary<SkinIdentifier, Skin.Skin> _skins;
|
|
|
|
internal DLCSkinPackage(string name, int identifier, IEnumerable<Skin.Skin> skins, IDictionary<int, Image> capes, IDLCPackage parentPackage)
|
|
: base(name, identifier, parentPackage)
|
|
{
|
|
_skins = skins.ToDictionary(skin => skin.Identifier);
|
|
_capes = capes;
|
|
}
|
|
|
|
internal DLCSkinPackage(string name, int identifier, IDLCPackage parentPackage = null)
|
|
: this(name, identifier, Enumerable.Empty<Skin.Skin>(), new Dictionary<int, Image>(), parentPackage)
|
|
{
|
|
}
|
|
|
|
internal static IDLCPackage CreateEmpty(string name, int identifier, IDLCPackage parentPackage = null) => new DLCSkinPackage(name, identifier, parentPackage);
|
|
internal static IDLCPackage CreateEmpty(IDLCPackage parentPackage) => CreateEmpty(parentPackage.Name, parentPackage.Identifier, parentPackage);
|
|
|
|
public bool TryGetSkin(SkinIdentifier skinIdentifier, out Skin.Skin skin) => _skins.TryGetValue(skinIdentifier, out skin);
|
|
public bool TryGetCape(int capeId, out Image cape) => _capes.TryGetValue(capeId, out cape);
|
|
|
|
public bool ContainsSkin(SkinIdentifier skinIdentifier) => _skins.ContainsKey(skinIdentifier);
|
|
|
|
public void AddSkin(Skin.Skin skin)
|
|
{
|
|
_skins.Add(skin.Identifier, skin);
|
|
}
|
|
|
|
public bool RemoveSkin(SkinIdentifier skinIdentifier) => _skins.Remove(skinIdentifier);
|
|
|
|
public Skin.Skin GetSkin(SkinIdentifier skinIdentifier) => _skins[skinIdentifier];
|
|
|
|
public IReadOnlyCollection<Skin.Skin> GetSkins() => _skins.Values.Cast<Skin.Skin>().ToArray();
|
|
|
|
public override DLCPackageType GetDLCPackageType() => DLCPackageType.SkinPack;
|
|
|
|
internal KeyValuePair<int, Image>[] GetCapes() => _capes.ToArray();
|
|
}
|
|
} |