mirror of
https://github.com/LorisYounger/VPet.ModMaker.git
synced 2024-08-30 18:22:21 +00:00
实装 模组载入和模组本地化文件读取
This commit is contained in:
parent
e8f71384c8
commit
1f3cda4023
@ -8,26 +8,19 @@ using VPet_Simulator.Windows.Interface;
|
|||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.Models;
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
public class ClickTextModel : II18nData<I18nClickTextModel>
|
public class ClickTextModel : I18nModel<I18nClickTextModel>
|
||||||
{
|
{
|
||||||
|
public string Text { get; set; }
|
||||||
public ObservableValue<string> Id { get; } = new();
|
public ObservableValue<string> Id { get; } = new();
|
||||||
public ObservableValue<ClickText.ModeType> Mode { get; } = new();
|
public ObservableValue<ClickText.ModeType> Mode { get; } = new();
|
||||||
|
|
||||||
public ObservableValue<string> Working { get; } = new();
|
public ObservableValue<string> Working { get; } = new();
|
||||||
public ObservableValue<int> LikeMin { get; } = new();
|
public ObservableValue<double> LikeMin { get; } = new();
|
||||||
public ObservableValue<int> LikeMax { get; } = new();
|
public ObservableValue<double> LikeMax { get; } = new();
|
||||||
public ObservableValue<VPet_Simulator.Core.Main.WorkingState> WorkingState { get; } = new();
|
public ObservableValue<VPet_Simulator.Core.Main.WorkingState> WorkingState { get; } = new();
|
||||||
public ObservableValue<ClickText.DayTime> DayTime { get; } = new();
|
public ObservableValue<ClickText.DayTime> DayTime { get; } = new();
|
||||||
|
|
||||||
public ObservableValue<I18nClickTextModel> CurrentI18nData { get; } = new();
|
public ClickTextModel() { }
|
||||||
public Dictionary<string, I18nClickTextModel> I18nDatas { get; } = new();
|
|
||||||
|
|
||||||
public ClickTextModel()
|
|
||||||
{
|
|
||||||
foreach (var lang in I18nHelper.Current.CultureNames)
|
|
||||||
I18nDatas.Add(lang, new());
|
|
||||||
CurrentI18nData.Value = I18nDatas[I18nHelper.Current.CultureName.Value];
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClickTextModel(ClickTextModel clickText)
|
public ClickTextModel(ClickTextModel clickText)
|
||||||
: this()
|
: this()
|
||||||
@ -38,15 +31,25 @@ public class ClickTextModel : II18nData<I18nClickTextModel>
|
|||||||
LikeMax.Value = clickText.LikeMax.Value;
|
LikeMax.Value = clickText.LikeMax.Value;
|
||||||
LikeMin.Value = clickText.LikeMin.Value;
|
LikeMin.Value = clickText.LikeMin.Value;
|
||||||
DayTime.Value = clickText.DayTime.Value;
|
DayTime.Value = clickText.DayTime.Value;
|
||||||
foreach (var item in clickText.I18nDatas)
|
}
|
||||||
I18nDatas[item.Key] = item.Value;
|
|
||||||
CurrentI18nData.Value = I18nDatas[I18nHelper.Current.CultureName.Value];
|
public ClickTextModel(ClickText clickText)
|
||||||
|
: this()
|
||||||
|
{
|
||||||
|
Text = clickText.Text;
|
||||||
|
Mode.Value = clickText.Mode;
|
||||||
|
Working.Value = clickText.Working;
|
||||||
|
WorkingState.Value = clickText.State;
|
||||||
|
DayTime.Value = clickText.DaiTime;
|
||||||
|
LikeMax.Value = clickText.LikeMax;
|
||||||
|
LikeMin.Value = clickText.LikeMin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClickText ToClickText()
|
public ClickText ToClickText()
|
||||||
{
|
{
|
||||||
return new()
|
return new()
|
||||||
{
|
{
|
||||||
|
Text = Text,
|
||||||
Mode = Mode.Value,
|
Mode = Mode.Value,
|
||||||
Working = Working.Value,
|
Working = Working.Value,
|
||||||
State = WorkingState.Value,
|
State = WorkingState.Value,
|
||||||
|
@ -10,8 +10,10 @@ using VPet_Simulator.Windows.Interface;
|
|||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.Models;
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
public class FoodModel : II18nData<I18nFoodModel>
|
public class FoodModel : I18nModel<I18nFoodModel>
|
||||||
{
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Description { get; set; }
|
||||||
public ObservableValue<string> Id { get; } = new();
|
public ObservableValue<string> Id { get; } = new();
|
||||||
public ObservableValue<Food.FoodType> Type { get; } = new();
|
public ObservableValue<Food.FoodType> Type { get; } = new();
|
||||||
public ObservableValue<double> Strength { get; } = new();
|
public ObservableValue<double> Strength { get; } = new();
|
||||||
@ -23,15 +25,8 @@ public class FoodModel : II18nData<I18nFoodModel>
|
|||||||
public ObservableValue<double> Price { get; } = new();
|
public ObservableValue<double> Price { get; } = new();
|
||||||
public ObservableValue<int> Exp { get; } = new();
|
public ObservableValue<int> Exp { get; } = new();
|
||||||
public ObservableValue<BitmapImage> Image { get; } = new();
|
public ObservableValue<BitmapImage> Image { get; } = new();
|
||||||
public ObservableValue<I18nFoodModel> CurrentI18nData { get; } = new();
|
|
||||||
public Dictionary<string, I18nFoodModel> I18nDatas { get; } = new();
|
|
||||||
|
|
||||||
public FoodModel()
|
public FoodModel() { }
|
||||||
{
|
|
||||||
foreach (var lang in I18nHelper.Current.CultureNames)
|
|
||||||
I18nDatas.Add(lang, new());
|
|
||||||
CurrentI18nData.Value = I18nDatas[I18nHelper.Current.CultureName.Value];
|
|
||||||
}
|
|
||||||
|
|
||||||
public FoodModel(FoodModel food)
|
public FoodModel(FoodModel food)
|
||||||
: this()
|
: this()
|
||||||
@ -47,9 +42,24 @@ public class FoodModel : II18nData<I18nFoodModel>
|
|||||||
Price.Value = food.Price.Value;
|
Price.Value = food.Price.Value;
|
||||||
Exp.Value = food.Exp.Value;
|
Exp.Value = food.Exp.Value;
|
||||||
Image.Value = Utils.LoadImageToStream(food.Image.Value);
|
Image.Value = Utils.LoadImageToStream(food.Image.Value);
|
||||||
foreach (var item in food.I18nDatas)
|
}
|
||||||
I18nDatas[item.Key] = item.Value;
|
|
||||||
CurrentI18nData.Value = I18nDatas[I18nHelper.Current.CultureName.Value];
|
public FoodModel(Food food)
|
||||||
|
: this()
|
||||||
|
{
|
||||||
|
Name = food.Name;
|
||||||
|
Description = food.Description;
|
||||||
|
Type.Value = food.Type;
|
||||||
|
Strength.Value = food.Strength;
|
||||||
|
StrengthDrink.Value = food.StrengthDrink;
|
||||||
|
StrengthFood.Value = food.StrengthFood;
|
||||||
|
Feeling.Value = food.Feeling;
|
||||||
|
Health.Value = food.Health;
|
||||||
|
Likability.Value = food.Likability;
|
||||||
|
Price.Value = food.Price;
|
||||||
|
Exp.Value = food.Exp;
|
||||||
|
if (File.Exists(food.Image))
|
||||||
|
Image.Value = Utils.LoadImageToStream(food.Image);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Food ToFood()
|
public Food ToFood()
|
||||||
|
52
VPet.Plugin.ModMaker/Models/I18nModel.cs
Normal file
52
VPet.Plugin.ModMaker/Models/I18nModel.cs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
using HKW.HKWViewModels.SimpleObservable;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
|
public class I18nModel<T>
|
||||||
|
where T : class, new()
|
||||||
|
{
|
||||||
|
public ObservableValue<T> CurrentI18nData { get; } = new();
|
||||||
|
public Dictionary<string, T> I18nDatas { get; } = new();
|
||||||
|
|
||||||
|
public I18nModel()
|
||||||
|
{
|
||||||
|
I18nHelper.Current.CultureName.ValueChanged += LangChanged;
|
||||||
|
I18nHelper.Current.AddLang += AddLang;
|
||||||
|
I18nHelper.Current.RemoveLang += RemoveLang;
|
||||||
|
I18nHelper.Current.ReplaceLang += ReplaceLang;
|
||||||
|
if (I18nDatas.Count == 0)
|
||||||
|
return;
|
||||||
|
foreach (var item in I18nDatas)
|
||||||
|
I18nDatas[item.Key] = item.Value;
|
||||||
|
CurrentI18nData.Value = I18nDatas[I18nHelper.Current.CultureName.Value];
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LangChanged(string value)
|
||||||
|
{
|
||||||
|
if (I18nDatas.TryGetValue(value, out var result))
|
||||||
|
CurrentI18nData.Value = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddLang(string lang)
|
||||||
|
{
|
||||||
|
if (I18nDatas.ContainsKey(lang) is false)
|
||||||
|
I18nDatas.Add(lang, new());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveLang(string lang)
|
||||||
|
{
|
||||||
|
I18nDatas.Remove(lang);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ReplaceLang(string oldLang, string newLang)
|
||||||
|
{
|
||||||
|
var item = I18nDatas[oldLang];
|
||||||
|
I18nDatas.Remove(oldLang);
|
||||||
|
I18nDatas.Add(newLang, item);
|
||||||
|
}
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
using HKW.HKWViewModels.SimpleObservable;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.Models;
|
|
||||||
|
|
||||||
public interface II18nData<T>
|
|
||||||
where T : class
|
|
||||||
{
|
|
||||||
public ObservableValue<T> CurrentI18nData { get; }
|
|
||||||
public Dictionary<string, T> I18nDatas { get; }
|
|
||||||
}
|
|
@ -4,36 +4,36 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Xml.Serialization;
|
||||||
using VPet_Simulator.Windows.Interface;
|
using VPet_Simulator.Windows.Interface;
|
||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.Models;
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
public class LowTextModel : II18nData<I18nLowTextModel>
|
public class LowTextModel : I18nModel<I18nLowTextModel>
|
||||||
{
|
{
|
||||||
|
public string Text { get; set; }
|
||||||
public ObservableValue<string> Id { get; } = new();
|
public ObservableValue<string> Id { get; } = new();
|
||||||
public ObservableValue<LowText.ModeType> Mode { get; } = new();
|
public ObservableValue<LowText.ModeType> Mode { get; } = new();
|
||||||
public ObservableValue<LowText.StrengthType> Strength { get; } = new();
|
public ObservableValue<LowText.StrengthType> Strength { get; } = new();
|
||||||
public ObservableValue<LowText.LikeType> Like { get; } = new();
|
public ObservableValue<LowText.LikeType> Like { get; } = new();
|
||||||
|
|
||||||
public ObservableValue<I18nLowTextModel> CurrentI18nData { get; } = new();
|
public LowTextModel() { }
|
||||||
public Dictionary<string, I18nLowTextModel> I18nDatas { get; } = new();
|
|
||||||
|
|
||||||
public LowTextModel()
|
|
||||||
{
|
|
||||||
foreach (var lang in I18nHelper.Current.CultureNames)
|
|
||||||
I18nDatas.Add(lang, new());
|
|
||||||
CurrentI18nData.Value = I18nDatas[I18nHelper.Current.CultureName.Value];
|
|
||||||
}
|
|
||||||
|
|
||||||
public LowTextModel(LowTextModel lowText)
|
public LowTextModel(LowTextModel lowText)
|
||||||
: this()
|
: this()
|
||||||
{
|
{
|
||||||
Mode = lowText.Mode;
|
Mode.Value = lowText.Mode.Value;
|
||||||
Strength = lowText.Strength;
|
Strength.Value = lowText.Strength.Value;
|
||||||
Like = lowText.Like;
|
Like.Value = lowText.Like.Value;
|
||||||
foreach (var item in lowText.I18nDatas)
|
}
|
||||||
I18nDatas[item.Key] = item.Value;
|
|
||||||
CurrentI18nData.Value = I18nDatas[I18nHelper.Current.CultureName.Value];
|
public LowTextModel(LowText lowText)
|
||||||
|
: this()
|
||||||
|
{
|
||||||
|
Text = lowText.Text;
|
||||||
|
Mode.Value = lowText.Mode;
|
||||||
|
Strength.Value = lowText.Strength;
|
||||||
|
Like.Value = lowText.Like;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close() { }
|
public void Close() { }
|
||||||
@ -43,6 +43,7 @@ public class LowTextModel : II18nData<I18nLowTextModel>
|
|||||||
// 没有 Text
|
// 没有 Text
|
||||||
return new()
|
return new()
|
||||||
{
|
{
|
||||||
|
Text = Text,
|
||||||
Mode = Mode.Value,
|
Mode = Mode.Value,
|
||||||
Strength = Strength.Value,
|
Strength = Strength.Value,
|
||||||
Like = Like.Value,
|
Like = Like.Value,
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
using HKW.HKWViewModels.SimpleObservable;
|
using HKW.HKWViewModels.SimpleObservable;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -9,17 +12,55 @@ using VPet_Simulator.Windows.Interface;
|
|||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.Models;
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
public class ModInfoModel
|
public class ModInfoModel : I18nModel<I18nModInfoModel>
|
||||||
{
|
{
|
||||||
|
public static ModInfoModel Current { get; set; }
|
||||||
|
|
||||||
|
public ObservableValue<string> Id { get; } = new();
|
||||||
|
|
||||||
|
public ObservableValue<string> Summary { get; } = new();
|
||||||
public ObservableValue<string> Author { get; } = new();
|
public ObservableValue<string> Author { get; } = new();
|
||||||
public ObservableValue<string> GameVersion { get; } = new();
|
public ObservableValue<string> GameVersion { get; } = new();
|
||||||
public ObservableValue<string> ModVersion { get; } = new();
|
public ObservableValue<string> ModVersion { get; } = new();
|
||||||
public ObservableValue<BitmapImage> ModImage { get; } = new();
|
public ObservableValue<BitmapImage> ModImage { get; } = new();
|
||||||
public ObservableValue<I18nModInfoModel> CurrentI18nData { get; } = new();
|
public ObservableCollection<FoodModel> Foods { get; } = new();
|
||||||
public Dictionary<string, I18nModInfoModel> I18nDatas { get; } = new();
|
public ObservableCollection<ClickTextModel> ClickTexts { get; } = new();
|
||||||
public List<FoodModel> Foods { get; set; } = new();
|
public ObservableCollection<LowTextModel> LowTexts { get; } = new();
|
||||||
//public List<ClickText> ClickTexts { get; set; } = new();
|
public ObservableValue<string> SourcePath { get; } = new();
|
||||||
//public List<LowText> LowTexts { get; set; } = new();
|
|
||||||
|
public Dictionary<string, Dictionary<string, string>> OtherI18nDatas { get; } = new();
|
||||||
|
|
||||||
|
public ModInfoModel() { }
|
||||||
|
|
||||||
|
public ModInfoModel(ModLoader loader)
|
||||||
|
{
|
||||||
|
SourcePath.Value = loader.Path.FullName;
|
||||||
|
Id.Value = loader.Name;
|
||||||
|
var imagePath = Path.Combine(loader.Path.FullName, "icon.png");
|
||||||
|
if (File.Exists(imagePath))
|
||||||
|
ModImage.Value = Utils.LoadImageToStream(imagePath);
|
||||||
|
Author.Value = loader.Author;
|
||||||
|
GameVersion.Value = loader.GameVer.ToString();
|
||||||
|
ModVersion.Value = loader.Ver.ToString();
|
||||||
|
foreach (var food in loader.Foods)
|
||||||
|
Foods.Add(new(food));
|
||||||
|
foreach (var clickText in loader.ClickTexts)
|
||||||
|
ClickTexts.Add(new(clickText));
|
||||||
|
foreach (var lowText in loader.LowTexts)
|
||||||
|
LowTexts.Add(new(lowText));
|
||||||
|
Summary.Value = GetSummary();
|
||||||
|
foreach (var lang in loader.I18nDatas)
|
||||||
|
I18nDatas.Add(lang.Key, lang.Value);
|
||||||
|
OtherI18nDatas = loader.OtherI18nDatas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetSummary()
|
||||||
|
{
|
||||||
|
return $@"包含以下内容:
|
||||||
|
食物: {Foods.Count}
|
||||||
|
点击文本: {ClickTexts.Count}
|
||||||
|
低状态文本: {LowTexts.Count}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class I18nModInfoModel
|
public class I18nModInfoModel
|
||||||
|
219
VPet.Plugin.ModMaker/Models/ModLoader.cs
Normal file
219
VPet.Plugin.ModMaker/Models/ModLoader.cs
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
using LinePutScript;
|
||||||
|
using LinePutScript.Converter;
|
||||||
|
using LinePutScript.Dictionary;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using VPet_Simulator.Core;
|
||||||
|
using VPet_Simulator.Windows.Interface;
|
||||||
|
|
||||||
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
|
public class ModLoader
|
||||||
|
{
|
||||||
|
public string Name { get; }
|
||||||
|
public string Author { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 如果是上传至Steam,则为SteamUserID
|
||||||
|
/// </summary>
|
||||||
|
public long AuthorID { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 上传至Steam的ItemID
|
||||||
|
/// </summary>
|
||||||
|
public ulong ItemID { get; }
|
||||||
|
public string Intro { get; }
|
||||||
|
public DirectoryInfo Path { get; }
|
||||||
|
public int GameVer { get; }
|
||||||
|
public int Ver { get; }
|
||||||
|
public HashSet<string> Tag { get; } = new();
|
||||||
|
public bool SuccessLoad { get; } = true;
|
||||||
|
public DateTime CacheDate { get; } = DateTime.MinValue;
|
||||||
|
public List<PetLoader> Pets { get; } = new();
|
||||||
|
public List<Food> Foods { get; } = new();
|
||||||
|
public List<LowText> LowTexts { get; } = new();
|
||||||
|
public Dictionary<string, I18nModInfoModel> I18nDatas { get; } = new();
|
||||||
|
|
||||||
|
public Dictionary<string, Dictionary<string, string>> OtherI18nDatas { get; } = new();
|
||||||
|
public List<ClickText> ClickTexts { get; } = new();
|
||||||
|
|
||||||
|
public ModLoader(DirectoryInfo directory)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Path = directory;
|
||||||
|
LpsDocument modlps = new LpsDocument(
|
||||||
|
File.ReadAllText(directory.FullName + @"\info.lps")
|
||||||
|
);
|
||||||
|
Name = modlps.FindLine("vupmod").Info;
|
||||||
|
Intro = modlps.FindLine("intro").Info;
|
||||||
|
GameVer = modlps.FindSub("gamever").InfoToInt;
|
||||||
|
Ver = modlps.FindSub("ver").InfoToInt;
|
||||||
|
Author = modlps.FindSub("author").Info.Split('[').First();
|
||||||
|
if (modlps.FindLine("authorid") != null)
|
||||||
|
AuthorID = modlps.FindLine("authorid").InfoToInt64;
|
||||||
|
else
|
||||||
|
AuthorID = 0;
|
||||||
|
if (modlps.FindLine("itemid") != null)
|
||||||
|
ItemID = Convert.ToUInt64(modlps.FindLine("itemid").info);
|
||||||
|
else
|
||||||
|
ItemID = 0;
|
||||||
|
CacheDate = modlps.GetDateTime("cachedate", DateTime.MinValue);
|
||||||
|
|
||||||
|
//MOD未加载时支持翻译
|
||||||
|
foreach (var line in modlps.FindAllLine("lang"))
|
||||||
|
{
|
||||||
|
var i18nData = new I18nModInfoModel();
|
||||||
|
foreach (var sub in line)
|
||||||
|
{
|
||||||
|
if (sub.Name == Name)
|
||||||
|
i18nData.Name.Value = sub.Info;
|
||||||
|
else if (sub.Name == Intro)
|
||||||
|
i18nData.Description.Value = sub.Info;
|
||||||
|
}
|
||||||
|
I18nDatas.Add(line.Info, i18nData);
|
||||||
|
}
|
||||||
|
DirectoryInfo? langDirectory = null;
|
||||||
|
foreach (DirectoryInfo di in Path.EnumerateDirectories())
|
||||||
|
{
|
||||||
|
switch (di.Name.ToLower())
|
||||||
|
{
|
||||||
|
case "pet":
|
||||||
|
//宠物模型
|
||||||
|
Tag.Add("pet");
|
||||||
|
foreach (FileInfo fi in di.EnumerateFiles("*.lps"))
|
||||||
|
{
|
||||||
|
var lps = new LpsDocument(File.ReadAllText(fi.FullName));
|
||||||
|
if (lps.First().Name.ToLower() == "pet")
|
||||||
|
{
|
||||||
|
var name = lps.First().Info;
|
||||||
|
Pets.Add(new PetLoader(lps, di));
|
||||||
|
//var p = mw.Pets.FirstOrDefault(x => x.Name == name);
|
||||||
|
//if (p == null)
|
||||||
|
// mw.Pets.Add(new PetLoader(lps, di));
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// p.path.Add(di.FullName + "\\" + lps.First()["path"].Info);
|
||||||
|
// p.Config.Set(lps);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "food":
|
||||||
|
Tag.Add("food");
|
||||||
|
foreach (FileInfo fi in di.EnumerateFiles("*.lps"))
|
||||||
|
{
|
||||||
|
var tmp = new LpsDocument(File.ReadAllText(fi.FullName));
|
||||||
|
foreach (ILine li in tmp)
|
||||||
|
{
|
||||||
|
var food = LPSConvert.DeserializeObject<Food>(li);
|
||||||
|
var imagePath = $"{Path.FullName}\\image\\food\\{food.Name}.png";
|
||||||
|
if (File.Exists(imagePath))
|
||||||
|
food.Image = imagePath;
|
||||||
|
Foods.Add(food);
|
||||||
|
//string tmps = li.Find("name").info;
|
||||||
|
//mw.Foods.RemoveAll(x => x.Name == tmps);
|
||||||
|
//mw.Foods.Add(LPSConvert.DeserializeObject<Food>(li));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "image":
|
||||||
|
Tag.Add("image");
|
||||||
|
break;
|
||||||
|
case "text":
|
||||||
|
Tag.Add("text");
|
||||||
|
foreach (FileInfo fi in di.EnumerateFiles("*.lps"))
|
||||||
|
{
|
||||||
|
var tmp = new LpsDocument(File.ReadAllText(fi.FullName));
|
||||||
|
foreach (ILine li in tmp)
|
||||||
|
{
|
||||||
|
switch (li.Name.ToLower())
|
||||||
|
{
|
||||||
|
case "lowfoodtext":
|
||||||
|
LowTexts.Add(LPSConvert.DeserializeObject<LowText>(li));
|
||||||
|
break;
|
||||||
|
case "lowdrinktext":
|
||||||
|
LowTexts.Add(LPSConvert.DeserializeObject<LowText>(li));
|
||||||
|
break;
|
||||||
|
case "clicktext":
|
||||||
|
ClickTexts.Add(LPSConvert.DeserializeObject<ClickText>(li));
|
||||||
|
break;
|
||||||
|
//case "selecttext":
|
||||||
|
// mw.SelectTexts.Add(
|
||||||
|
// LPSConvert.DeserializeObject<SelectText>(li)
|
||||||
|
// );
|
||||||
|
// break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "lang":
|
||||||
|
Tag.Add("lang");
|
||||||
|
langDirectory = di;
|
||||||
|
//foreach (FileInfo fi in di.EnumerateFiles("*.lps"))
|
||||||
|
//{
|
||||||
|
// //LocalizeCore.AddCulture(
|
||||||
|
// // fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length),
|
||||||
|
// // new LPS_D(File.ReadAllText(fi.FullName))
|
||||||
|
// //);
|
||||||
|
//}
|
||||||
|
//foreach (DirectoryInfo dis in di.EnumerateDirectories())
|
||||||
|
//{
|
||||||
|
// foreach (FileInfo fi in dis.EnumerateFiles("*.lps"))
|
||||||
|
// {
|
||||||
|
// //LocalizeCore.AddCulture(
|
||||||
|
// // dis.Name,
|
||||||
|
// // new LPS_D(File.ReadAllText(fi.FullName))
|
||||||
|
// //);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//if (mw.Set.Language == "null")
|
||||||
|
//{
|
||||||
|
// LocalizeCore.LoadDefaultCulture();
|
||||||
|
//}
|
||||||
|
//else
|
||||||
|
// LocalizeCore.LoadCulture(mw.Set.Language);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (langDirectory is null)
|
||||||
|
return;
|
||||||
|
foreach (DirectoryInfo dis in langDirectory.EnumerateDirectories())
|
||||||
|
{
|
||||||
|
OtherI18nDatas.Add(dis.Name, new());
|
||||||
|
foreach (FileInfo fi in dis.EnumerateFiles("*.lps"))
|
||||||
|
{
|
||||||
|
var lps = new LPS(File.ReadAllText(fi.FullName));
|
||||||
|
foreach (var item in lps)
|
||||||
|
{
|
||||||
|
if (OtherI18nDatas[dis.Name].ContainsKey(item.Name) is false)
|
||||||
|
OtherI18nDatas[dis.Name].Add(item.Name, item.Info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Tag.Add("该模组已损坏");
|
||||||
|
SuccessLoad = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteFile()
|
||||||
|
{
|
||||||
|
var lps = new LpsDocument(File.ReadAllText(Path.FullName + @"\info.lps"));
|
||||||
|
lps.FindLine("vupmod").Info = Name;
|
||||||
|
lps.FindLine("intro").Info = Intro;
|
||||||
|
lps.FindSub("gamever").InfoToInt = GameVer;
|
||||||
|
lps.FindSub("ver").InfoToInt = Ver;
|
||||||
|
lps.FindSub("author").Info = Author;
|
||||||
|
lps.FindorAddLine("authorid").InfoToInt64 = AuthorID;
|
||||||
|
lps.FindorAddLine("itemid").info = ItemID.ToString();
|
||||||
|
File.WriteAllText(Path.FullName + @"\info.lps", lps.ToString());
|
||||||
|
}
|
||||||
|
}
|
20
VPet.Plugin.ModMaker/Models/ModMakeHistory.cs
Normal file
20
VPet.Plugin.ModMaker/Models/ModMakeHistory.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using LinePutScript.Converter;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
|
public class ModMakeHistory
|
||||||
|
{
|
||||||
|
[Line(ignoreCase: true)]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[Line(ignoreCase: true)]
|
||||||
|
public string Path { get; set; }
|
||||||
|
|
||||||
|
[Line(ignoreCase: true)]
|
||||||
|
public DateTime LastOpenTime { get; set; }
|
||||||
|
}
|
12
VPet.Plugin.ModMaker/Models/ModMakerInfo.cs
Normal file
12
VPet.Plugin.ModMaker/Models/ModMakerInfo.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
|
public static class ModMakerInfo
|
||||||
|
{
|
||||||
|
public const string BaseDirectory = nameof(ModMaker);
|
||||||
|
}
|
@ -9,12 +9,22 @@ using System.Windows.Media.Imaging;
|
|||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.Models;
|
namespace VPet.Plugin.ModMaker.Models;
|
||||||
|
|
||||||
public class PetModel
|
public class PetModel : I18nModel<I18nPetInfoModel>
|
||||||
{
|
{
|
||||||
|
public ObservableValue<string> Id { get; } = new();
|
||||||
public ObservableValue<BitmapImage> Image { get; } = new();
|
public ObservableValue<BitmapImage> Image { get; } = new();
|
||||||
public ObservableValue<ObservableInt32Rect> TouchHeadRect { get; } = new(new());
|
public ObservableValue<ObservableInt32Rect> TouchHeadRect { get; } = new(new());
|
||||||
public ObservableValue<MultiStateRect> TouchRaisedRect { get; } = new(new());
|
public ObservableValue<MultiStateRect> TouchRaisedRect { get; } = new(new());
|
||||||
public ObservableValue<MultiStatePoint> RaisePoint { get; } = new(new());
|
public ObservableValue<MultiStatePoint> RaisePoint { get; } = new(new());
|
||||||
|
|
||||||
|
public ObservableValue<I18nPetInfoModel> CurrentI18nData { get; } = new();
|
||||||
|
public Dictionary<string, I18nPetInfoModel> I18nDatas { get; } = new();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class I18nPetInfoModel
|
||||||
|
{
|
||||||
|
public ObservableValue<string> Name { get; set; } = new();
|
||||||
|
public ObservableValue<string> Description { get; set; } = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MultiStateRect
|
public class MultiStateRect
|
||||||
|
@ -61,8 +61,8 @@
|
|||||||
<Reference Include="Panuon.WPF, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Panuon.WPF, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Panuon.WPF.1.0.2\lib\net462\Panuon.WPF.dll</HintPath>
|
<HintPath>..\packages\Panuon.WPF.1.0.2\lib\net462\Panuon.WPF.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Panuon.WPF.UI, Version=1.1.15.6, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Panuon.WPF.UI, Version=1.1.15.7, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Panuon.WPF.UI.1.1.15.6\lib\net462\Panuon.WPF.UI.dll</HintPath>
|
<HintPath>..\packages\Panuon.WPF.UI.1.1.15.7\lib\net462\Panuon.WPF.UI.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
@ -76,10 +76,10 @@
|
|||||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="VPet-Simulator.Core, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="VPet-Simulator.Core, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\VPet-Simulator.Core.1.0.0\lib\net462\VPet-Simulator.Core.dll</HintPath>
|
<HintPath>..\packages\VPet-Simulator.Core.1.0.2\lib\net462\VPet-Simulator.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="VPet-Simulator.Windows.Interface, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="VPet-Simulator.Windows.Interface, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\VPet-Simulator.Windows.Interface.1.0.0\lib\net462\VPet-Simulator.Windows.Interface.dll</HintPath>
|
<HintPath>..\packages\VPet-Simulator.Windows.Interface.1.0.2\lib\net462\VPet-Simulator.Windows.Interface.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="WindowsBase" />
|
<Reference Include="WindowsBase" />
|
||||||
<Reference Include="PresentationCore" />
|
<Reference Include="PresentationCore" />
|
||||||
@ -94,8 +94,11 @@
|
|||||||
<Compile Include="Models\ClickTextModel.cs" />
|
<Compile Include="Models\ClickTextModel.cs" />
|
||||||
<Compile Include="Models\FoodModel.cs" />
|
<Compile Include="Models\FoodModel.cs" />
|
||||||
<Compile Include="Models\I18nHelper.cs" />
|
<Compile Include="Models\I18nHelper.cs" />
|
||||||
<Compile Include="Models\II18nData.cs" />
|
<Compile Include="Models\I18nModel.cs" />
|
||||||
<Compile Include="Models\LowTextModel.cs" />
|
<Compile Include="Models\LowTextModel.cs" />
|
||||||
|
<Compile Include="Models\ModLoader.cs" />
|
||||||
|
<Compile Include="Models\ModMakeHistory.cs" />
|
||||||
|
<Compile Include="Models\ModMakerInfo.cs" />
|
||||||
<Compile Include="Models\PetModel.cs" />
|
<Compile Include="Models\PetModel.cs" />
|
||||||
<Compile Include="ViewModels\ModEdit\ClickTextEdit\ClickTextEditWindowVM.cs" />
|
<Compile Include="ViewModels\ModEdit\ClickTextEdit\ClickTextEditWindowVM.cs" />
|
||||||
<Compile Include="ViewModels\ModEdit\ClickTextEdit\ClickTextPageVM.cs" />
|
<Compile Include="ViewModels\ModEdit\ClickTextEdit\ClickTextPageVM.cs" />
|
||||||
|
@ -12,7 +12,6 @@ namespace VPet.Plugin.ModMaker.ViewModels.ModEdit.ClickTextEdit;
|
|||||||
|
|
||||||
public class ClickTextEditWindowVM
|
public class ClickTextEditWindowVM
|
||||||
{
|
{
|
||||||
public ObservableCollection<ClickTextModel> ClickTexts { get; set; }
|
|
||||||
#region Value
|
#region Value
|
||||||
public ObservableValue<ClickTextModel> ClickText { get; } = new(new());
|
public ObservableValue<ClickTextModel> ClickText { get; } = new(new());
|
||||||
public ObservableCollection<ClickText.ModeType> ModeTypes { get; } = new();
|
public ObservableCollection<ClickText.ModeType> ModeTypes { get; } = new();
|
||||||
|
@ -15,7 +15,8 @@ public class ClickTextPageVM
|
|||||||
{
|
{
|
||||||
#region Value
|
#region Value
|
||||||
public ObservableValue<ObservableCollection<ClickTextModel>> ShowClickTexts { get; } = new();
|
public ObservableValue<ObservableCollection<ClickTextModel>> ShowClickTexts { get; } = new();
|
||||||
public ObservableCollection<ClickTextModel> ClickTexts { get; } = new();
|
public ObservableCollection<ClickTextModel> ClickTexts { get; } =
|
||||||
|
new(ModInfoModel.Current.ClickTexts);
|
||||||
public ObservableValue<string> FilterClickText { get; } = new();
|
public ObservableValue<string> FilterClickText { get; } = new();
|
||||||
#endregion
|
#endregion
|
||||||
#region Command
|
#region Command
|
||||||
@ -31,11 +32,6 @@ public class ClickTextPageVM
|
|||||||
AddClickTextCommand.ExecuteAction = AddClickText;
|
AddClickTextCommand.ExecuteAction = AddClickText;
|
||||||
EditClickTextCommand.ExecuteAction = EditClickText;
|
EditClickTextCommand.ExecuteAction = EditClickText;
|
||||||
RemoveClickTextCommand.ExecuteAction = RemoveClickText;
|
RemoveClickTextCommand.ExecuteAction = RemoveClickText;
|
||||||
|
|
||||||
I18nHelper.Current.CultureName.ValueChanged += CurrentLang_ValueChanged;
|
|
||||||
I18nHelper.Current.AddLang += Instance_AddLang;
|
|
||||||
I18nHelper.Current.RemoveLang += Instance_RemoveLang;
|
|
||||||
I18nHelper.Current.ReplaceLang += Instance_ReplaceLang;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FilterClickText_ValueChanged(string value)
|
private void FilterClickText_ValueChanged(string value)
|
||||||
@ -54,7 +50,7 @@ public class ClickTextPageVM
|
|||||||
|
|
||||||
private void AddClickText()
|
private void AddClickText()
|
||||||
{
|
{
|
||||||
var window = CreateClickTextEditWindow();
|
var window = new ClickTextEditWindow();
|
||||||
var vm = window.ViewModel;
|
var vm = window.ViewModel;
|
||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
@ -64,7 +60,7 @@ public class ClickTextPageVM
|
|||||||
|
|
||||||
public void EditClickText(ClickTextModel clickText)
|
public void EditClickText(ClickTextModel clickText)
|
||||||
{
|
{
|
||||||
var window = CreateClickTextEditWindow();
|
var window = new ClickTextEditWindow();
|
||||||
var vm = window.ViewModel;
|
var vm = window.ViewModel;
|
||||||
var newLowTest = vm.ClickText.Value = new(clickText);
|
var newLowTest = vm.ClickText.Value = new(clickText);
|
||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
@ -95,45 +91,4 @@ public class ClickTextPageVM
|
|||||||
ClickTexts.Remove(clickText);
|
ClickTexts.Remove(clickText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CurrentLang_ValueChanged(string value)
|
|
||||||
{
|
|
||||||
foreach (var lowText in ClickTexts)
|
|
||||||
{
|
|
||||||
lowText.CurrentI18nData.Value = lowText.I18nDatas[value];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_AddLang(string lang)
|
|
||||||
{
|
|
||||||
foreach (var lowText in ClickTexts)
|
|
||||||
{
|
|
||||||
lowText.I18nDatas.Add(lang, new());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_RemoveLang(string lang)
|
|
||||||
{
|
|
||||||
foreach (var lowText in ClickTexts)
|
|
||||||
{
|
|
||||||
lowText.I18nDatas.Remove(lang);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_ReplaceLang(string oldLang, string newLang)
|
|
||||||
{
|
|
||||||
foreach (var lowText in ClickTexts)
|
|
||||||
{
|
|
||||||
var item = lowText.I18nDatas[oldLang];
|
|
||||||
lowText.I18nDatas.Remove(oldLang);
|
|
||||||
lowText.I18nDatas.Add(newLang, item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private ClickTextEditWindow CreateClickTextEditWindow()
|
|
||||||
{
|
|
||||||
var window = new ClickTextEditWindow();
|
|
||||||
window.ViewModel.ClickTexts = ClickTexts;
|
|
||||||
return window;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,6 @@ namespace VPet.Plugin.ModMaker.ViewModels.ModEdit.FoodEdit;
|
|||||||
|
|
||||||
public class FoodEditWindowVM
|
public class FoodEditWindowVM
|
||||||
{
|
{
|
||||||
public ObservableCollection<FoodModel> Foods { get; set; }
|
|
||||||
|
|
||||||
#region Value
|
#region Value
|
||||||
public ObservableValue<FoodModel> Food { get; } = new(new());
|
public ObservableValue<FoodModel> Food { get; } = new(new());
|
||||||
public ObservableCollection<Food.FoodType> FoodTypes { get; } = new();
|
public ObservableCollection<Food.FoodType> FoodTypes { get; } = new();
|
||||||
|
@ -17,7 +17,7 @@ public class FoodPageVM
|
|||||||
{
|
{
|
||||||
#region Value
|
#region Value
|
||||||
public ObservableValue<ObservableCollection<FoodModel>> ShowFoods { get; } = new();
|
public ObservableValue<ObservableCollection<FoodModel>> ShowFoods { get; } = new();
|
||||||
public ObservableCollection<FoodModel> Foods { get; } = new();
|
public ObservableCollection<FoodModel> Foods { get; } = new(ModInfoModel.Current.Foods);
|
||||||
public ObservableValue<string> FilterFoodText { get; } = new();
|
public ObservableValue<string> FilterFoodText { get; } = new();
|
||||||
#endregion
|
#endregion
|
||||||
#region Command
|
#region Command
|
||||||
@ -33,45 +33,6 @@ public class FoodPageVM
|
|||||||
AddFoodCommand.ExecuteAction = AddFood;
|
AddFoodCommand.ExecuteAction = AddFood;
|
||||||
EditFoodCommand.ExecuteAction = EditFood;
|
EditFoodCommand.ExecuteAction = EditFood;
|
||||||
RemoveFoodCommand.ExecuteAction = RemoveFood;
|
RemoveFoodCommand.ExecuteAction = RemoveFood;
|
||||||
|
|
||||||
I18nHelper.Current.CultureName.ValueChanged += CurrentLang_ValueChanged;
|
|
||||||
I18nHelper.Current.AddLang += Instance_AddLang;
|
|
||||||
I18nHelper.Current.RemoveLang += Instance_RemoveLang;
|
|
||||||
I18nHelper.Current.ReplaceLang += Instance_ReplaceLang;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CurrentLang_ValueChanged(string value)
|
|
||||||
{
|
|
||||||
foreach (var food in Foods)
|
|
||||||
{
|
|
||||||
food.CurrentI18nData.Value = food.I18nDatas[value];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_AddLang(string lang)
|
|
||||||
{
|
|
||||||
foreach (var food in Foods)
|
|
||||||
{
|
|
||||||
food.I18nDatas.Add(lang, new());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_RemoveLang(string lang)
|
|
||||||
{
|
|
||||||
foreach (var food in Foods)
|
|
||||||
{
|
|
||||||
food.I18nDatas.Remove(lang);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_ReplaceLang(string oldLang, string newLang)
|
|
||||||
{
|
|
||||||
foreach (var food in Foods)
|
|
||||||
{
|
|
||||||
var item = food.I18nDatas[oldLang];
|
|
||||||
food.I18nDatas.Remove(oldLang);
|
|
||||||
food.I18nDatas.Add(newLang, item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FilterFoodText_ValueChanged(string value)
|
private void FilterFoodText_ValueChanged(string value)
|
||||||
@ -92,7 +53,7 @@ public class FoodPageVM
|
|||||||
|
|
||||||
private void AddFood()
|
private void AddFood()
|
||||||
{
|
{
|
||||||
var window = CreateAddFoodWindow();
|
var window = new FoodEditWindow();
|
||||||
var vm = window.ViewModel;
|
var vm = window.ViewModel;
|
||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
@ -102,7 +63,7 @@ public class FoodPageVM
|
|||||||
|
|
||||||
public void EditFood(FoodModel food)
|
public void EditFood(FoodModel food)
|
||||||
{
|
{
|
||||||
var window = CreateAddFoodWindow();
|
var window = new FoodEditWindow();
|
||||||
var vm = window.ViewModel;
|
var vm = window.ViewModel;
|
||||||
var newFood = vm.Food.Value = new(food);
|
var newFood = vm.Food.Value = new(food);
|
||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
@ -134,11 +95,4 @@ public class FoodPageVM
|
|||||||
Foods.Remove(food);
|
Foods.Remove(food);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private FoodEditWindow CreateAddFoodWindow()
|
|
||||||
{
|
|
||||||
var window = new FoodEditWindow();
|
|
||||||
window.ViewModel.Foods = Foods;
|
|
||||||
return window;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,6 @@ namespace VPet.Plugin.ModMaker.ViewModels.ModEdit.LowTextEdit;
|
|||||||
|
|
||||||
public class LowTextEditWindowVM
|
public class LowTextEditWindowVM
|
||||||
{
|
{
|
||||||
public ObservableCollection<LowTextModel> LowTexts { get; set; }
|
|
||||||
|
|
||||||
#region Value
|
#region Value
|
||||||
public ObservableValue<LowTextModel> LowText { get; } = new(new());
|
public ObservableValue<LowTextModel> LowText { get; } = new(new());
|
||||||
|
|
||||||
|
@ -19,7 +19,8 @@ public class LowTextPageVM
|
|||||||
#region Value
|
#region Value
|
||||||
public ObservableValue<string> FilterLowText { get; } = new();
|
public ObservableValue<string> FilterLowText { get; } = new();
|
||||||
public ObservableValue<ObservableCollection<LowTextModel>> ShowLowTexts { get; } = new();
|
public ObservableValue<ObservableCollection<LowTextModel>> ShowLowTexts { get; } = new();
|
||||||
public ObservableCollection<LowTextModel> LowTexts { get; } = new();
|
public ObservableCollection<LowTextModel> LowTexts { get; } =
|
||||||
|
new(ModInfoModel.Current.LowTexts);
|
||||||
#endregion
|
#endregion
|
||||||
#region Command
|
#region Command
|
||||||
public ObservableCommand AddLowTextCommand { get; } = new();
|
public ObservableCommand AddLowTextCommand { get; } = new();
|
||||||
@ -34,11 +35,6 @@ public class LowTextPageVM
|
|||||||
AddLowTextCommand.ExecuteAction = AddLowText;
|
AddLowTextCommand.ExecuteAction = AddLowText;
|
||||||
EditLowTextCommand.ExecuteAction = EditLowText;
|
EditLowTextCommand.ExecuteAction = EditLowText;
|
||||||
RemoveLowTextCommand.ExecuteAction = RemoveLowText;
|
RemoveLowTextCommand.ExecuteAction = RemoveLowText;
|
||||||
|
|
||||||
I18nHelper.Current.CultureName.ValueChanged += CurrentLang_ValueChanged;
|
|
||||||
I18nHelper.Current.AddLang += Instance_AddLang;
|
|
||||||
I18nHelper.Current.RemoveLang += Instance_RemoveLang;
|
|
||||||
I18nHelper.Current.ReplaceLang += Instance_ReplaceLang;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FilterLowText_ValueChanged(string value)
|
private void FilterLowText_ValueChanged(string value)
|
||||||
@ -57,7 +53,7 @@ public class LowTextPageVM
|
|||||||
|
|
||||||
private void AddLowText()
|
private void AddLowText()
|
||||||
{
|
{
|
||||||
var window = CreateLowTextEditWindow();
|
var window = new LowTextEditWindow();
|
||||||
var vm = window.ViewModel;
|
var vm = window.ViewModel;
|
||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
@ -67,7 +63,7 @@ public class LowTextPageVM
|
|||||||
|
|
||||||
public void EditLowText(LowTextModel lowText)
|
public void EditLowText(LowTextModel lowText)
|
||||||
{
|
{
|
||||||
var window = CreateLowTextEditWindow();
|
var window = new LowTextEditWindow();
|
||||||
var vm = window.ViewModel;
|
var vm = window.ViewModel;
|
||||||
var newLowTest = vm.LowText.Value = new(lowText);
|
var newLowTest = vm.LowText.Value = new(lowText);
|
||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
@ -98,45 +94,4 @@ public class LowTextPageVM
|
|||||||
LowTexts.Remove(lowText);
|
LowTexts.Remove(lowText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CurrentLang_ValueChanged(string value)
|
|
||||||
{
|
|
||||||
foreach (var lowText in LowTexts)
|
|
||||||
{
|
|
||||||
lowText.CurrentI18nData.Value = lowText.I18nDatas[value];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_AddLang(string lang)
|
|
||||||
{
|
|
||||||
foreach (var lowText in LowTexts)
|
|
||||||
{
|
|
||||||
lowText.I18nDatas.Add(lang, new());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_RemoveLang(string lang)
|
|
||||||
{
|
|
||||||
foreach (var lowText in LowTexts)
|
|
||||||
{
|
|
||||||
lowText.I18nDatas.Remove(lang);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Instance_ReplaceLang(string oldLang, string newLang)
|
|
||||||
{
|
|
||||||
foreach (var lowText in LowTexts)
|
|
||||||
{
|
|
||||||
var item = lowText.I18nDatas[oldLang];
|
|
||||||
lowText.I18nDatas.Remove(oldLang);
|
|
||||||
lowText.I18nDatas.Add(newLang, item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private LowTextEditWindow CreateLowTextEditWindow()
|
|
||||||
{
|
|
||||||
var window = new LowTextEditWindow();
|
|
||||||
window.ViewModel.LowTexts = LowTexts;
|
|
||||||
return window;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,7 @@ public class ModEditWindowVM
|
|||||||
public ModEditWindow ModEditWindow { get; }
|
public ModEditWindow ModEditWindow { get; }
|
||||||
|
|
||||||
#region Value
|
#region Value
|
||||||
public ObservableValue<BitmapImage> ModImage { get; } = new();
|
public ObservableValue<ModInfoModel> ModInfo { get; } = new(ModInfoModel.Current);
|
||||||
public ObservableValue<ModInfoModel> ModInfo { get; } = new(new());
|
|
||||||
public ObservableValue<string> CurrentLang { get; } = new();
|
public ObservableValue<string> CurrentLang { get; } = new();
|
||||||
public I18nHelper I18nData => I18nHelper.Current;
|
public I18nHelper I18nData => I18nHelper.Current;
|
||||||
#endregion
|
#endregion
|
||||||
@ -33,16 +32,48 @@ public class ModEditWindowVM
|
|||||||
|
|
||||||
public ObservableCommand<string> EditLangCommand { get; } = new();
|
public ObservableCommand<string> EditLangCommand { get; } = new();
|
||||||
public ObservableCommand<string> RemoveLangCommand { get; } = new();
|
public ObservableCommand<string> RemoveLangCommand { get; } = new();
|
||||||
|
|
||||||
|
public ObservableCommand SaveCommand { get; } = new();
|
||||||
|
public ObservableCommand SaveToCommand { get; } = new();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public ModEditWindowVM() { }
|
public ModEditWindowVM() { }
|
||||||
|
|
||||||
public ModEditWindowVM(ModEditWindow window)
|
public ModEditWindowVM(ModEditWindow window)
|
||||||
{
|
{
|
||||||
#if DEBUG
|
foreach (var lang in ModInfo.Value.I18nDatas)
|
||||||
I18nHelper.Current.CultureNames.Add("zh-CN");
|
{
|
||||||
I18nHelper.Current.CultureName.Value = I18nHelper.Current.CultureNames.First();
|
if (I18nHelper.Current.CultureNames.Contains(lang.Key) is false)
|
||||||
#endif
|
I18nHelper.Current.CultureNames.Add(lang.Key);
|
||||||
|
}
|
||||||
|
if (I18nHelper.Current.CultureNames.Count > 0)
|
||||||
|
{
|
||||||
|
I18nHelper.Current.CultureName.Value = I18nHelper.Current.CultureNames.First();
|
||||||
|
foreach (var i18n in ModInfo.Value.OtherI18nDatas)
|
||||||
|
{
|
||||||
|
foreach (var food in ModInfo.Value.Foods)
|
||||||
|
{
|
||||||
|
var foodI18n = food.I18nDatas[i18n.Key];
|
||||||
|
if (i18n.Value.TryGetValue(food.Name, out var i18nName))
|
||||||
|
foodI18n.Name.Value = i18nName;
|
||||||
|
if (i18n.Value.TryGetValue(food.Description, out var i18nDescription))
|
||||||
|
foodI18n.Description.Value = i18nDescription;
|
||||||
|
}
|
||||||
|
foreach (var lowText in ModInfo.Value.LowTexts)
|
||||||
|
{
|
||||||
|
var lowTextI18n = lowText.I18nDatas[i18n.Key];
|
||||||
|
if (i18n.Value.TryGetValue(lowText.Text, out var text))
|
||||||
|
lowTextI18n.Text.Value = text;
|
||||||
|
}
|
||||||
|
foreach (var clickText in ModInfo.Value.ClickTexts)
|
||||||
|
{
|
||||||
|
var clickTextI18n = clickText.I18nDatas[i18n.Key];
|
||||||
|
if (i18n.Value.TryGetValue(clickText.Text, out var text))
|
||||||
|
clickTextI18n.Text.Value = text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ModEditWindow = window;
|
ModEditWindow = window;
|
||||||
|
|
||||||
I18nHelper.Current.AddLang += I18nData_AddLang;
|
I18nHelper.Current.AddLang += I18nData_AddLang;
|
||||||
@ -50,11 +81,13 @@ public class ModEditWindowVM
|
|||||||
I18nHelper.Current.ReplaceLang += I18nData_ReplaceLang;
|
I18nHelper.Current.ReplaceLang += I18nData_ReplaceLang;
|
||||||
CurrentLang.ValueChanged += CurrentLang_ValueChanged;
|
CurrentLang.ValueChanged += CurrentLang_ValueChanged;
|
||||||
|
|
||||||
AddImageCommand.ExecuteAction = AddImage;
|
AddImageCommand.ExecuteAction += AddImage;
|
||||||
ChangeImageCommand.ExecuteAction = ChangeImage;
|
ChangeImageCommand.ExecuteAction += ChangeImage;
|
||||||
AddLangCommand.ExecuteAction = AddLang;
|
AddLangCommand.ExecuteAction += AddLang;
|
||||||
EditLangCommand.ExecuteAction = EditLang;
|
EditLangCommand.ExecuteAction += EditLang;
|
||||||
RemoveLangCommand.ExecuteAction = RemoveLang;
|
RemoveLangCommand.ExecuteAction += RemoveLang;
|
||||||
|
SaveCommand.ExecuteAction += Save;
|
||||||
|
SaveToCommand.ExecuteAction += SaveTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void I18nData_AddLang(string lang)
|
private void I18nData_AddLang(string lang)
|
||||||
@ -135,4 +168,14 @@ public class ModEditWindowVM
|
|||||||
return;
|
return;
|
||||||
I18nHelper.Current.CultureNames.Remove(oldLang);
|
I18nHelper.Current.CultureNames.Remove(oldLang);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Save()
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveTo()
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
using HKW.HKWViewModels.SimpleObservable;
|
using HKW.HKWViewModels.SimpleObservable;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -10,26 +12,56 @@ using VPet.Plugin.ModMaker.Views.ModEdit;
|
|||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.ViewModels;
|
namespace VPet.Plugin.ModMaker.ViewModels;
|
||||||
|
|
||||||
public class WindowVM_ModMaker
|
public class ModMakerWindowVM
|
||||||
{
|
{
|
||||||
public ModMakerWindow ModMakerWindow { get; }
|
public ModMakerWindow ModMakerWindow { get; }
|
||||||
|
|
||||||
public ModEditWindow ModEditWindow { get; private set; }
|
public ModEditWindow ModEditWindow { get; private set; }
|
||||||
|
|
||||||
public ObservableCommand CreateNewModCommand { get; set; } =
|
public ObservableCommand CreateNewModCommand { get; set; } = new();
|
||||||
new() { ExecuteAction = () => { } };
|
|
||||||
|
|
||||||
public WindowVM_ModMaker() { }
|
public ObservableValue<string> ModFilterText { get; } = new();
|
||||||
|
|
||||||
public WindowVM_ModMaker(ModMakerWindow window)
|
public ObservableCollection<ModInfoModel> ShowMods { get; set; }
|
||||||
|
public ObservableCollection<ModInfoModel> Mods { get; } = new();
|
||||||
|
|
||||||
|
public ModMakerWindowVM() { }
|
||||||
|
|
||||||
|
public ModMakerWindowVM(ModMakerWindow window)
|
||||||
{
|
{
|
||||||
|
LoadMods();
|
||||||
ModMakerWindow = window;
|
ModMakerWindow = window;
|
||||||
|
ShowMods = Mods;
|
||||||
CreateNewModCommand.ExecuteAction = CreateNewMod;
|
CreateNewModCommand.ExecuteAction = CreateNewMod;
|
||||||
|
ModFilterText.ValueChanged += ModFilterText_ValueChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateNewMod()
|
private void LoadMods()
|
||||||
{
|
{
|
||||||
I18nHelper.Current = new();
|
var dic = Directory.CreateDirectory(ModMakerInfo.BaseDirectory);
|
||||||
|
foreach (var modDic in dic.EnumerateDirectories())
|
||||||
|
{
|
||||||
|
var mod = new ModLoader(modDic);
|
||||||
|
if (mod.SuccessLoad is false)
|
||||||
|
continue;
|
||||||
|
var modModel = new ModInfoModel(mod);
|
||||||
|
Mods.Add(modModel);
|
||||||
|
if (mod.OtherI18nDatas.Count == 0)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ModFilterText_ValueChanged(string value)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
ShowMods = Mods;
|
||||||
|
else
|
||||||
|
ShowMods = new(Mods.Where(i => i.Id.Value.Contains(value)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CreateNewMod()
|
||||||
|
{
|
||||||
|
// I18nHelper.Current = new();
|
||||||
ModEditWindow = new();
|
ModEditWindow = new();
|
||||||
ModEditWindow.Show();
|
ModEditWindow.Show();
|
||||||
ModMakerWindow.Hide();
|
ModMakerWindow.Hide();
|
||||||
|
@ -11,6 +11,7 @@ using System.Windows.Input;
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using System.Windows.Shapes;
|
using System.Windows.Shapes;
|
||||||
|
using VPet.Plugin.ModMaker.Models;
|
||||||
using VPet.Plugin.ModMaker.ViewModels.ModEdit.ClickTextEdit;
|
using VPet.Plugin.ModMaker.ViewModels.ModEdit.ClickTextEdit;
|
||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.Views.ModEdit.ClickTextEdit;
|
namespace VPet.Plugin.ModMaker.Views.ModEdit.ClickTextEdit;
|
||||||
@ -41,7 +42,11 @@ public partial class ClickTextEditWindow : Window
|
|||||||
MessageBox.Show("Id不可为空", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
MessageBox.Show("Id不可为空", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ViewModel.ClickTexts.Any(i => i.Id.Value == ViewModel.ClickText.Value.Id.Value))
|
if (
|
||||||
|
ModInfoModel.Current.ClickTexts.Any(
|
||||||
|
i => i.Id.Value == ViewModel.ClickText.Value.Id.Value
|
||||||
|
)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
MessageBox.Show("此Id已存在", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
MessageBox.Show("此Id已存在", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
return;
|
return;
|
||||||
|
@ -12,6 +12,7 @@ using System.Windows.Input;
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using System.Windows.Shapes;
|
using System.Windows.Shapes;
|
||||||
|
using VPet.Plugin.ModMaker.Models;
|
||||||
using VPet.Plugin.ModMaker.ViewModels.ModEdit.FoodEdit;
|
using VPet.Plugin.ModMaker.ViewModels.ModEdit.FoodEdit;
|
||||||
using VPet_Simulator.Windows.Interface;
|
using VPet_Simulator.Windows.Interface;
|
||||||
|
|
||||||
@ -60,7 +61,7 @@ public partial class FoodEditWindow : Window
|
|||||||
MessageBox.Show("图像不可为空", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
MessageBox.Show("图像不可为空", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ViewModel.Foods.Any(i => i.Id.Value == ViewModel.Food.Value.Id.Value))
|
if (ModInfoModel.Current.Foods.Any(i => i.Id.Value == ViewModel.Food.Value.Id.Value))
|
||||||
{
|
{
|
||||||
MessageBox.Show("此Id已存在", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
MessageBox.Show("此Id已存在", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
return;
|
return;
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
AutoGenerateColumns="False"
|
AutoGenerateColumns="False"
|
||||||
CanUserAddRows="False"
|
CanUserAddRows="False"
|
||||||
GridLinesVisibility="Horizontal"
|
GridLinesVisibility="Horizontal"
|
||||||
ItemsSource="{Binding Foods}"
|
ItemsSource="{Binding ShowFoods.Value}"
|
||||||
MouseDoubleClick="DataGrid_Food_MouseDoubleClick"
|
MouseDoubleClick="DataGrid_Food_MouseDoubleClick"
|
||||||
RowDetailsVisibilityMode="Visible"
|
RowDetailsVisibilityMode="Visible"
|
||||||
RowHeight="64"
|
RowHeight="64"
|
||||||
@ -76,7 +76,7 @@
|
|||||||
Height="64"
|
Height="64"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Source="{Binding Image.Value, IsAsync=True}"
|
Source="{Binding Image.Value}"
|
||||||
Stretch="Uniform">
|
Stretch="Uniform">
|
||||||
<Image.ToolTip>
|
<Image.ToolTip>
|
||||||
<Image
|
<Image
|
||||||
@ -84,7 +84,7 @@
|
|||||||
Height="256"
|
Height="256"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Source="{Binding Image.Value, IsAsync=True}"
|
Source="{Binding Image.Value}"
|
||||||
Stretch="Uniform" />
|
Stretch="Uniform" />
|
||||||
</Image.ToolTip>
|
</Image.ToolTip>
|
||||||
</Image>
|
</Image>
|
||||||
@ -104,7 +104,7 @@
|
|||||||
Binding="{Binding Type.Value}"
|
Binding="{Binding Type.Value}"
|
||||||
CanUserSort="True"
|
CanUserSort="True"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
SortMemberPath="Type">
|
SortMemberPath="Type.Value">
|
||||||
<DataGridTextColumn.Header>
|
<DataGridTextColumn.Header>
|
||||||
<Label Content="食物类型" />
|
<Label Content="食物类型" />
|
||||||
</DataGridTextColumn.Header>
|
</DataGridTextColumn.Header>
|
||||||
|
@ -12,6 +12,7 @@ using System.Windows.Media;
|
|||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using System.Windows.Navigation;
|
using System.Windows.Navigation;
|
||||||
using System.Windows.Shapes;
|
using System.Windows.Shapes;
|
||||||
|
using VPet.Plugin.ModMaker.Models;
|
||||||
using VPet.Plugin.ModMaker.ViewModels.ModEdit.LowTextEdit;
|
using VPet.Plugin.ModMaker.ViewModels.ModEdit.LowTextEdit;
|
||||||
|
|
||||||
namespace VPet.Plugin.ModMaker.Views.ModEdit.LowTextEdit;
|
namespace VPet.Plugin.ModMaker.Views.ModEdit.LowTextEdit;
|
||||||
@ -42,7 +43,7 @@ public partial class LowTextEditWindow : Window
|
|||||||
MessageBox.Show("Id不可为空", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
MessageBox.Show("Id不可为空", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ViewModel.LowTexts.Any(i => i.Id.Value == ViewModel.LowText.Value.Id.Value))
|
if (ModInfoModel.Current.LowTexts.Any(i => i.Id.Value == ViewModel.LowText.Value.Id.Value))
|
||||||
{
|
{
|
||||||
MessageBox.Show("此Id已存在", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
MessageBox.Show("此Id已存在", "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
return;
|
return;
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
</Style.Triggers>
|
</Style.Triggers>
|
||||||
</Style>
|
</Style>
|
||||||
</Grid.Style>
|
</Grid.Style>
|
||||||
<Grid>
|
<Grid MaxWidth="256">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
@ -130,8 +130,12 @@
|
|||||||
x:Name="TextBox_Description"
|
x:Name="TextBox_Description"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
|
HorizontalContentAlignment="Left"
|
||||||
|
VerticalContentAlignment="Top"
|
||||||
|
d:Text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||||
pu:TextBoxHelper.Watermark="模组介绍"
|
pu:TextBoxHelper.Watermark="模组介绍"
|
||||||
Text="{Binding ModInfo.Value.CurrentI18nData.Value.Description.Value}" />
|
Text="{Binding ModInfo.Value.CurrentI18nData.Value.Description.Value}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</Grid>
|
</Grid>
|
||||||
@ -216,6 +220,7 @@
|
|||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Button
|
<Button
|
||||||
x:Name="Button_AddLang"
|
x:Name="Button_AddLang"
|
||||||
@ -235,6 +240,10 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</ListBox.ItemContainerStyle>
|
</ListBox.ItemContainerStyle>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
|
<StackPanel Grid.Row="2">
|
||||||
|
<Button x:Name="Button_Save" Content="保存" />
|
||||||
|
<Button x:Name="Button_SaveTo" Content="保存至" />
|
||||||
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Window>
|
</Window>
|
||||||
|
@ -29,7 +29,7 @@ namespace VPet.Plugin.ModMaker.Views.ModEdit;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class ModEditWindow : Window
|
public partial class ModEditWindow : Window
|
||||||
{
|
{
|
||||||
public ModEditWindowVM ViewModel => (ModEditWindowVM)this.DataContext;
|
public ModEditWindowVM ViewModel => (ModEditWindowVM)DataContext;
|
||||||
public FoodPage FoodPage { get; } = new();
|
public FoodPage FoodPage { get; } = new();
|
||||||
public LowTextPage LowTextPage { get; } = new();
|
public LowTextPage LowTextPage { get; } = new();
|
||||||
public ClickTextPage ClickTextPage { get; } = new();
|
public ClickTextPage ClickTextPage { get; } = new();
|
||||||
@ -37,11 +37,16 @@ public partial class ModEditWindow : Window
|
|||||||
public ModEditWindow()
|
public ModEditWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
DataContext = new ModEditWindowVM(this);
|
|
||||||
Closed += Window_ModEdit_Closed;
|
Closed += Window_ModEdit_Closed;
|
||||||
|
DataContext = new ModEditWindowVM(this);
|
||||||
|
|
||||||
FoodPage.ViewModel.Foods.CollectionChanged += Foods_CollectionChanged;
|
FoodPage.ViewModel.Foods.CollectionChanged += Foods_CollectionChanged;
|
||||||
LowTextPage.ViewModel.LowTexts.CollectionChanged += LowTexts_CollectionChanged;
|
LowTextPage.ViewModel.LowTexts.CollectionChanged += LowTexts_CollectionChanged;
|
||||||
ClickTextPage.ViewModel.ClickTexts.CollectionChanged += ClickTexts_CollectionChanged;
|
ClickTextPage.ViewModel.ClickTexts.CollectionChanged += ClickTexts_CollectionChanged;
|
||||||
|
TabItem_ClickText.Header =
|
||||||
|
$"{TabItem_ClickText.Tag} ({ClickTextPage.ViewModel.ClickTexts.Count})";
|
||||||
|
TabItem_LowText.Header = $"{TabItem_LowText.Tag} ({LowTextPage.ViewModel.LowTexts.Count})";
|
||||||
|
TabItem_Food.Header = $"{TabItem_Food.Tag} ({FoodPage.ViewModel.Foods.Count})";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ClickTexts_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
private void ClickTexts_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||||
|
@ -221,29 +221,112 @@
|
|||||||
</Label.Style>
|
</Label.Style>
|
||||||
</Label>
|
</Label>
|
||||||
</Grid>
|
</Grid>
|
||||||
<!--<Grid Grid.Row="1" >
|
<Grid Grid.Row="1">
|
||||||
<TextBox/>
|
<Grid.ColumnDefinitions>
|
||||||
</Grid>-->
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Label Content="宠物Id:" />
|
||||||
|
<TextBox
|
||||||
|
Grid.Column="1"
|
||||||
|
pu:TextBoxHelper.Watermark="宠物Id"
|
||||||
|
Text="{Binding Pet.Value.Id.Value}" />
|
||||||
|
<Label Grid.Row="1" Content="宠物名称:" />
|
||||||
|
<TextBox
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="1"
|
||||||
|
pu:TextBoxHelper.Watermark="宠物名称"
|
||||||
|
Text="{Binding Pet.Value.CurrentI18nData.Value.Name.Value}" />
|
||||||
|
<Label Grid.Row="2" Content="宠物描述:" />
|
||||||
|
<TextBox
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.Column="1"
|
||||||
|
pu:TextBoxHelper.Watermark="宠物描述"
|
||||||
|
Text="{Binding Pet.Value.CurrentI18nData.Value.Description.Value}" />
|
||||||
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid Grid.Column="1">
|
<Grid Grid.Column="1">
|
||||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<ToggleButton
|
<Grid>
|
||||||
x:Name="ToggleButton_TouchHead"
|
<Grid.ColumnDefinitions>
|
||||||
Padding="5"
|
<ColumnDefinition Width="Auto" />
|
||||||
HorizontalContentAlignment="Stretch"
|
<ColumnDefinition />
|
||||||
DataContext="{Binding Pet.Value.TouchHeadRect.Value}">
|
</Grid.ColumnDefinitions>
|
||||||
|
<ToggleButton
|
||||||
|
x:Name="ToggleButton_TouchHead"
|
||||||
|
Padding="5"
|
||||||
|
HorizontalContentAlignment="Stretch"
|
||||||
|
Content="TouchHead:" />
|
||||||
|
<Grid Grid.Column="1" Margin="5">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Label Background="{x:Null}" Content="x:" />
|
||||||
|
<pu:NumberInput
|
||||||
|
Grid.Column="1"
|
||||||
|
d:Value="100"
|
||||||
|
Value="{Binding Pet.Value.TouchHeadRect.Value.X.Value, Mode=TwoWay}" />
|
||||||
|
<Label
|
||||||
|
Grid.Column="2"
|
||||||
|
Background="{x:Null}"
|
||||||
|
Content="y:" />
|
||||||
|
<pu:NumberInput
|
||||||
|
Grid.Column="3"
|
||||||
|
d:Value="100"
|
||||||
|
Value="{Binding Pet.Value.TouchHeadRect.Value.Y.Value, Mode=TwoWay}" />
|
||||||
|
<Label
|
||||||
|
Grid.Row="1"
|
||||||
|
Background="{x:Null}"
|
||||||
|
Content="w:" />
|
||||||
|
<pu:NumberInput
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="1"
|
||||||
|
d:Value="100"
|
||||||
|
Value="{Binding Pet.Value.TouchHeadRect.Value.Width.Value, Mode=TwoWay}" />
|
||||||
|
<Label
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="2"
|
||||||
|
Background="{x:Null}"
|
||||||
|
Content="h:" />
|
||||||
|
<pu:NumberInput
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="3"
|
||||||
|
d:Value="100"
|
||||||
|
Value="{Binding Pet.Value.TouchHeadRect.Value.Height.Value, Mode=TwoWay}" />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
<Expander Header="TouchRaisedRect">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Label
|
<Grid.RowDefinitions>
|
||||||
HorizontalContentAlignment="Center"
|
<RowDefinition Height="Auto" />
|
||||||
VerticalContentAlignment="Center"
|
<RowDefinition Height="Auto" />
|
||||||
Background="{x:Null}"
|
<RowDefinition Height="Auto" />
|
||||||
Content="TouchHead:" />
|
<RowDefinition Height="Auto" />
|
||||||
<Grid Grid.Column="1">
|
</Grid.RowDefinitions>
|
||||||
|
<ToggleButton
|
||||||
|
x:Name="ToggleButton_TouchRaisedRect_HappyState"
|
||||||
|
Padding="5"
|
||||||
|
HorizontalContentAlignment="Stretch"
|
||||||
|
d:IsChecked="True"
|
||||||
|
Content="HappyState:" />
|
||||||
|
<Grid Grid.Column="1" Margin="5">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
@ -258,7 +341,7 @@
|
|||||||
<pu:NumberInput
|
<pu:NumberInput
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
d:Value="100"
|
d:Value="100"
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Happy.Value.X.Value, Mode=TwoWay}" />
|
||||||
<Label
|
<Label
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Background="{x:Null}"
|
Background="{x:Null}"
|
||||||
@ -266,7 +349,7 @@
|
|||||||
<pu:NumberInput
|
<pu:NumberInput
|
||||||
Grid.Column="3"
|
Grid.Column="3"
|
||||||
d:Value="100"
|
d:Value="100"
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Happy.Value.X.Value, Mode=TwoWay}" />
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Background="{x:Null}"
|
Background="{x:Null}"
|
||||||
@ -275,7 +358,7 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
d:Value="100"
|
d:Value="100"
|
||||||
Value="{Binding Width.Value, Mode=TwoWay}" />
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Happy.Value.X.Value, Mode=TwoWay}" />
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
@ -285,433 +368,317 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="3"
|
Grid.Column="3"
|
||||||
d:Value="100"
|
d:Value="100"
|
||||||
Value="{Binding Height.Value, Mode=TwoWay}" />
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Happy.Value.X.Value, Mode=TwoWay}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
<Expander Header="TouchRaisedRect">
|
|
||||||
<StackPanel>
|
|
||||||
<ToggleButton
|
|
||||||
x:Name="ToggleButton_TouchRaisedRect_HappyState"
|
|
||||||
Padding="5"
|
|
||||||
HorizontalContentAlignment="Stretch"
|
|
||||||
d:IsChecked="True"
|
|
||||||
DataContext="{Binding Pet.Value.TouchRaisedRect.Value.Happy.Value}">
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<Label
|
|
||||||
HorizontalContentAlignment="Center"
|
|
||||||
VerticalContentAlignment="Center"
|
|
||||||
Background="{x:Null}"
|
|
||||||
Content="HappyState:" />
|
|
||||||
<Grid Grid.Column="1">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<Label Background="{x:Null}" Content="x:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Column="1"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
|
||||||
<Label
|
|
||||||
Grid.Column="2"
|
|
||||||
Background="{x:Null}"
|
|
||||||
Content="y:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
|
||||||
<Label
|
|
||||||
Grid.Row="1"
|
|
||||||
Background="{x:Null}"
|
|
||||||
Content="w:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.Column="1"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Width.Value, Mode=TwoWay}" />
|
|
||||||
<Label
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.Column="2"
|
|
||||||
Background="{x:Null}"
|
|
||||||
Content="h:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Height.Value, Mode=TwoWay}" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
x:Name="ToggleButton_TouchRaisedRect_NomalState"
|
x:Name="ToggleButton_TouchRaisedRect_NomalState"
|
||||||
|
Grid.Row="1"
|
||||||
Padding="5"
|
Padding="5"
|
||||||
HorizontalContentAlignment="Stretch"
|
HorizontalContentAlignment="Stretch"
|
||||||
d:IsChecked="True"
|
d:IsChecked="True"
|
||||||
DataContext="{Binding Pet.Value.TouchRaisedRect.Value.Nomal.Value}">
|
Content="NomalState:" />
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.ColumnDefinitions>
|
Grid.Row="1"
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
Margin="5">
|
||||||
</Grid.ColumnDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<Label
|
<RowDefinition />
|
||||||
HorizontalContentAlignment="Center"
|
<RowDefinition />
|
||||||
VerticalContentAlignment="Center"
|
</Grid.RowDefinitions>
|
||||||
Background="{x:Null}"
|
<Grid.ColumnDefinitions>
|
||||||
Content="NomalState:" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<Grid Grid.Column="1">
|
<ColumnDefinition />
|
||||||
<Grid.RowDefinitions>
|
<ColumnDefinition Width="Auto" />
|
||||||
<RowDefinition />
|
<ColumnDefinition />
|
||||||
<RowDefinition />
|
</Grid.ColumnDefinitions>
|
||||||
</Grid.RowDefinitions>
|
<Label Background="{x:Null}" Content="x:" />
|
||||||
<Grid.ColumnDefinitions>
|
<pu:NumberInput
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
d:Value="100"
|
||||||
<ColumnDefinition Width="Auto" />
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Nomal.Value.X.Value, Mode=TwoWay}" />
|
||||||
<ColumnDefinition />
|
<Label
|
||||||
</Grid.ColumnDefinitions>
|
Grid.Column="2"
|
||||||
<Label Background="{x:Null}" Content="x:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="y:" />
|
||||||
Grid.Column="1"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Column="3"
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
d:Value="100"
|
||||||
<Label
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Nomal.Value.Y.Value, Mode=TwoWay}" />
|
||||||
Grid.Column="2"
|
<Label
|
||||||
Background="{x:Null}"
|
Grid.Row="1"
|
||||||
Content="y:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="w:" />
|
||||||
Grid.Column="3"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Row="1"
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
Grid.Column="1"
|
||||||
<Label
|
d:Value="100"
|
||||||
Grid.Row="1"
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Nomal.Value.Width.Value, Mode=TwoWay}" />
|
||||||
Background="{x:Null}"
|
<Label
|
||||||
Content="w:" />
|
Grid.Row="1"
|
||||||
<pu:NumberInput
|
Grid.Column="2"
|
||||||
Grid.Row="1"
|
Background="{x:Null}"
|
||||||
Grid.Column="1"
|
Content="h:" />
|
||||||
d:Value="100"
|
<pu:NumberInput
|
||||||
Value="{Binding Width.Value, Mode=TwoWay}" />
|
Grid.Row="1"
|
||||||
<Label
|
Grid.Column="3"
|
||||||
Grid.Row="1"
|
d:Value="100"
|
||||||
Grid.Column="2"
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Nomal.Value.Height.Value, Mode=TwoWay}" />
|
||||||
Background="{x:Null}"
|
</Grid>
|
||||||
Content="h:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Height.Value, Mode=TwoWay}" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
x:Name="ToggleButton_TouchRaisedRect_PoorConditionState"
|
x:Name="ToggleButton_TouchRaisedRect_PoorConditionState"
|
||||||
|
Grid.Row="2"
|
||||||
Padding="5"
|
Padding="5"
|
||||||
HorizontalContentAlignment="Stretch"
|
HorizontalContentAlignment="Stretch"
|
||||||
d:IsChecked="True"
|
d:IsChecked="True"
|
||||||
DataContext="{Binding Pet.Value.TouchRaisedRect.Value.PoorCondition.Value}">
|
Content="PoorConditionState:" />
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.ColumnDefinitions>
|
Grid.Row="2"
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
Margin="5">
|
||||||
</Grid.ColumnDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<Label
|
<RowDefinition />
|
||||||
HorizontalContentAlignment="Center"
|
<RowDefinition />
|
||||||
VerticalContentAlignment="Center"
|
</Grid.RowDefinitions>
|
||||||
Background="{x:Null}"
|
<Grid.ColumnDefinitions>
|
||||||
Content="PoorConditionState:" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<Grid Grid.Column="1">
|
<ColumnDefinition />
|
||||||
<Grid.RowDefinitions>
|
<ColumnDefinition Width="Auto" />
|
||||||
<RowDefinition />
|
<ColumnDefinition />
|
||||||
<RowDefinition />
|
</Grid.ColumnDefinitions>
|
||||||
</Grid.RowDefinitions>
|
<Label Background="{x:Null}" Content="x:" />
|
||||||
<Grid.ColumnDefinitions>
|
<pu:NumberInput
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
d:Value="100"
|
||||||
<ColumnDefinition Width="Auto" />
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.PoorCondition.Value.X.Value, Mode=TwoWay}" />
|
||||||
<ColumnDefinition />
|
<Label
|
||||||
</Grid.ColumnDefinitions>
|
Grid.Column="2"
|
||||||
<Label Background="{x:Null}" Content="x:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="y:" />
|
||||||
Grid.Column="1"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Column="3"
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
d:Value="100"
|
||||||
<Label
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.PoorCondition.Value.Y.Value, Mode=TwoWay}" />
|
||||||
Grid.Column="2"
|
<Label
|
||||||
Background="{x:Null}"
|
Grid.Row="1"
|
||||||
Content="y:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="w:" />
|
||||||
Grid.Column="3"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Row="1"
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
Grid.Column="1"
|
||||||
<Label
|
d:Value="100"
|
||||||
Grid.Row="1"
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.PoorCondition.Value.Width.Value, Mode=TwoWay}" />
|
||||||
Background="{x:Null}"
|
<Label
|
||||||
Content="w:" />
|
Grid.Row="1"
|
||||||
<pu:NumberInput
|
Grid.Column="2"
|
||||||
Grid.Row="1"
|
Background="{x:Null}"
|
||||||
Grid.Column="1"
|
Content="h:" />
|
||||||
d:Value="100"
|
<pu:NumberInput
|
||||||
Value="{Binding Width.Value, Mode=TwoWay}" />
|
Grid.Row="1"
|
||||||
<Label
|
Grid.Column="3"
|
||||||
Grid.Row="1"
|
d:Value="100"
|
||||||
Grid.Column="2"
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.PoorCondition.Value.Height.Value, Mode=TwoWay}" />
|
||||||
Background="{x:Null}"
|
</Grid>
|
||||||
Content="h:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Height.Value, Mode=TwoWay}" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
x:Name="ToggleButton_TouchRaisedRect_IllState"
|
x:Name="ToggleButton_TouchRaisedRect_IllState"
|
||||||
|
Grid.Row="3"
|
||||||
Padding="5"
|
Padding="5"
|
||||||
HorizontalContentAlignment="Stretch"
|
HorizontalContentAlignment="Stretch"
|
||||||
d:IsChecked="True"
|
d:IsChecked="True"
|
||||||
DataContext="{Binding Pet.Value.TouchRaisedRect.Value.Ill.Value}">
|
Content="IllState:" />
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.ColumnDefinitions>
|
Grid.Row="3"
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
Margin="5">
|
||||||
</Grid.ColumnDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<Label
|
<RowDefinition />
|
||||||
HorizontalContentAlignment="Center"
|
<RowDefinition />
|
||||||
VerticalContentAlignment="Center"
|
</Grid.RowDefinitions>
|
||||||
Background="{x:Null}"
|
<Grid.ColumnDefinitions>
|
||||||
Content="IllState:" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<Grid Grid.Column="1">
|
<ColumnDefinition />
|
||||||
<Grid.RowDefinitions>
|
<ColumnDefinition Width="Auto" />
|
||||||
<RowDefinition />
|
<ColumnDefinition />
|
||||||
<RowDefinition />
|
</Grid.ColumnDefinitions>
|
||||||
</Grid.RowDefinitions>
|
<Label Background="{x:Null}" Content="x:" />
|
||||||
<Grid.ColumnDefinitions>
|
<pu:NumberInput
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
d:Value="100"
|
||||||
<ColumnDefinition Width="Auto" />
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Ill.Value.X.Value, Mode=TwoWay}" />
|
||||||
<ColumnDefinition />
|
<Label
|
||||||
</Grid.ColumnDefinitions>
|
Grid.Column="2"
|
||||||
<Label Background="{x:Null}" Content="x:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="y:" />
|
||||||
Grid.Column="1"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Column="3"
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
d:Value="100"
|
||||||
<Label
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Ill.Value.Y.Value, Mode=TwoWay}" />
|
||||||
Grid.Column="2"
|
<Label
|
||||||
Background="{x:Null}"
|
Grid.Row="1"
|
||||||
Content="y:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="w:" />
|
||||||
Grid.Column="3"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Row="1"
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
Grid.Column="1"
|
||||||
<Label
|
d:Value="100"
|
||||||
Grid.Row="1"
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Ill.Value.Width.Value, Mode=TwoWay}" />
|
||||||
Background="{x:Null}"
|
<Label
|
||||||
Content="w:" />
|
Grid.Row="1"
|
||||||
<pu:NumberInput
|
Grid.Column="2"
|
||||||
Grid.Row="1"
|
Background="{x:Null}"
|
||||||
Grid.Column="1"
|
Content="h:" />
|
||||||
d:Value="100"
|
<pu:NumberInput
|
||||||
Value="{Binding Width.Value, Mode=TwoWay}" />
|
Grid.Row="1"
|
||||||
<Label
|
Grid.Column="3"
|
||||||
Grid.Row="1"
|
d:Value="100"
|
||||||
Grid.Column="2"
|
Value="{Binding Pet.Value.TouchRaisedRect.Value.Ill.Value.Height.Value, Mode=TwoWay}" />
|
||||||
Background="{x:Null}"
|
</Grid>
|
||||||
Content="h:" />
|
</Grid>
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Height.Value, Mode=TwoWay}" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
</StackPanel>
|
|
||||||
</Expander>
|
</Expander>
|
||||||
<Expander Header="RaisePoint">
|
<Expander Header="RaisePoint">
|
||||||
<StackPanel>
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
x:Name="ToggleButton_RaisePoint_Happy"
|
x:Name="ToggleButton_RaisePoint_Happy"
|
||||||
Padding="5"
|
Padding="5"
|
||||||
HorizontalContentAlignment="Stretch"
|
HorizontalContentAlignment="Stretch"
|
||||||
DataContext="{Binding Pet.Value.RaisePoint.Value.Happy.Value}">
|
Content="HappyState:" />
|
||||||
<Grid>
|
<Grid Grid.Column="1" Margin="5">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<RowDefinition />
|
||||||
<ColumnDefinition />
|
<RowDefinition />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Label
|
<Grid.ColumnDefinitions>
|
||||||
HorizontalContentAlignment="Center"
|
<ColumnDefinition Width="Auto" />
|
||||||
VerticalContentAlignment="Center"
|
<ColumnDefinition />
|
||||||
Background="{x:Null}"
|
<ColumnDefinition Width="Auto" />
|
||||||
Content="HappyState:" />
|
<ColumnDefinition />
|
||||||
<Grid Grid.Column="1">
|
</Grid.ColumnDefinitions>
|
||||||
<Grid.RowDefinitions>
|
<Label Background="{x:Null}" Content="x:" />
|
||||||
<RowDefinition />
|
<pu:NumberInput
|
||||||
<RowDefinition />
|
Grid.Column="1"
|
||||||
</Grid.RowDefinitions>
|
d:Value="100"
|
||||||
<Grid.ColumnDefinitions>
|
Value="{Binding Pet.Value.RaisePoint.Value.Happy.Value.X.Value, Mode=TwoWay}" />
|
||||||
<ColumnDefinition Width="Auto" />
|
<Label
|
||||||
<ColumnDefinition />
|
Grid.Column="2"
|
||||||
<ColumnDefinition Width="Auto" />
|
Background="{x:Null}"
|
||||||
<ColumnDefinition />
|
Content="y:" />
|
||||||
</Grid.ColumnDefinitions>
|
<pu:NumberInput
|
||||||
<Label Background="{x:Null}" Content="x:" />
|
Grid.Column="3"
|
||||||
<pu:NumberInput
|
d:Value="100"
|
||||||
Grid.Column="1"
|
Value="{Binding Pet.Value.RaisePoint.Value.Happy.Value.Y.Value, Mode=TwoWay}" />
|
||||||
d:Value="100"
|
</Grid>
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
|
||||||
<Label
|
|
||||||
Grid.Column="2"
|
|
||||||
Background="{x:Null}"
|
|
||||||
Content="y:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
x:Name="ToggleButton_RaisePoint_Nomal"
|
x:Name="ToggleButton_RaisePoint_Nomal"
|
||||||
|
Grid.Row="1"
|
||||||
Padding="5"
|
Padding="5"
|
||||||
HorizontalContentAlignment="Stretch"
|
HorizontalContentAlignment="Stretch"
|
||||||
DataContext="{Binding Pet.Value.RaisePoint.Value.Nomal.Value}">
|
Content="NomalState:" />
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.ColumnDefinitions>
|
Grid.Row="1"
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
Margin="5">
|
||||||
</Grid.ColumnDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<Label
|
<RowDefinition />
|
||||||
HorizontalContentAlignment="Center"
|
<RowDefinition />
|
||||||
VerticalContentAlignment="Center"
|
</Grid.RowDefinitions>
|
||||||
Background="{x:Null}"
|
<Grid.ColumnDefinitions>
|
||||||
Content="NomalState:" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<Grid Grid.Column="1">
|
<ColumnDefinition />
|
||||||
<Grid.RowDefinitions>
|
<ColumnDefinition Width="Auto" />
|
||||||
<RowDefinition />
|
<ColumnDefinition />
|
||||||
<RowDefinition />
|
</Grid.ColumnDefinitions>
|
||||||
</Grid.RowDefinitions>
|
<Label Background="{x:Null}" Content="x:" />
|
||||||
<Grid.ColumnDefinitions>
|
<pu:NumberInput
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
d:Value="100"
|
||||||
<ColumnDefinition Width="Auto" />
|
Value="{Binding Pet.Value.RaisePoint.Value.Nomal.Value.X.Value, Mode=TwoWay}" />
|
||||||
<ColumnDefinition />
|
<Label
|
||||||
</Grid.ColumnDefinitions>
|
Grid.Column="2"
|
||||||
<Label Background="{x:Null}" Content="x:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="y:" />
|
||||||
Grid.Column="1"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Column="3"
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
d:Value="100"
|
||||||
<Label
|
Value="{Binding Pet.Value.RaisePoint.Value.Nomal.Value.Y.Value, Mode=TwoWay}" />
|
||||||
Grid.Column="2"
|
</Grid>
|
||||||
Background="{x:Null}"
|
|
||||||
Content="y:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
x:Name="ToggleButton_RaisePoint_PoorCondition"
|
x:Name="ToggleButton_RaisePoint_PoorCondition"
|
||||||
|
Grid.Row="2"
|
||||||
Padding="5"
|
Padding="5"
|
||||||
HorizontalContentAlignment="Stretch"
|
HorizontalContentAlignment="Stretch"
|
||||||
DataContext="{Binding Pet.Value.RaisePoint.Value.PoorCondition.Value}">
|
Content="PoorConditionState:" />
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.ColumnDefinitions>
|
Grid.Row="2"
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
Margin="5">
|
||||||
</Grid.ColumnDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<Label
|
<RowDefinition />
|
||||||
HorizontalContentAlignment="Center"
|
<RowDefinition />
|
||||||
VerticalContentAlignment="Center"
|
</Grid.RowDefinitions>
|
||||||
Background="{x:Null}"
|
<Grid.ColumnDefinitions>
|
||||||
Content="PoorConditionState:" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<Grid Grid.Column="1">
|
<ColumnDefinition />
|
||||||
<Grid.RowDefinitions>
|
<ColumnDefinition Width="Auto" />
|
||||||
<RowDefinition />
|
<ColumnDefinition />
|
||||||
<RowDefinition />
|
</Grid.ColumnDefinitions>
|
||||||
</Grid.RowDefinitions>
|
<Label Background="{x:Null}" Content="x:" />
|
||||||
<Grid.ColumnDefinitions>
|
<pu:NumberInput
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
d:Value="100"
|
||||||
<ColumnDefinition Width="Auto" />
|
Value="{Binding Pet.Value.RaisePoint.Value.PoorCondition.Value.X.Value, Mode=TwoWay}" />
|
||||||
<ColumnDefinition />
|
<Label
|
||||||
</Grid.ColumnDefinitions>
|
Grid.Column="2"
|
||||||
<Label Background="{x:Null}" Content="x:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="y:" />
|
||||||
Grid.Column="1"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Column="3"
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
d:Value="100"
|
||||||
<Label
|
Value="{Binding Pet.Value.RaisePoint.Value.PoorCondition.Value.Y.Value, Mode=TwoWay}" />
|
||||||
Grid.Column="2"
|
</Grid>
|
||||||
Background="{x:Null}"
|
|
||||||
Content="y:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
x:Name="ToggleButton_RaisePoint_Ill"
|
x:Name="ToggleButton_RaisePoint_Ill"
|
||||||
|
Grid.Row="3"
|
||||||
Padding="5"
|
Padding="5"
|
||||||
HorizontalContentAlignment="Stretch"
|
HorizontalContentAlignment="Stretch"
|
||||||
DataContext="{Binding Pet.Value.RaisePoint.Value.Ill.Value}">
|
Content="IllState:" />
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.ColumnDefinitions>
|
Grid.Row="3"
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
Margin="5">
|
||||||
</Grid.ColumnDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<Label
|
<RowDefinition />
|
||||||
HorizontalContentAlignment="Center"
|
<RowDefinition />
|
||||||
VerticalContentAlignment="Center"
|
</Grid.RowDefinitions>
|
||||||
Background="{x:Null}"
|
<Grid.ColumnDefinitions>
|
||||||
Content="IllState:" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<Grid Grid.Column="1">
|
<ColumnDefinition />
|
||||||
<Grid.RowDefinitions>
|
<ColumnDefinition Width="Auto" />
|
||||||
<RowDefinition />
|
<ColumnDefinition />
|
||||||
<RowDefinition />
|
</Grid.ColumnDefinitions>
|
||||||
</Grid.RowDefinitions>
|
<Label Background="{x:Null}" Content="x:" />
|
||||||
<Grid.ColumnDefinitions>
|
<pu:NumberInput
|
||||||
<ColumnDefinition Width="Auto" />
|
Grid.Column="1"
|
||||||
<ColumnDefinition />
|
d:Value="100"
|
||||||
<ColumnDefinition Width="Auto" />
|
Value="{Binding Pet.Value.RaisePoint.Value.Ill.Value.X.Value, Mode=TwoWay}" />
|
||||||
<ColumnDefinition />
|
<Label
|
||||||
</Grid.ColumnDefinitions>
|
Grid.Column="2"
|
||||||
<Label Background="{x:Null}" Content="x:" />
|
Background="{x:Null}"
|
||||||
<pu:NumberInput
|
Content="y:" />
|
||||||
Grid.Column="1"
|
<pu:NumberInput
|
||||||
d:Value="100"
|
Grid.Column="3"
|
||||||
Value="{Binding X.Value, Mode=TwoWay}" />
|
d:Value="100"
|
||||||
<Label
|
Value="{Binding Pet.Value.RaisePoint.Value.Ill.Value.Y.Value, Mode=TwoWay}" />
|
||||||
Grid.Column="2"
|
</Grid>
|
||||||
Background="{x:Null}"
|
</Grid>
|
||||||
Content="y:" />
|
|
||||||
<pu:NumberInput
|
|
||||||
Grid.Column="3"
|
|
||||||
d:Value="100"
|
|
||||||
Value="{Binding Y.Value, Mode=TwoWay}" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ToggleButton>
|
|
||||||
</StackPanel>
|
|
||||||
</Expander>
|
</Expander>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
FontSize="16"
|
FontSize="16"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<d:Window.DataContext>
|
<d:Window.DataContext>
|
||||||
<vm:WindowVM_ModMaker />
|
<vm:ModMakerWindowVM />
|
||||||
</d:Window.DataContext>
|
</d:Window.DataContext>
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@ -32,7 +32,36 @@
|
|||||||
<ListBox
|
<ListBox
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
d:ItemsSource="{d:SampleData ItemCount=5}"
|
d:ItemsSource="{d:SampleData ItemCount=5}"
|
||||||
Style="{StaticResource SideMenuListBoxStyle}" />
|
ItemsSource="{Binding Mods}"
|
||||||
|
Style="{StaticResource SideMenuListBoxStyle}">
|
||||||
|
<ListBox.ItemContainerStyle>
|
||||||
|
<Style BasedOn="{StaticResource {x:Type ListBoxItem}}" TargetType="ListBoxItem">
|
||||||
|
<Setter Property="Height" Value="64" />
|
||||||
|
<EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_MouseDoubleClick" />
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate>
|
||||||
|
<Grid ToolTip="{Binding Summary.Value}">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Image Width="64" Source="{Binding ModImage.Value}" />
|
||||||
|
<Grid Grid.Column="1">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<TextBlock d:Text="Mod名称" Text="{Binding Id.Value}" />
|
||||||
|
<TextBlock Grid.Row="1" d:Text="Mod描述" />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
</ListBox.ItemContainerStyle>
|
||||||
|
</ListBox>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid Grid.Column="1">
|
<Grid Grid.Column="1">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using LinePutScript;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
@ -24,14 +25,21 @@ namespace VPet.Plugin.ModMaker.Views;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class ModMakerWindow : Window
|
public partial class ModMakerWindow : Window
|
||||||
{
|
{
|
||||||
public WindowVM_ModMaker ViewModel => (WindowVM_ModMaker)DataContext;
|
public ModMakerWindowVM ViewModel => (ModMakerWindowVM)DataContext;
|
||||||
public Models.ModMaker ModMaker { get; set; }
|
|
||||||
public ModEditWindow ModEditWindow { get; set; }
|
public ModEditWindow ModEditWindow { get; set; }
|
||||||
|
public Models.ModMaker ModMaker { get; internal set; }
|
||||||
|
|
||||||
public ModMakerWindow()
|
public ModMakerWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
DataContext = new WindowVM_ModMaker(this);
|
DataContext = new ModMakerWindowVM(this);
|
||||||
new PetEditWindow().Show();
|
}
|
||||||
|
|
||||||
|
private void ListBoxItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is not ListBoxItem item)
|
||||||
|
return;
|
||||||
|
ModInfoModel.Current = (ModInfoModel)item.DataContext;
|
||||||
|
ViewModel.CreateNewMod();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<package id="LinePutScript" version="1.9.2" targetFramework="net462" />
|
<package id="LinePutScript" version="1.9.2" targetFramework="net462" />
|
||||||
<package id="LinePutScript.Localization.WPF" version="1.0.6" targetFramework="net462" />
|
<package id="LinePutScript.Localization.WPF" version="1.0.6" targetFramework="net462" />
|
||||||
<package id="Panuon.WPF" version="1.0.2" targetFramework="net462" />
|
<package id="Panuon.WPF" version="1.0.2" targetFramework="net462" />
|
||||||
<package id="Panuon.WPF.UI" version="1.1.15.6" targetFramework="net462" />
|
<package id="Panuon.WPF.UI" version="1.1.15.7" targetFramework="net462" />
|
||||||
<package id="VPet-Simulator.Core" version="1.0.0" targetFramework="net462" />
|
<package id="VPet-Simulator.Core" version="1.0.2" targetFramework="net462" />
|
||||||
<package id="VPet-Simulator.Windows.Interface" version="1.0.0" targetFramework="net462" />
|
<package id="VPet-Simulator.Windows.Interface" version="1.0.2" targetFramework="net462" />
|
||||||
</packages>
|
</packages>
|
Loading…
Reference in New Issue
Block a user