diff --git a/VPet.ModMaker/Models/ModMaker.cs b/VPet.ModMaker/Models/ModMaker.cs
index f951278..a36830c 100644
--- a/VPet.ModMaker/Models/ModMaker.cs
+++ b/VPet.ModMaker/Models/ModMaker.cs
@@ -47,6 +47,15 @@ public class ModMaker : MainPlugin
{
// 载入ModMaker资源
Maker = new ModMakerWindow();
+ // 设置游戏版本
+ ModMakerInfo.GameVersion = MW.version;
+ // 载入本体宠物
+ foreach (var pet in MW.Pets)
+ {
+ var petModel = new PetModel();
+ petModel.Id.Value = pet.Name;
+ ModMakerInfo.Pets.Add(petModel);
+ }
//Maker.ModMaker = this;
Maker.Show();
Maker.Closed += Maker_Closed;
diff --git a/VPet.ModMaker/Models/ModMakerInfo.cs b/VPet.ModMaker/Models/ModMakerInfo.cs
index 0d24e91..a6f127f 100644
--- a/VPet.ModMaker/Models/ModMakerInfo.cs
+++ b/VPet.ModMaker/Models/ModMakerInfo.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using VPet.ModMaker.Models.ModModel;
namespace VPet.ModMaker.Models;
@@ -25,4 +26,11 @@ public static class ModMakerInfo
/// 信息文件
///
public const string InfoFile = "info.lps";
+
+ ///
+ /// 游戏版本
+ ///
+ public static int GameVersion { get; set; } = 100;
+
+ public static List Pets { get; } = new();
}
diff --git a/VPet.ModMaker/Models/ModModel/FoodModel.cs b/VPet.ModMaker/Models/ModModel/FoodModel.cs
index f2f4e1f..e48c5c7 100644
--- a/VPet.ModMaker/Models/ModModel/FoodModel.cs
+++ b/VPet.ModMaker/Models/ModModel/FoodModel.cs
@@ -87,6 +87,10 @@ public class FoodModel : I18nModel
///
public ObservableValue Image { get; } = new();
+ public ObservableValue ReferencePrice { get; } = new();
+
+ private readonly Food _food = new();
+
public FoodModel()
{
DescriptionId.Value = $"{Id.Value}_{nameof(DescriptionId)}";
@@ -94,6 +98,19 @@ public class FoodModel : I18nModel
{
DescriptionId.Value = $"{n}_{nameof(DescriptionId)}";
};
+ ReferencePrice.AddNotifyReceiver(
+ Strength,
+ StrengthFood,
+ StrengthDrink,
+ Feeling,
+ Health,
+ Likability,
+ Exp
+ );
+ ReferencePrice.NotifyReceived += (ref double v) =>
+ {
+ v = Math.Floor(SetValueToFood(_food).RealPrice);
+ };
}
public FoodModel(FoodModel model)
@@ -155,6 +172,18 @@ public class FoodModel : I18nModel
};
}
+ public Food SetValueToFood(Food food)
+ {
+ food.Strength = Strength.Value;
+ food.StrengthFood = StrengthFood.Value;
+ food.StrengthDrink = StrengthDrink.Value;
+ food.Feeling = Feeling.Value;
+ food.Health = Health.Value;
+ food.Likability = Likability.Value;
+ food.Exp = Exp.Value;
+ return food;
+ }
+
public void Close()
{
Image.Value?.StreamSource?.Close();
diff --git a/VPet.ModMaker/Models/ModModel/ModInfoModel.cs b/VPet.ModMaker/Models/ModModel/ModInfoModel.cs
index 57b68bd..da65a49 100644
--- a/VPet.ModMaker/Models/ModModel/ModInfoModel.cs
+++ b/VPet.ModMaker/Models/ModModel/ModInfoModel.cs
@@ -56,12 +56,12 @@ public class ModInfoModel : I18nModel
///
/// 支持的游戏版本
///
- public ObservableValue GameVersion { get; } = new();
+ public ObservableValue GameVersion { get; } = new(ModMakerInfo.GameVersion);
///
/// 模组版本
///
- public ObservableValue ModVersion { get; } = new();
+ public ObservableValue ModVersion { get; } = new(100);
///
/// 封面
@@ -96,7 +96,7 @@ public class ModInfoModel : I18nModel
///
/// 宠物
///
- public ObservableCollection Pets { get; } = new();
+ public ObservableCollection Pets { get; } = new(ModMakerInfo.Pets);
///
/// 其它I18n数据
@@ -106,8 +106,7 @@ public class ModInfoModel : I18nModel
///
/// 需要保存的I18n数据
///
-
- private readonly Dictionary> _saveI18nDatas = new();
+ public static Dictionary> SaveI18nDatas { get; } = new();
public ModInfoModel()
{
@@ -125,8 +124,8 @@ public class ModInfoModel : I18nModel
Id.Value = loader.Name;
DescriptionId.Value = loader.Intro;
Author.Value = loader.Author;
- GameVersion.Value = loader.GameVer.ToString();
- ModVersion.Value = loader.Ver.ToString();
+ GameVersion.Value = loader.GameVer;
+ ModVersion.Value = loader.Ver;
ItemID = loader.ItemID;
AuthorID = loader.AuthorID;
var imagePath = Path.Combine(loader.ModPath.FullName, "icon.png");
@@ -144,7 +143,6 @@ public class ModInfoModel : I18nModel
{
var petModel = new PetModel(pet);
Pets.Add(petModel);
- // TODO: 动画加载
foreach (var p in pet.path)
{
LoadAnime(petModel, p);
@@ -317,6 +315,7 @@ public class ModInfoModel : I18nModel
/// 路径
public void SaveTo(string path)
{
+ SaveI18nDatas.Clear();
// 保存模型信息
SaveModInfo(path);
// 保存模组数据
@@ -325,6 +324,7 @@ public class ModInfoModel : I18nModel
SaveText(path);
SaveI18nData(path);
SaveImage(path);
+ SaveI18nDatas.Clear();
}
///
@@ -337,9 +337,9 @@ public class ModInfoModel : I18nModel
if (File.Exists(modInfoFile) is false)
File.Create(modInfoFile).Close();
- _saveI18nDatas.Clear();
+ SaveI18nDatas.Clear();
foreach (var cultureName in I18nHelper.Current.CultureNames)
- _saveI18nDatas.Add(cultureName, new());
+ SaveI18nDatas.Add(cultureName, new());
var lps = new LPS()
{
@@ -368,11 +368,6 @@ public class ModInfoModel : I18nModel
File.WriteAllText(modInfoFile, lps.ToString());
}
- #region SavePet
- ///
- /// 保存宠物
- ///
- /// 路径
private void SavePets(string path)
{
var petPath = Path.Combine(path, "pet");
@@ -385,137 +380,13 @@ public class ModInfoModel : I18nModel
Directory.CreateDirectory(petPath);
foreach (var pet in Pets)
{
- foreach (var cultureName in I18nHelper.Current.CultureNames)
- {
- _saveI18nDatas[cultureName].TryAdd(
- pet.Id.Value,
- pet.I18nDatas[cultureName].Name.Value
- );
- _saveI18nDatas[cultureName].TryAdd(
- pet.DescriptionId.Value,
- pet.I18nDatas[cultureName].Description.Value
- );
- }
- var petFile = Path.Combine(petPath, $"{pet.Id.Value}.lps");
- if (File.Exists(petFile) is false)
- File.Create(petFile).Close();
- var lps = new LPS();
- SavePetInfo(lps, pet);
- SaveWorksInfo(lps, pet);
- SaveMoveInfo(lps, pet);
- File.WriteAllText(petFile, lps.ToString());
-
- var petAnimePath = Path.Combine(petPath, pet.Id.Value);
- foreach (var animeType in pet.Animes)
- animeType.Save(petAnimePath);
+ pet.Save(petPath);
}
+ // 如果没有一个完成保存, 则删除文件夹
+ if (Directory.EnumerateFiles(petPath).Any() is false)
+ Directory.Delete(petPath);
}
- ///
- /// 保存移动信息
- ///
- ///
- ///
- void SaveMoveInfo(LPS lps, PetModel pet)
- {
- foreach (var move in pet.Moves)
- {
- lps.Add(LPSConvert.SerializeObjectToLine(move.ToMove(), "move"));
- }
- }
-
- ///
- /// 保存工作信息
- ///
- ///
- ///
- void SaveWorksInfo(LPS lps, PetModel pet)
- {
- foreach (var work in pet.Works)
- {
- lps.Add(LPSConvert.SerializeObjectToLine(work.ToWork(), "work"));
- foreach (var cultureName in I18nHelper.Current.CultureNames)
- {
- _saveI18nDatas[cultureName].TryAdd(
- work.Id.Value,
- work.I18nDatas[cultureName].Name.Value
- );
- }
- }
- }
-
- ///
- /// 保存宠物信息
- ///
- ///
- ///
- private void SavePetInfo(LPS lps, PetModel pet)
- {
- lps.Add(
- new Line("pet", pet.Id.Value)
- {
- new Sub("intor", pet.DescriptionId.Value),
- new Sub("path", pet.Id.Value),
- new Sub("petname", pet.Id.Value)
- }
- );
- lps.Add(
- new Line("touchhead")
- {
- new Sub("px", pet.TouchHeadRect.Value.X.Value),
- new Sub("py", pet.TouchHeadRect.Value.Y.Value),
- new Sub("sw", pet.TouchHeadRect.Value.Width.Value),
- new Sub("sh", pet.TouchHeadRect.Value.Height.Value),
- }
- );
- lps.Add(
- new Line("touchraised")
- {
- new Sub("happy_px", pet.TouchRaisedRect.Value.Happy.Value.X.Value),
- new Sub("happy_py", pet.TouchRaisedRect.Value.Happy.Value.Y.Value),
- new Sub("happy_sw", pet.TouchRaisedRect.Value.Happy.Value.Width.Value),
- new Sub("happy_sh", pet.TouchRaisedRect.Value.Happy.Value.Height.Value),
- //
- new Sub("nomal_px", pet.TouchRaisedRect.Value.Nomal.Value.X.Value),
- new Sub("nomal_py", pet.TouchRaisedRect.Value.Nomal.Value.Y.Value),
- new Sub("nomal_sw", pet.TouchRaisedRect.Value.Nomal.Value.Width.Value),
- new Sub("nomal_sh", pet.TouchRaisedRect.Value.Nomal.Value.Height.Value),
- //
- new Sub("poorcondition_px", pet.TouchRaisedRect.Value.PoorCondition.Value.X.Value),
- new Sub("poorcondition_py", pet.TouchRaisedRect.Value.PoorCondition.Value.Y.Value),
- new Sub(
- "poorcondition_sw",
- pet.TouchRaisedRect.Value.PoorCondition.Value.Width.Value
- ),
- new Sub(
- "poorcondition_sh",
- pet.TouchRaisedRect.Value.PoorCondition.Value.Height.Value
- ),
- //
- new Sub("ill_px", pet.TouchRaisedRect.Value.Ill.Value.X.Value),
- new Sub("ill_py", pet.TouchRaisedRect.Value.Ill.Value.Y.Value),
- new Sub("ill_sw", pet.TouchRaisedRect.Value.Ill.Value.Width.Value),
- new Sub("ill_sh", pet.TouchRaisedRect.Value.Ill.Value.Height.Value),
- }
- );
- lps.Add(
- new Line("raisepoint")
- {
- new Sub("happy_x", pet.RaisePoint.Value.Happy.Value.X.Value),
- new Sub("happy_y", pet.RaisePoint.Value.Happy.Value.Y.Value),
- //
- new Sub("nomal_x", pet.RaisePoint.Value.Nomal.Value.X.Value),
- new Sub("nomal_y", pet.RaisePoint.Value.Nomal.Value.Y.Value),
- //
- new Sub("poorcondition_x", pet.RaisePoint.Value.PoorCondition.Value.X.Value),
- new Sub("poorcondition_y", pet.RaisePoint.Value.PoorCondition.Value.Y.Value),
- //
- new Sub("ill_x", pet.RaisePoint.Value.Ill.Value.X.Value),
- new Sub("ill_y", pet.RaisePoint.Value.Ill.Value.Y.Value),
- }
- );
- }
- #endregion
///
/// 保存食物
///
@@ -539,11 +410,11 @@ public class ModInfoModel : I18nModel
lps.Add(LPSConvert.SerializeObjectToLine(food.ToFood(), "food"));
foreach (var cultureName in I18nHelper.Current.CultureNames)
{
- _saveI18nDatas[cultureName].TryAdd(
+ SaveI18nDatas[cultureName].TryAdd(
food.Id.Value,
food.I18nDatas[cultureName].Name.Value
);
- _saveI18nDatas[cultureName].TryAdd(
+ SaveI18nDatas[cultureName].TryAdd(
food.DescriptionId.Value,
food.I18nDatas[cultureName].Description.Value
);
@@ -588,11 +459,11 @@ public class ModInfoModel : I18nModel
lps.Add(LPSConvert.SerializeObjectToLine(text.ToSelectText(), "SelectText"));
foreach (var cultureName in I18nHelper.Current.CultureNames)
{
- _saveI18nDatas[cultureName].TryAdd(
+ SaveI18nDatas[cultureName].TryAdd(
text.Id.Value,
text.I18nDatas[cultureName].Text.Value
);
- _saveI18nDatas[cultureName].TryAdd(
+ SaveI18nDatas[cultureName].TryAdd(
text.ChooseId.Value,
text.I18nDatas[cultureName].Choose.Value
);
@@ -617,7 +488,7 @@ public class ModInfoModel : I18nModel
lps.Add(LPSConvert.SerializeObjectToLine(text.ToLowText(), "lowfoodtext"));
foreach (var cultureName in I18nHelper.Current.CultureNames)
{
- _saveI18nDatas[cultureName].TryAdd(
+ SaveI18nDatas[cultureName].TryAdd(
text.Id.Value,
text.I18nDatas[cultureName].Text.Value
);
@@ -642,7 +513,7 @@ public class ModInfoModel : I18nModel
lps.Add(LPSConvert.SerializeObjectToLine(text.ToClickText(), "clicktext"));
foreach (var cultureName in I18nHelper.Current.CultureNames)
{
- _saveI18nDatas[cultureName].TryAdd(
+ SaveI18nDatas[cultureName].TryAdd(
text.Id.Value,
text.I18nDatas[cultureName].Text.Value
);
@@ -666,7 +537,7 @@ public class ModInfoModel : I18nModel
var cultureFile = Path.Combine(culturePath, $"{cultureName}.lps");
File.Create(cultureFile).Close();
var lps = new LPS();
- foreach (var data in _saveI18nDatas[cultureName])
+ foreach (var data in SaveI18nDatas[cultureName])
lps.Add(new Line(data.Key, data.Value));
File.WriteAllText(cultureFile, lps.ToString());
}
diff --git a/VPet.ModMaker/Models/ModModel/PetModel.cs b/VPet.ModMaker/Models/ModModel/PetModel.cs
index f9e4c65..8c43a09 100644
--- a/VPet.ModMaker/Models/ModModel/PetModel.cs
+++ b/VPet.ModMaker/Models/ModModel/PetModel.cs
@@ -1,7 +1,10 @@
using HKW.HKWViewModels.SimpleObservable;
+using LinePutScript;
+using LinePutScript.Converter;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -67,6 +70,8 @@ public class PetModel : I18nModel
///
public ObservableCollection Animes { get; } = new();
+ public bool IsSimplePetModel { get; } = false;
+
public PetModel()
{
DescriptionId.Value = $"{Id.Value}_{nameof(DescriptionId)}";
@@ -152,7 +157,165 @@ public class PetModel : I18nModel
Moves.Add(new(move));
}
+ public PetModel(PetLoader loader, bool isSimplePet)
+ : this()
+ {
+ Id.Value = loader.PetName;
+ IsSimplePetModel = isSimplePet;
+ }
+
public void Close() { }
+
+ #region Save
+ ///
+ /// 保存宠物
+ ///
+ /// 路径
+ public void Save(string path)
+ {
+ if (IsSimplePetModel)
+ {
+ SaveSimplePetInfo(path);
+ return;
+ }
+ foreach (var cultureName in I18nHelper.Current.CultureNames)
+ {
+ ModInfoModel.SaveI18nDatas[cultureName].TryAdd(
+ Id.Value,
+ I18nDatas[cultureName].Name.Value
+ );
+ ModInfoModel.SaveI18nDatas[cultureName].TryAdd(
+ DescriptionId.Value,
+ I18nDatas[cultureName].Description.Value
+ );
+ }
+ var petFile = Path.Combine(path, $"{Id.Value}.lps");
+ if (File.Exists(petFile) is false)
+ File.Create(petFile).Close();
+ var lps = new LPS();
+ SavePetInfo(lps);
+ SaveWorksInfo(lps);
+ SaveMoveInfo(lps);
+ File.WriteAllText(petFile, lps.ToString());
+
+ var petAnimePath = Path.Combine(path, Id.Value);
+ foreach (var animeType in Animes)
+ animeType.Save(petAnimePath);
+ }
+
+ private void SaveSimplePetInfo(string path)
+ {
+ if (Works.Count == 0 && Moves.Count == 0 && Animes.Count == 0)
+ return;
+ var petFile = Path.Combine(path, $"{Id.Value}.lps");
+ var lps = new LPS { new Line("pet", Id.Value) { new Sub("path", Id.Value), } };
+ SaveWorksInfo(lps);
+ SaveMoveInfo(lps);
+ File.WriteAllText(petFile, lps.ToString());
+ var petAnimePath = Path.Combine(path, Id.Value);
+ foreach (var animeType in Animes)
+ animeType.Save(petAnimePath);
+ }
+
+ ///
+ /// 保存移动信息
+ ///
+ ///
+ ///
+ void SaveMoveInfo(LPS lps)
+ {
+ foreach (var move in Moves)
+ {
+ lps.Add(LPSConvert.SerializeObjectToLine(move.ToMove(), "move"));
+ }
+ }
+
+ ///
+ /// 保存工作信息
+ ///
+ ///
+ ///
+ void SaveWorksInfo(LPS lps)
+ {
+ foreach (var work in Works)
+ {
+ lps.Add(LPSConvert.SerializeObjectToLine(work.ToWork(), "work"));
+ foreach (var cultureName in I18nHelper.Current.CultureNames)
+ {
+ ModInfoModel.SaveI18nDatas[cultureName].TryAdd(
+ work.Id.Value,
+ work.I18nDatas[cultureName].Name.Value
+ );
+ }
+ }
+ }
+
+ ///
+ /// 保存宠物信息
+ ///
+ ///
+ ///
+ private void SavePetInfo(LPS lps)
+ {
+ lps.Add(
+ new Line("pet", Id.Value)
+ {
+ new Sub("intor", DescriptionId.Value),
+ new Sub("path", Id.Value),
+ new Sub("petname", Id.Value)
+ }
+ );
+ lps.Add(
+ new Line("touchhead")
+ {
+ new Sub("px", TouchHeadRect.Value.X.Value),
+ new Sub("py", TouchHeadRect.Value.Y.Value),
+ new Sub("sw", TouchHeadRect.Value.Width.Value),
+ new Sub("sh", TouchHeadRect.Value.Height.Value),
+ }
+ );
+ lps.Add(
+ new Line("touchraised")
+ {
+ new Sub("happy_px", TouchRaisedRect.Value.Happy.Value.X.Value),
+ new Sub("happy_py", TouchRaisedRect.Value.Happy.Value.Y.Value),
+ new Sub("happy_sw", TouchRaisedRect.Value.Happy.Value.Width.Value),
+ new Sub("happy_sh", TouchRaisedRect.Value.Happy.Value.Height.Value),
+ //
+ new Sub("nomal_px", TouchRaisedRect.Value.Nomal.Value.X.Value),
+ new Sub("nomal_py", TouchRaisedRect.Value.Nomal.Value.Y.Value),
+ new Sub("nomal_sw", TouchRaisedRect.Value.Nomal.Value.Width.Value),
+ new Sub("nomal_sh", TouchRaisedRect.Value.Nomal.Value.Height.Value),
+ //
+ new Sub("poorcondition_px", TouchRaisedRect.Value.PoorCondition.Value.X.Value),
+ new Sub("poorcondition_py", TouchRaisedRect.Value.PoorCondition.Value.Y.Value),
+ new Sub("poorcondition_sw", TouchRaisedRect.Value.PoorCondition.Value.Width.Value),
+ new Sub("poorcondition_sh", TouchRaisedRect.Value.PoorCondition.Value.Height.Value),
+ //
+ new Sub("ill_px", TouchRaisedRect.Value.Ill.Value.X.Value),
+ new Sub("ill_py", TouchRaisedRect.Value.Ill.Value.Y.Value),
+ new Sub("ill_sw", TouchRaisedRect.Value.Ill.Value.Width.Value),
+ new Sub("ill_sh", TouchRaisedRect.Value.Ill.Value.Height.Value),
+ }
+ );
+ lps.Add(
+ new Line("raisepoint")
+ {
+ new Sub("happy_x", RaisePoint.Value.Happy.Value.X.Value),
+ new Sub("happy_y", RaisePoint.Value.Happy.Value.Y.Value),
+ //
+ new Sub("nomal_x", RaisePoint.Value.Nomal.Value.X.Value),
+ new Sub("nomal_y", RaisePoint.Value.Nomal.Value.Y.Value),
+ //
+ new Sub("poorcondition_x", RaisePoint.Value.PoorCondition.Value.X.Value),
+ new Sub("poorcondition_y", RaisePoint.Value.PoorCondition.Value.Y.Value),
+ //
+ new Sub("ill_x", RaisePoint.Value.Ill.Value.X.Value),
+ new Sub("ill_y", RaisePoint.Value.Ill.Value.Y.Value),
+ }
+ );
+ }
+ #endregion
}
public class I18nPetInfoModel
diff --git a/VPet.ModMaker/ViewModels/ModEdit/FoodEdit/FoodEditWindowVM.cs b/VPet.ModMaker/ViewModels/ModEdit/FoodEdit/FoodEditWindowVM.cs
index be8623f..45c766c 100644
--- a/VPet.ModMaker/ViewModels/ModEdit/FoodEdit/FoodEditWindowVM.cs
+++ b/VPet.ModMaker/ViewModels/ModEdit/FoodEdit/FoodEditWindowVM.cs
@@ -20,17 +20,44 @@ public class FoodEditWindowVM
#region Value
public FoodModel OldFood { get; set; }
public ObservableValue Food { get; } = new(new());
+ public ObservableValue AutoSetReferencePrice { get; } = new(false);
#endregion
#region Command
public ObservableCommand AddImageCommand { get; } = new();
public ObservableCommand ChangeImageCommand { get; } = new();
+
+ public ObservableCommand SetReferencePriceCommand { get; } = new();
#endregion
public FoodEditWindowVM()
{
AddImageCommand.ExecuteEvent += AddImage;
ChangeImageCommand.ExecuteEvent += ChangeImage;
+ AutoSetReferencePrice.ValueChanged += AutoSetReferencePrice_ValueChanged;
+ SetReferencePriceCommand.ExecuteEvent += SetReferencePriceToPrice;
+ Food.Value.ReferencePrice.ValueChanged += ReferencePrice_ValueChanged;
+ }
+
+ private void AutoSetReferencePrice_ValueChanged(bool oldValue, bool newValue)
+ {
+ if (newValue)
+ {
+ SetReferencePriceToPrice(Food.Value.ReferencePrice.Value);
+ }
+ }
+
+ private void ReferencePrice_ValueChanged(double oldValue, double newValue)
+ {
+ if (AutoSetReferencePrice.Value)
+ {
+ SetReferencePriceToPrice(newValue);
+ }
+ }
+
+ private void SetReferencePriceToPrice(double value)
+ {
+ Food.Value.Price.Value = value;
}
public void Close()
diff --git a/VPet.ModMaker/ViewModels/ModEdit/MoveEdit/MovePageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/MoveEdit/MovePageVM.cs
index 1cb2d18..8625c52 100644
--- a/VPet.ModMaker/ViewModels/ModEdit/MoveEdit/MovePageVM.cs
+++ b/VPet.ModMaker/ViewModels/ModEdit/MoveEdit/MovePageVM.cs
@@ -91,18 +91,18 @@ public class MovePageVM
}
}
- private void Remove(MoveModel food)
+ private void Remove(MoveModel model)
{
if (MessageBox.Show("确定删除吗".Translate(), "", MessageBoxButton.YesNo) is MessageBoxResult.No)
return;
if (ShowMoves.Value.Count == Moves.Count)
{
- Moves.Remove(food);
+ Moves.Remove(model);
}
else
{
- ShowMoves.Value.Remove(food);
- Moves.Remove(food);
+ ShowMoves.Value.Remove(model);
+ Moves.Remove(model);
}
}
}
diff --git a/VPet.ModMaker/ViewModels/ModEdit/PetEdit/PetPageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/PetEdit/PetPageVM.cs
index fd4f559..cce1231 100644
--- a/VPet.ModMaker/ViewModels/ModEdit/PetEdit/PetPageVM.cs
+++ b/VPet.ModMaker/ViewModels/ModEdit/PetEdit/PetPageVM.cs
@@ -62,6 +62,11 @@ public class PetPageVM
public void Edit(PetModel model)
{
+ if (model.IsSimplePetModel.Value)
+ {
+ MessageBox.Show("这是本体自带的宠物, 无法编辑".Translate());
+ return;
+ }
var window = new PetEditWindow();
var vm = window.ViewModel;
vm.OldPet = model;
@@ -81,18 +86,23 @@ public class PetPageVM
model.Close();
}
- private void Remove(PetModel food)
+ private void Remove(PetModel model)
{
+ if (model.IsSimplePetModel.Value)
+ {
+ MessageBox.Show("这是本体自带的宠物, 无法删除".Translate());
+ return;
+ }
if (MessageBox.Show("确定删除吗".Translate(), "", MessageBoxButton.YesNo) is MessageBoxResult.No)
return;
if (ShowPets.Value.Count == Pets.Count)
{
- Pets.Remove(food);
+ Pets.Remove(model);
}
else
{
- ShowPets.Value.Remove(food);
- Pets.Remove(food);
+ ShowPets.Value.Remove(model);
+ Pets.Remove(model);
}
}
}
diff --git a/VPet.ModMaker/ViewModels/ModEdit/WorkEdit/WorkPageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/WorkEdit/WorkPageVM.cs
index 00eccbb..8ed96e3 100644
--- a/VPet.ModMaker/ViewModels/ModEdit/WorkEdit/WorkPageVM.cs
+++ b/VPet.ModMaker/ViewModels/ModEdit/WorkEdit/WorkPageVM.cs
@@ -91,18 +91,18 @@ public class WorkPageVM
}
}
- private void Remove(WorkModel food)
+ private void Remove(WorkModel model)
{
if (MessageBox.Show("确定删除吗".Translate(), "", MessageBoxButton.YesNo) is MessageBoxResult.No)
return;
if (ShowWorks.Value.Count == Works.Count)
{
- Works.Remove(food);
+ Works.Remove(model);
}
else
{
- ShowWorks.Value.Remove(food);
- Works.Remove(food);
+ ShowWorks.Value.Remove(model);
+ Works.Remove(model);
}
}
}
diff --git a/VPet.ModMaker/Views/ModEdit/FoodEdit/FoodEditWindow.xaml b/VPet.ModMaker/Views/ModEdit/FoodEdit/FoodEditWindow.xaml
index 9287875..b83fd6b 100644
--- a/VPet.ModMaker/Views/ModEdit/FoodEdit/FoodEditWindow.xaml
+++ b/VPet.ModMaker/Views/ModEdit/FoodEdit/FoodEditWindow.xaml
@@ -125,6 +125,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/VPet.ModMaker/Views/ModEdit/ModEditWindow.xaml b/VPet.ModMaker/Views/ModEdit/ModEditWindow.xaml
index ddd5c58..6d38885 100644
--- a/VPet.ModMaker/Views/ModEdit/ModEditWindow.xaml
+++ b/VPet.ModMaker/Views/ModEdit/ModEditWindow.xaml
@@ -89,34 +89,34 @@
+ Text="{Binding ModInfo.Value.Id.Value, UpdateSourceTrigger=PropertyChanged}" />
+ Text="{Binding ModInfo.Value.Author.Value, UpdateSourceTrigger=PropertyChanged}" />
+ Text="{Binding ModInfo.Value.GameVersion.Value, UpdateSourceTrigger=PropertyChanged}" />
+ Text="{Binding ModInfo.Value.ModVersion.Value, UpdateSourceTrigger=PropertyChanged}" />
+ Text="{Binding ModInfo.Value.CurrentI18nData.Value.Name.Value, UpdateSourceTrigger=PropertyChanged}" />
diff --git a/VPet.ModMaker/Views/ModEdit/WorkEdit/WorkEditWindow.xaml b/VPet.ModMaker/Views/ModEdit/WorkEdit/WorkEditWindow.xaml
index b344c84..23e3a8b 100644
--- a/VPet.ModMaker/Views/ModEdit/WorkEdit/WorkEditWindow.xaml
+++ b/VPet.ModMaker/Views/ModEdit/WorkEdit/WorkEditWindow.xaml
@@ -202,7 +202,7 @@
Grid.Row="4"
Grid.Column="1"
Value="{Binding Work.Value.Feeling.Value}" />
-
+
+ Value="{Binding Work.Value.LevelLimit.Value}" />
+ Value="{Binding Work.Value.Time.Value}" />