mirror of
https://github.com/LorisYounger/VPet.ModMaker.git
synced 2024-08-30 18:22:21 +00:00
优化更新
This commit is contained in:
parent
8462b1aab6
commit
7ffc9fcd7d
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
@ -204,6 +205,40 @@ public static class Extensions
|
|||||||
return $"{cultureInfo.DisplayName} [{cultureInfo.Name}]";
|
return $"{cultureInfo.DisplayName} [{cultureInfo.Name}]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 尝试使用索引获取值
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">值类型</typeparam>
|
||||||
|
/// <param name="list">列表</param>
|
||||||
|
/// <param name="index">索引</param>
|
||||||
|
/// <param name="value">值</param>
|
||||||
|
/// <returns>成功为 <see langword="true"/> 失败为 <see langword="false"/></returns>
|
||||||
|
public static bool TryGetValue<T>(this IList<T> list, int index, out T value)
|
||||||
|
{
|
||||||
|
value = default;
|
||||||
|
if (index < 0 || index >= list.Count)
|
||||||
|
return false;
|
||||||
|
value = list[index];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 尝试使用索引获取值
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">值类型</typeparam>
|
||||||
|
/// <param name="list">列表</param>
|
||||||
|
/// <param name="index">索引</param>
|
||||||
|
/// <param name="value">值</param>
|
||||||
|
/// <returns>成功为 <see langword="true"/> 失败为 <see langword="false"/></returns>
|
||||||
|
public static bool TryGetValue<T>(this IList list, int index, out object value)
|
||||||
|
{
|
||||||
|
value = default;
|
||||||
|
if (index < 0 || index >= list.Count)
|
||||||
|
return false;
|
||||||
|
value = list[index];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取目标
|
/// 获取目标
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -62,6 +62,7 @@ public class ObservableValue<T>
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
/// <param name="value">初始值</param>
|
/// <param name="value">初始值</param>
|
||||||
public ObservableValue(T value)
|
public ObservableValue(T value)
|
||||||
|
: this()
|
||||||
{
|
{
|
||||||
_value = value;
|
_value = value;
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public class ObservableValueGroup<T> : IEnumerable<ObservableValue<T>?>
|
|||||||
/// 在添加的时候改变值 (如果分组中存在值)
|
/// 在添加的时候改变值 (如果分组中存在值)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DefaultValue(false)]
|
[DefaultValue(false)]
|
||||||
public bool ChangeOnAdd { get; set; } = false;
|
public bool ChangeOnAdd { get; set; } = true;
|
||||||
|
|
||||||
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
||||||
private readonly Dictionary<Guid, WeakReference<ObservableValue<T>>> _bindingValues = new();
|
private readonly Dictionary<Guid, WeakReference<ObservableValue<T>>> _bindingValues = new();
|
||||||
|
@ -193,15 +193,10 @@ public class AnimePageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowAnimes.Value.Count == Animes.Count)
|
Animes[Animes.IndexOf(animeTypeModel)] = newAnime;
|
||||||
{
|
Animes[Animes.IndexOf(animeTypeModel)] = newAnime;
|
||||||
Animes[Animes.IndexOf(animeTypeModel)] = newAnime;
|
if (ShowAnimes.Value.Count != Animes.Count)
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Animes[Animes.IndexOf(animeTypeModel)] = newAnime;
|
|
||||||
ShowAnimes.Value[ShowAnimes.Value.IndexOf(animeTypeModel)] = newAnime;
|
ShowAnimes.Value[ShowAnimes.Value.IndexOf(animeTypeModel)] = newAnime;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (model is FoodAnimeTypeModel foodAnimeTypeModel)
|
else if (model is FoodAnimeTypeModel foodAnimeTypeModel)
|
||||||
{
|
{
|
||||||
@ -214,15 +209,9 @@ public class AnimePageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowAnimes.Value.Count == FoodAnimes.Count)
|
FoodAnimes[FoodAnimes.IndexOf(foodAnimeTypeModel)] = newAnime;
|
||||||
{
|
if (ShowAnimes.Value.Count != FoodAnimes.Count)
|
||||||
FoodAnimes[FoodAnimes.IndexOf(foodAnimeTypeModel)] = newAnime;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FoodAnimes[FoodAnimes.IndexOf(foodAnimeTypeModel)] = newAnime;
|
|
||||||
ShowAnimes.Value[ShowAnimes.Value.IndexOf(foodAnimeTypeModel)] = newAnime;
|
ShowAnimes.Value[ShowAnimes.Value.IndexOf(foodAnimeTypeModel)] = newAnime;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,15 +98,9 @@ public class ClickTextPageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowClickTexts.Value.Count == ClickTexts.Count)
|
ClickTexts[ClickTexts.IndexOf(model)] = newLowTest;
|
||||||
{
|
if (ShowClickTexts.Value.Count != ClickTexts.Count)
|
||||||
ClickTexts[ClickTexts.IndexOf(model)] = newLowTest;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ClickTexts[ClickTexts.IndexOf(model)] = newLowTest;
|
|
||||||
ShowClickTexts.Value[ShowClickTexts.Value.IndexOf(model)] = newLowTest;
|
ShowClickTexts.Value[ShowClickTexts.Value.IndexOf(model)] = newLowTest;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -71,15 +71,9 @@ public class FoodPageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowFoods.Value.Count == Foods.Count)
|
Foods[Foods.IndexOf(food)] = newFood;
|
||||||
{
|
if (ShowFoods.Value.Count != Foods.Count)
|
||||||
Foods[Foods.IndexOf(food)] = newFood;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Foods[Foods.IndexOf(food)] = newFood;
|
|
||||||
ShowFoods.Value[ShowFoods.Value.IndexOf(food)] = newFood;
|
ShowFoods.Value[ShowFoods.Value.IndexOf(food)] = newFood;
|
||||||
}
|
|
||||||
food.Close();
|
food.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,15 +72,9 @@ public class LowTextPageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowLowTexts.Value.Count == LowTexts.Count)
|
LowTexts[LowTexts.IndexOf(model)] = newLowTest;
|
||||||
{
|
if (ShowLowTexts.Value.Count != LowTexts.Count)
|
||||||
LowTexts[LowTexts.IndexOf(model)] = newLowTest;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LowTexts[LowTexts.IndexOf(model)] = newLowTest;
|
|
||||||
ShowLowTexts.Value[ShowLowTexts.Value.IndexOf(model)] = newLowTest;
|
ShowLowTexts.Value[ShowLowTexts.Value.IndexOf(model)] = newLowTest;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Remove(LowTextModel model)
|
private void Remove(LowTextModel model)
|
||||||
|
@ -82,15 +82,9 @@ public class MovePageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowMoves.Value.Count == Moves.Count)
|
Moves[Moves.IndexOf(model)] = newMove;
|
||||||
{
|
if (ShowMoves.Value.Count != Moves.Count)
|
||||||
Moves[Moves.IndexOf(model)] = newMove;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Moves[Moves.IndexOf(model)] = newMove;
|
|
||||||
ShowMoves.Value[ShowMoves.Value.IndexOf(model)] = newMove;
|
ShowMoves.Value[ShowMoves.Value.IndexOf(model)] = newMove;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Remove(MoveModel model)
|
private void Remove(MoveModel model)
|
||||||
|
@ -74,15 +74,9 @@ public class PetPageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowPets.Value.Count == Pets.Count)
|
Pets[Pets.IndexOf(model)] = newPet;
|
||||||
{
|
if (ShowPets.Value.Count != Pets.Count)
|
||||||
Pets[Pets.IndexOf(model)] = newPet;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Pets[Pets.IndexOf(model)] = newPet;
|
|
||||||
ShowPets.Value[ShowPets.Value.IndexOf(model)] = newPet;
|
ShowPets.Value[ShowPets.Value.IndexOf(model)] = newPet;
|
||||||
}
|
|
||||||
model.Close();
|
model.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,15 +69,9 @@ public class SelectTextPageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowSelectTexts.Value.Count == SelectTexts.Count)
|
SelectTexts[SelectTexts.IndexOf(model)] = newLowTest;
|
||||||
{
|
if (ShowSelectTexts.Value.Count != SelectTexts.Count)
|
||||||
SelectTexts[SelectTexts.IndexOf(model)] = newLowTest;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SelectTexts[SelectTexts.IndexOf(model)] = newLowTest;
|
|
||||||
ShowSelectTexts.Value[ShowSelectTexts.Value.IndexOf(model)] = newLowTest;
|
ShowSelectTexts.Value[ShowSelectTexts.Value.IndexOf(model)] = newLowTest;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Remove(SelectTextModel model)
|
private void Remove(SelectTextModel model)
|
||||||
|
@ -80,15 +80,9 @@ public class WorkPageVM
|
|||||||
window.ShowDialog();
|
window.ShowDialog();
|
||||||
if (window.IsCancel)
|
if (window.IsCancel)
|
||||||
return;
|
return;
|
||||||
if (ShowWorks.Value.Count == Works.Count)
|
Works[Works.IndexOf(model)] = newWork;
|
||||||
{
|
if (ShowWorks.Value.Count != Works.Count)
|
||||||
Works[Works.IndexOf(model)] = newWork;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Works[Works.IndexOf(model)] = newWork;
|
|
||||||
ShowWorks.Value[ShowWorks.Value.IndexOf(model)] = newWork;
|
ShowWorks.Value[ShowWorks.Value.IndexOf(model)] = newWork;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Remove(WorkModel model)
|
private void Remove(WorkModel model)
|
||||||
|
@ -113,21 +113,10 @@ public class ModMakerWindowVM
|
|||||||
Directory.CreateDirectory(nameof(ModMaker));
|
Directory.CreateDirectory(nameof(ModMaker));
|
||||||
if (File.Exists(ModMakerInfo.HistoryFile) is false)
|
if (File.Exists(ModMakerInfo.HistoryFile) is false)
|
||||||
File.Create(ModMakerInfo.HistoryFile).Close();
|
File.Create(ModMakerInfo.HistoryFile).Close();
|
||||||
|
|
||||||
var lps = new LPS();
|
var lps = new LPS();
|
||||||
foreach (var history in Histories)
|
foreach (var history in Histories)
|
||||||
{
|
lps.Add(LPSConvert.SerializeObjectToLine<Line>(history, nameof(history)));
|
||||||
lps.Add(
|
|
||||||
new Line(nameof(history))
|
|
||||||
{
|
|
||||||
new Sub(nameof(ModMakeHistory.Id), history.Id),
|
|
||||||
new Sub(nameof(ModMakeHistory.SourcePath), history.SourcePath),
|
|
||||||
new Sub(
|
|
||||||
nameof(ModMakeHistory.LastTime),
|
|
||||||
history.LastTime.ToString("yyyy/MM/dd HH:mm")
|
|
||||||
)
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
File.WriteAllText(ModMakerInfo.HistoryFile, lps.ToString());
|
File.WriteAllText(ModMakerInfo.HistoryFile, lps.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
<ComboBox
|
<ComboBox
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
ItemsSource="{Binding SearchTargets}"
|
ItemsSource="{Binding SearchTargets}"
|
||||||
|
SelectedIndex="0"
|
||||||
SelectedItem="{Binding SearchTarget.Value}" />
|
SelectedItem="{Binding SearchTarget.Value}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<DataGrid
|
<DataGrid
|
||||||
|
@ -3,6 +3,7 @@ using Panuon.WPF.UI;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Collections.Specialized;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
@ -89,88 +90,146 @@ public partial class I18nEditWindow : WindowX
|
|||||||
LoadPets(model);
|
LoadPets(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AddData<T>(
|
||||||
|
ObservableValue<string> id,
|
||||||
|
I18nModel<T> i18nModel,
|
||||||
|
Func<T, ObservableValue<string>> i18nValue
|
||||||
|
)
|
||||||
|
where T : class, new()
|
||||||
|
{
|
||||||
|
if (AllData.TryGetValue(id.Value, out var outData))
|
||||||
|
{
|
||||||
|
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
||||||
|
{
|
||||||
|
if (outData.Datas[culture.Index].Group is null)
|
||||||
|
{
|
||||||
|
var group = new ObservableValueGroup<string>() { outData.Datas[culture.Index] };
|
||||||
|
}
|
||||||
|
outData.Datas[culture.Index].Group!.Add(
|
||||||
|
i18nValue(i18nModel.I18nDatas[culture.Value])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var data = new I18nData();
|
||||||
|
data.Id.Value = id.Value;
|
||||||
|
foreach (var culture in I18nHelper.Current.CultureNames)
|
||||||
|
data.Datas.Add(i18nValue(i18nModel.I18nDatas[culture]));
|
||||||
|
I18nDatas.Add(data);
|
||||||
|
AllData.Add(id.Value, data);
|
||||||
|
//id.ValueChanged += IdChange;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IdChange(string oldValue, string newValue)
|
||||||
|
{
|
||||||
|
var sourceData = AllData[oldValue];
|
||||||
|
sourceData.Id.Group?.Remove(sourceData.Id);
|
||||||
|
if (AllData.TryGetValue(oldValue, out var outData))
|
||||||
|
{
|
||||||
|
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
||||||
|
{
|
||||||
|
if (outData.Datas[culture.Index].Group is null)
|
||||||
|
{
|
||||||
|
var group = new ObservableValueGroup<string>() { outData.Datas[culture.Index] };
|
||||||
|
}
|
||||||
|
outData.Datas[culture.Index].Group!.Add(sourceData.Datas[culture.Index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sourceData.Id.Value = newValue;
|
||||||
|
AllData.Remove(oldValue);
|
||||||
|
AllData.Add(newValue, sourceData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveData<T>(
|
||||||
|
ObservableValue<string> id,
|
||||||
|
I18nModel<T> i18nModel,
|
||||||
|
Func<T, ObservableValue<string>> i18nValue
|
||||||
|
)
|
||||||
|
where T : class, new()
|
||||||
|
{
|
||||||
|
var data = AllData[id.Value];
|
||||||
|
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
||||||
|
{
|
||||||
|
if (data.Datas[culture.Index].Group is ObservableValueGroup<string> group)
|
||||||
|
{
|
||||||
|
group.Remove(i18nValue(i18nModel.I18nDatas[culture.Value]));
|
||||||
|
if (group.Count == 1)
|
||||||
|
{
|
||||||
|
group.Clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
I18nDatas.Remove(data);
|
||||||
|
AllData.Remove(id.Value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ReplaceData<T>(
|
||||||
|
ObservableValue<string> id,
|
||||||
|
I18nModel<T> i18nModel,
|
||||||
|
Func<T, ObservableValue<string>> i18nValue
|
||||||
|
)
|
||||||
|
where T : class, new()
|
||||||
|
{
|
||||||
|
var data = AllData[id.Value];
|
||||||
|
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
||||||
|
{
|
||||||
|
var oldValue = data.Datas[culture.Index];
|
||||||
|
var newValue = i18nValue(i18nModel.I18nDatas[culture.Value]);
|
||||||
|
if (oldValue.Group is ObservableValueGroup<string> group)
|
||||||
|
{
|
||||||
|
group.Add(newValue);
|
||||||
|
group.Remove(oldValue);
|
||||||
|
}
|
||||||
|
data.Datas[culture.Index] = newValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void LoadFood(ModInfoModel model)
|
private void LoadFood(ModInfoModel model)
|
||||||
{
|
{
|
||||||
foreach (var food in model.Foods)
|
foreach (var food in model.Foods)
|
||||||
{
|
{
|
||||||
if (AllData.TryGetValue(food.Id.Value, out var outData))
|
AddData(food.Id, food, (m) => m.Name);
|
||||||
{
|
AddData(food.DescriptionId, food, (m) => m.Description);
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
|
||||||
{
|
|
||||||
if (outData.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData.Datas[culture.Index].Group!.Add(food.I18nDatas[culture.Value].Name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = food.Id.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(food.I18nDatas[culture].Name);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(food.Id.Value, data);
|
|
||||||
}
|
|
||||||
if (AllData.TryGetValue(food.DescriptionId.Value, out var outData1))
|
|
||||||
{
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
|
||||||
{
|
|
||||||
if (outData1.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData1.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData1.Datas[culture.Index].Group!.Add(
|
|
||||||
food.I18nDatas[culture.Value].Description
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = food.DescriptionId.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(food.I18nDatas[culture].Description);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(food.DescriptionId.Value, data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
model.Foods.CollectionChanged += (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Action is NotifyCollectionChangedAction.Add)
|
||||||
|
{
|
||||||
|
var newFood = (FoodModel)e.NewItems[0];
|
||||||
|
AddData(newFood.Id, newFood, (m) => m.Name);
|
||||||
|
AddData(newFood.DescriptionId, newFood, (m) => m.Description);
|
||||||
|
}
|
||||||
|
else if (e.Action is NotifyCollectionChangedAction.Remove)
|
||||||
|
{
|
||||||
|
var oldFood = (FoodModel)e.OldItems[0];
|
||||||
|
RemoveData(oldFood.Id, oldFood, (m) => m.Name);
|
||||||
|
RemoveData(oldFood.DescriptionId, oldFood, (m) => m.Description);
|
||||||
|
}
|
||||||
|
else if (e.Action is NotifyCollectionChangedAction.Replace)
|
||||||
|
{
|
||||||
|
var newFood = (FoodModel)e.NewItems[0];
|
||||||
|
var oldFood = (FoodModel)e.OldItems[0];
|
||||||
|
ReplaceData(newFood.Id, newFood, (m) => m.Name);
|
||||||
|
ReplaceData(newFood.DescriptionId, newFood, (m) => m.Description);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadClickText(ModInfoModel model)
|
private void LoadClickText(ModInfoModel model)
|
||||||
{
|
{
|
||||||
foreach (var text in model.ClickTexts)
|
foreach (var text in model.ClickTexts)
|
||||||
{
|
{
|
||||||
if (AllData.TryGetValue(text.Id.Value, out var outData))
|
AddData(text.Id, text, (m) => m.Text);
|
||||||
{
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
|
||||||
{
|
|
||||||
if (outData.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData.Datas[culture.Index].Group!.Add(text.I18nDatas[culture.Value].Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = text.Id.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(text.I18nDatas[culture].Text);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(text.Id.Value, data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,29 +237,7 @@ public partial class I18nEditWindow : WindowX
|
|||||||
{
|
{
|
||||||
foreach (var text in model.LowTexts)
|
foreach (var text in model.LowTexts)
|
||||||
{
|
{
|
||||||
if (AllData.TryGetValue(text.Id.Value, out var outData))
|
AddData(text.Id, text, (m) => m.Text);
|
||||||
{
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
|
||||||
{
|
|
||||||
if (outData.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData.Datas[culture.Index].Group!.Add(text.I18nDatas[culture.Value].Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = text.Id.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(text.I18nDatas[culture].Text);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(text.Id.Value, data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,52 +245,8 @@ public partial class I18nEditWindow : WindowX
|
|||||||
{
|
{
|
||||||
foreach (var text in model.SelectTexts)
|
foreach (var text in model.SelectTexts)
|
||||||
{
|
{
|
||||||
if (AllData.TryGetValue(text.Id.Value, out var outData))
|
AddData(text.Id, text, (m) => m.Text);
|
||||||
{
|
AddData(text.ChooseId, text, (m) => m.Choose);
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
|
||||||
{
|
|
||||||
if (outData.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData.Datas[culture.Index].Group!.Add(text.I18nDatas[culture.Value].Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = text.Id.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(text.I18nDatas[culture].Text);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(text.Id.Value, data);
|
|
||||||
}
|
|
||||||
if (AllData.TryGetValue(text.ChooseId.Value, out var outData1))
|
|
||||||
{
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
|
||||||
{
|
|
||||||
if (outData1.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData1.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData1.Datas[culture.Index].Group!.Add(text.I18nDatas[culture.Value].Choose);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = text.ChooseId.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(text.I18nDatas[culture].Choose);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(text.ChooseId.Value, data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,92 +256,9 @@ public partial class I18nEditWindow : WindowX
|
|||||||
{
|
{
|
||||||
if (pet.IsSimplePetModel)
|
if (pet.IsSimplePetModel)
|
||||||
continue;
|
continue;
|
||||||
if (AllData.TryGetValue(pet.Id.Value, out var outData))
|
AddData(pet.Id, pet, (m) => m.Name);
|
||||||
{
|
AddData(pet.PetNameId, pet, (m) => m.PetName);
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
AddData(pet.DescriptionId, pet, (m) => m.Description);
|
||||||
{
|
|
||||||
if (outData.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData.Datas[culture.Index].Group!.Add(pet.I18nDatas[culture.Value].Name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = pet.Id.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(pet.I18nDatas[culture].Name);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(pet.Id.Value, data);
|
|
||||||
}
|
|
||||||
if (AllData.TryGetValue(pet.PetNameId.Value, out var outData1))
|
|
||||||
{
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
|
||||||
{
|
|
||||||
if (outData1.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData1.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData1.Datas[culture.Index].Group!.Add(pet.I18nDatas[culture.Value].PetName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = pet.PetNameId.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(pet.I18nDatas[culture].PetName);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(pet.PetNameId.Value, data);
|
|
||||||
}
|
|
||||||
if (AllData.TryGetValue(pet.DescriptionId.Value, out var outData2))
|
|
||||||
{
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames.Enumerate())
|
|
||||||
{
|
|
||||||
if (outData2.Datas[culture.Index].Group is null)
|
|
||||||
{
|
|
||||||
var group = new ObservableValueGroup<string>()
|
|
||||||
{
|
|
||||||
outData2.Datas[culture.Index]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
outData2.Datas[culture.Index].Group!.Add(
|
|
||||||
pet.I18nDatas[culture.Value].Description
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new I18nData();
|
|
||||||
data.Id.Value = pet.DescriptionId.Value;
|
|
||||||
foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
data.Datas.Add(pet.I18nDatas[culture].Description);
|
|
||||||
I18nDatas.Add(data);
|
|
||||||
AllData.Add(pet.DescriptionId.Value, data);
|
|
||||||
}
|
|
||||||
//var data = new I18nData();
|
|
||||||
//var petNameData = new I18nData();
|
|
||||||
//var descriptionData = new I18nData();
|
|
||||||
//data.Id.Value = pet.Id.Value;
|
|
||||||
//petNameData.Id.Value = pet.PetNameId.Value;
|
|
||||||
//descriptionData.Id.Value = pet.DescriptionId.Value;
|
|
||||||
//foreach (var culture in I18nHelper.Current.CultureNames)
|
|
||||||
//{
|
|
||||||
// data.Datas.Add(pet.I18nDatas[culture].Name);
|
|
||||||
// petNameData.Datas.Add(pet.I18nDatas[culture].PetName);
|
|
||||||
// descriptionData.Datas.Add(pet.I18nDatas[culture].Description);
|
|
||||||
//}
|
|
||||||
//I18nDatas.Add(data);
|
|
||||||
//I18nDatas.Add(petNameData);
|
|
||||||
//I18nDatas.Add(descriptionData);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user