Hakoyu 9546fb604a 更新:
- 保存宠物时, 若本体存在同名宠物, 则只会保存差异数据
修复:
- 模组宠物和本体宠物同时出现的问题
2023-12-11 01:29:44 +08:00

71 lines
1.6 KiB
C#

using HKW.HKWUtils.Observable;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using VPet_Simulator.Core;
namespace VPet.ModMaker.Models.ModModel;
/// <summary>
/// 动画模型
/// </summary>
public class AnimeModel
{
/// <summary>
/// Id
/// </summary>
public ObservableValue<string> Id { get; } = new();
/// <summary>
/// 动画类型
/// </summary>
public ObservableValue<GraphInfo.AnimatType> AnimeType { get; } = new();
/// <summary>
/// 图像列表
/// </summary>
public ObservableCollection<ImageModel> Images { get; } = new();
public AnimeModel() { }
public AnimeModel(string imagesPath)
: this()
{
foreach (var file in Directory.EnumerateFiles(imagesPath))
{
var info = Path.GetFileNameWithoutExtension(file).Split(Utils.Separator);
Id.Value = info[0];
var duration = info.Last();
var imageModel = new ImageModel(
Utils.LoadImageToMemoryStream(file),
int.Parse(duration)
);
Images.Add(imageModel);
}
}
/// <summary>
/// 复制
/// </summary>
/// <returns></returns>
public AnimeModel Copy()
{
var model = new AnimeModel();
model.Id.Value = Id.Value;
model.AnimeType.Value = AnimeType.Value;
foreach (var image in Images)
model.Images.Add(image.Copy());
return model;
}
/// <summary>
/// 关闭所有图像流
/// </summary>
public void Close()
{
foreach (var image in Images)
image.Close();
}
}