diff --git a/VPet.ModMaker/Converters.xaml b/VPet.ModMaker/Converters.xaml index 73c5a31..78c7b7d 100644 --- a/VPet.ModMaker/Converters.xaml +++ b/VPet.ModMaker/Converters.xaml @@ -5,5 +5,7 @@ + + \ No newline at end of file diff --git a/VPet.ModMaker/Converters/BrushToMediaColorConverter.cs b/VPet.ModMaker/Converters/BrushToMediaColorConverter.cs new file mode 100644 index 0000000..580ca2a --- /dev/null +++ b/VPet.ModMaker/Converters/BrushToMediaColorConverter.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; +using System.Windows.Media; + +namespace VPet.ModMaker.Converters; + +public class BrushToMediaColorConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not SolidColorBrush brush) + throw new ArgumentException("Not SolidColorBrush", nameof(value)); + return brush.Color; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not Color color) + throw new ArgumentException("Not media color", nameof(value)); + return new SolidColorBrush(color); + } +} diff --git a/VPet.ModMaker/Converters/MediaColorToBrushConverter.cs b/VPet.ModMaker/Converters/MediaColorToBrushConverter.cs new file mode 100644 index 0000000..311e866 --- /dev/null +++ b/VPet.ModMaker/Converters/MediaColorToBrushConverter.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; +using System.Windows.Media; + +namespace VPet.ModMaker.Converters; + +public class MediaColorToBrushConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not Color color) + throw new ArgumentException("Not media color", nameof(value)); + return new SolidColorBrush(color); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not SolidColorBrush brush) + throw new ArgumentException("Not SolidColorBrush", nameof(value)); + return brush.Color; + } +} diff --git a/VPet.ModMaker/Converters/StringFormatConverter.cs b/VPet.ModMaker/Converters/StringFormatConverter.cs new file mode 100644 index 0000000..599e7d3 --- /dev/null +++ b/VPet.ModMaker/Converters/StringFormatConverter.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Data; + +namespace VPet.ModMaker.Converters; + +/// +/// 边距转换器 +/// 示例: +/// +/// +/// +/// +/// +/// OR +/// +/// +/// +/// +/// ]]> +/// +public class StringFormatConverter : IMultiValueConverter +{ + public object Convert( + object[] values, + Type targetType, + object parameter, + System.Globalization.CultureInfo culture + ) + { + var formatStr = (string)parameter; + if (string.IsNullOrWhiteSpace(formatStr)) + { + formatStr = (string)values[0]; + return string.Format(formatStr, values.Skip(1).ToArray()); + } + else + { + return string.Format(formatStr, values); + } + } + + public object[] ConvertBack( + object value, + Type[] targetTypes, + object parameter, + System.Globalization.CultureInfo culture + ) + { + throw new NotImplementedException(); + } +} diff --git a/VPet.ModMaker/Models/ClickTextModel.cs b/VPet.ModMaker/Models/ClickTextModel.cs index 283c2a0..a5d690e 100644 --- a/VPet.ModMaker/Models/ClickTextModel.cs +++ b/VPet.ModMaker/Models/ClickTextModel.cs @@ -22,7 +22,7 @@ public class ClickTextModel : I18nModel .Cast() ); - public ObservableValue Name { get; } = new(); + public ObservableValue Id { get; } = new(); public ObservableValue Working { get; } = new(); public ObservableValue Mode { get; } = new(); public ObservableValue WorkingState { get; } = new(); @@ -42,7 +42,7 @@ public class ClickTextModel : I18nModel public ClickTextModel(ClickTextModel clickText) : this() { - Name.Value = clickText.Name.Value; + Id.Value = clickText.Id.Value; Mode.Value = clickText.Mode.Value; Working.Value = clickText.Working.Value; WorkingState.Value = clickText.WorkingState.Value; @@ -63,7 +63,7 @@ public class ClickTextModel : I18nModel public ClickTextModel(ClickText clickText) : this() { - Name.Value = clickText.Text; + Id.Value = clickText.Text; Mode.Value = clickText.Mode; Working.Value = clickText.Working; WorkingState.Value = clickText.State; @@ -82,7 +82,7 @@ public class ClickTextModel : I18nModel { return new() { - Text = Name.Value, + Text = Id.Value, Mode = Mode.Value, Working = Working.Value, State = WorkingState.Value, diff --git a/VPet.ModMaker/Models/FoodModel.cs b/VPet.ModMaker/Models/FoodModel.cs index e6b859d..59b959c 100644 --- a/VPet.ModMaker/Models/FoodModel.cs +++ b/VPet.ModMaker/Models/FoodModel.cs @@ -16,8 +16,8 @@ public class FoodModel : I18nModel public static ObservableCollection FoodTypes { get; } = new(Enum.GetValues(typeof(Food.FoodType)).Cast()); - public ObservableValue Name { get; } = new(); - public ObservableValue Description { get; } = new(); + public ObservableValue Id { get; } = new(); + public ObservableValue DescriptionId { get; } = new(); public ObservableValue Graph { get; } = new(); public ObservableValue Type { get; } = new(); public ObservableValue Strength { get; } = new(); @@ -32,18 +32,18 @@ public class FoodModel : I18nModel public FoodModel() { - Description.Value = $"{Name.Value}_{nameof(Description)}"; - Name.ValueChanged += (v) => + DescriptionId.Value = $"{Id.Value}_{nameof(DescriptionId)}"; + Id.ValueChanged += (v) => { - Description.Value = $"{v}_{nameof(Description)}"; + DescriptionId.Value = $"{v}_{nameof(DescriptionId)}"; }; } public FoodModel(FoodModel model) : this() { - Name.Value = model.Name.Value; - Description.Value = model.Description.Value; + Id.Value = model.Id.Value; + DescriptionId.Value = model.DescriptionId.Value; Graph.Value = model.Graph.Value; Type.Value = model.Type.Value; Strength.Value = model.Strength.Value; @@ -63,8 +63,8 @@ public class FoodModel : I18nModel public FoodModel(Food food) : this() { - Name.Value = food.Name; - Description.Value = food.Desc; + Id.Value = food.Name; + DescriptionId.Value = food.Desc; Graph.Value = food.Graph; Type.Value = food.Type; Strength.Value = food.Strength; @@ -83,8 +83,8 @@ public class FoodModel : I18nModel { return new Food() { - Name = Name.Value, - Desc = Description.Value, + Name = Id.Value, + Desc = DescriptionId.Value, Graph = Graph.Value, Type = Type.Value, Strength = Strength.Value, diff --git a/VPet.ModMaker/Models/LowTextModel.cs b/VPet.ModMaker/Models/LowTextModel.cs index f415577..f72e344 100644 --- a/VPet.ModMaker/Models/LowTextModel.cs +++ b/VPet.ModMaker/Models/LowTextModel.cs @@ -19,7 +19,7 @@ public class LowTextModel : I18nModel public static ObservableCollection StrengthTypes { get; } = new(Enum.GetValues(typeof(LowText.StrengthType)).Cast()); - public ObservableValue Name { get; } = new(); + public ObservableValue Id { get; } = new(); public ObservableValue Mode { get; } = new(); public ObservableValue Strength { get; } = new(); public ObservableValue Like { get; } = new(); @@ -29,7 +29,7 @@ public class LowTextModel : I18nModel public LowTextModel(LowTextModel lowText) : this() { - Name.Value = lowText.Name.Value; + Id.Value = lowText.Id.Value; Mode.Value = lowText.Mode.Value; Strength.Value = lowText.Strength.Value; Like.Value = lowText.Like.Value; @@ -42,7 +42,7 @@ public class LowTextModel : I18nModel public LowTextModel(LowText lowText) : this() { - Name.Value = lowText.Text; + Id.Value = lowText.Text; Mode.Value = lowText.Mode; Strength.Value = lowText.Strength; Like.Value = lowText.Like; @@ -54,7 +54,7 @@ public class LowTextModel : I18nModel { return new() { - Text = Name.Value, + Text = Id.Value, Mode = Mode.Value, Strength = Strength.Value, Like = Like.Value, diff --git a/VPet.ModMaker/Models/ModInfoModel.cs b/VPet.ModMaker/Models/ModInfoModel.cs index 052fc77..7fd242c 100644 --- a/VPet.ModMaker/Models/ModInfoModel.cs +++ b/VPet.ModMaker/Models/ModInfoModel.cs @@ -20,9 +20,8 @@ public class ModInfoModel : I18nModel public const string ModInfoFile = "info.lps"; public static ModInfoModel Current { get; set; } = new(); - public ObservableValue Name { get; } = new(); - public ObservableValue Description { get; } = new(); - public ObservableValue Summary { get; } = new(); + public ObservableValue Id { get; } = new(); + public ObservableValue DescriptionId { get; } = new(); public ObservableValue Author { get; } = new(); public ObservableValue GameVersion { get; } = new(); public ObservableValue ModVersion { get; } = new(); @@ -39,10 +38,10 @@ public class ModInfoModel : I18nModel public ModInfoModel() { - Description.Value = $"{Name.Value}_{nameof(Description)}"; - Name.ValueChanged += (v) => + DescriptionId.Value = $"{Id.Value}_{nameof(DescriptionId)}"; + Id.ValueChanged += (v) => { - Description.Value = $"{v}_{nameof(Description)}"; + DescriptionId.Value = $"{v}_{nameof(DescriptionId)}"; }; } @@ -50,8 +49,8 @@ public class ModInfoModel : I18nModel : this() { SourcePath.Value = loader.Path.FullName; - Name.Value = loader.Name; - Description.Value = loader.Intro; + Id.Value = loader.Name; + DescriptionId.Value = loader.Intro; Author.Value = loader.Author; GameVersion.Value = loader.GameVer.ToString(); ModVersion.Value = loader.Ver.ToString(); @@ -91,39 +90,39 @@ public class ModInfoModel : I18nModel foreach (var food in Foods) { var foodI18n = food.I18nDatas[i18nData.Key]; - if (i18nData.Value.TryGetValue(food.Name.Value, out var name)) + if (i18nData.Value.TryGetValue(food.Id.Value, out var name)) foodI18n.Name.Value = name; - if (i18nData.Value.TryGetValue(food.Description.Value, out var description)) + if (i18nData.Value.TryGetValue(food.DescriptionId.Value, out var description)) foodI18n.Description.Value = description; } foreach (var lowText in LowTexts) { var lowTextI18n = lowText.I18nDatas[i18nData.Key]; - if (i18nData.Value.TryGetValue(lowText.Name.Value, out var text)) + if (i18nData.Value.TryGetValue(lowText.Id.Value, out var text)) lowTextI18n.Text.Value = text; } foreach (var clickText in ClickTexts) { var clickTextI18n = clickText.I18nDatas[i18nData.Key]; - if (i18nData.Value.TryGetValue(clickText.Name.Value, out var text)) + if (i18nData.Value.TryGetValue(clickText.Id.Value, out var text)) clickTextI18n.Text.Value = text; } foreach (var selectText in SelectTexts) { var selectTextI18n = selectText.I18nDatas[i18nData.Key]; - if (i18nData.Value.TryGetValue(selectText.Name.Value, out var text)) + if (i18nData.Value.TryGetValue(selectText.Id.Value, out var text)) selectTextI18n.Text.Value = text; - if (i18nData.Value.TryGetValue(selectText.Choose.Value, out var choose)) + if (i18nData.Value.TryGetValue(selectText.ChooseId.Value, out var choose)) selectTextI18n.Choose.Value = choose; } foreach (var pet in Pets) { var petI18n = pet.I18nDatas[i18nData.Key]; - if (i18nData.Value.TryGetValue(pet.Name.Value, out var name)) + if (i18nData.Value.TryGetValue(pet.Id.Value, out var name)) petI18n.Name.Value = name; - if (i18nData.Value.TryGetValue(pet.PetName.Value, out var petName)) + if (i18nData.Value.TryGetValue(pet.PetNameId.Value, out var petName)) petI18n.PetName.Value = petName; - if (i18nData.Value.TryGetValue(pet.Description.Value, out var description)) + if (i18nData.Value.TryGetValue(pet.DescriptionId.Value, out var description)) petI18n.Description.Value = description; foreach (var work in pet.Works) { @@ -149,13 +148,13 @@ public class ModInfoModel : I18nModel //var lps = new LpsDocument(File.ReadAllText(modInfoFile)); var lps = new LPS() { - new Line("vupmod", Name.Value) + new Line("vupmod", Id.Value) { new Sub("author", Author.Value), new Sub("gamever", GameVersion.Value), new Sub("ver", ModVersion.Value) }, - new Line("intro", Description.Value), + new Line("intro", DescriptionId.Value), new Line("authorid", "0"), new Line("itemid", "0"), new Line("cachedate", DateTime.Now.Date.ToString()) @@ -165,8 +164,8 @@ public class ModInfoModel : I18nModel lps.Add( new Line("lang", cultureName) { - new Sub(Name.Value, I18nDatas[cultureName].Name.Value), - new Sub(Description.Value, I18nDatas[cultureName].Description.Value), + new Sub(Id.Value, I18nDatas[cultureName].Name.Value), + new Sub(DescriptionId.Value, I18nDatas[cultureName].Description.Value), } ); } @@ -175,7 +174,7 @@ public class ModInfoModel : I18nModel if (imagePath != targetImagePath) File.Copy(imagePath, targetImagePath, true); //lps.FindLine("vupmod").Info = Id.Value; - //lps.FindLine("intro").Info = Description.Value; + //lps.FindLine("intro").Info = DescriptionId.Value; //lps.FindSub("gamever").Info = GameVersion.Value; //lps.FindSub("ver").Info = ModVersion.Value; //lps.FindSub("author").Info = Author.Value; @@ -277,23 +276,26 @@ public class ModInfoModel : I18nModel var lps = new LPS(); foreach (var food in Foods) { - lps.Add(new Line(food.Name.Value, food.I18nDatas[cultureName].Name.Value)); + lps.Add(new Line(food.Id.Value, food.I18nDatas[cultureName].Name.Value)); lps.Add( - new Line(food.Description.Value, food.I18nDatas[cultureName].Description.Value) + new Line( + food.DescriptionId.Value, + food.I18nDatas[cultureName].Description.Value + ) ); } foreach (var text in LowTexts) { - lps.Add(new Line(text.Name.Value, text.I18nDatas[cultureName].Text.Value)); + lps.Add(new Line(text.Id.Value, text.I18nDatas[cultureName].Text.Value)); } foreach (var text in ClickTexts) { - lps.Add(new Line(text.Name.Value, text.I18nDatas[cultureName].Text.Value)); + lps.Add(new Line(text.Id.Value, text.I18nDatas[cultureName].Text.Value)); } foreach (var text in SelectTexts) { - lps.Add(new Line(text.Name.Value, text.I18nDatas[cultureName].Text.Value)); - lps.Add(new Line(text.Choose.Value, text.I18nDatas[cultureName].Choose.Value)); + lps.Add(new Line(text.Id.Value, text.I18nDatas[cultureName].Text.Value)); + lps.Add(new Line(text.ChooseId.Value, text.I18nDatas[cultureName].Choose.Value)); } File.WriteAllText(cultureFile, lps.ToString()); } @@ -312,7 +314,7 @@ public class ModInfoModel : I18nModel var foodImagePath = Utils.GetImageSourceFile(food.Image.Value); var targetImagePath = Path.Combine( foodPath, - $"{food.Name.Value}{Path.GetExtension(foodImagePath)}" + $"{food.Id.Value}{Path.GetExtension(foodImagePath)}" ); if (foodImagePath != targetImagePath) File.Copy(foodImagePath, targetImagePath, true); diff --git a/VPet.ModMaker/Models/ModMakerHistory.cs b/VPet.ModMaker/Models/ModMakerHistory.cs index 144713e..7466060 100644 --- a/VPet.ModMaker/Models/ModMakerHistory.cs +++ b/VPet.ModMaker/Models/ModMakerHistory.cs @@ -14,7 +14,7 @@ public class ModMakerHistory public BitmapImage Image { get; set; } [Line(ignoreCase: true)] - public string Name { get; set; } + public string Id { get; set; } private string _path; diff --git a/VPet.ModMaker/Models/PetModel.cs b/VPet.ModMaker/Models/PetModel.cs index 82996ba..8c931a0 100644 --- a/VPet.ModMaker/Models/PetModel.cs +++ b/VPet.ModMaker/Models/PetModel.cs @@ -13,9 +13,9 @@ namespace VPet.ModMaker.Models; public class PetModel : I18nModel { - public ObservableValue Name { get; } = new(); - public ObservableValue PetName { get; } = new(); - public ObservableValue Description { get; } = new(); + public ObservableValue Id { get; } = new(); + public ObservableValue PetNameId { get; } = new(); + public ObservableValue DescriptionId { get; } = new(); public ObservableValue> TouchHeadRect { get; } = new(new()); public ObservableValue TouchRaisedRect { get; } = new(new()); public ObservableValue RaisePoint { get; } = new(new()); @@ -24,19 +24,19 @@ public class PetModel : I18nModel public PetModel() { - PetName.Value = $"{Name.Value}_{nameof(PetName)}"; - Description.Value = $"{Name.Value}_{nameof(Description)}"; - Name.ValueChanged += (v) => + PetNameId.Value = $"{Id.Value}_{nameof(PetNameId)}"; + DescriptionId.Value = $"{Id.Value}_{nameof(DescriptionId)}"; + Id.ValueChanged += (v) => { - PetName.Value = $"{v}_{nameof(PetName)}"; - Description.Value = $"{v}_{nameof(Description)}"; + PetNameId.Value = $"{v}_{nameof(PetNameId)}"; + DescriptionId.Value = $"{v}_{nameof(DescriptionId)}"; }; } public PetModel(PetModel model) : this() { - Name.Value = model.Name.Value; + Id.Value = model.Id.Value; TouchHeadRect.Value = model.TouchHeadRect.Value.Copy(); TouchRaisedRect.Value = model.TouchRaisedRect.Value.Copy(); RaisePoint.Value = model.RaisePoint.Value.Copy(); @@ -51,9 +51,9 @@ public class PetModel : I18nModel public PetModel(PetLoader loader) : this() { - Name.Value = loader.Name; - PetName.Value = loader.PetName; - Description.Value = loader.Intor; + Id.Value = loader.Name; + PetNameId.Value = loader.PetName; + DescriptionId.Value = loader.Intor; TouchHeadRect.Value.SetValue( loader.Config.TouchHeadLocate.X, diff --git a/VPet.ModMaker/Models/SelectTextModel.cs b/VPet.ModMaker/Models/SelectTextModel.cs index 1032b17..875b6df 100644 --- a/VPet.ModMaker/Models/SelectTextModel.cs +++ b/VPet.ModMaker/Models/SelectTextModel.cs @@ -26,8 +26,8 @@ public class SelectTextModel : I18nModel public ObservableValue Tags { get; } = new(); public ObservableValue ToTags { get; } = new(); - public ObservableValue Name { get; } = new(); - public ObservableValue Choose { get; } = new(); + public ObservableValue Id { get; } = new(); + public ObservableValue ChooseId { get; } = new(); public ObservableValue Mode { get; } = new(); //public ObservableValue Working { get; } = new(); @@ -45,17 +45,17 @@ public class SelectTextModel : I18nModel public SelectTextModel() { - Choose.Value = $"{Name.Value}_{nameof(Choose)}"; - Name.ValueChanged += (v) => + ChooseId.Value = $"{Id.Value}_{nameof(ChooseId)}"; + Id.ValueChanged += (v) => { - Choose.Value = $"{v}_{nameof(Choose)}"; + ChooseId.Value = $"{v}_{nameof(ChooseId)}"; }; } public SelectTextModel(SelectTextModel model) : this() { - Name.Value = model.Name.Value; + Id.Value = model.Id.Value; Mode.Value = model.Mode.Value; Tags.Value = model.Tags.Value; ToTags.Value = model.ToTags.Value; @@ -79,8 +79,8 @@ public class SelectTextModel : I18nModel public SelectTextModel(SelectText text) : this() { - Name.Value = text.Text; - Choose.Value = text.Choose ?? string.Empty; + Id.Value = text.Text; + ChooseId.Value = text.Choose ?? string.Empty; Mode.Value = text.Mode; Tags.Value = text.Tags is null ? string.Empty : string.Join(", ", text.Tags); ToTags.Value = text.ToTags is null ? string.Empty : string.Join(", ", text.ToTags); @@ -103,8 +103,8 @@ public class SelectTextModel : I18nModel { return new() { - Text = Name.Value, - Choose = Choose.Value, + Text = Id.Value, + Choose = ChooseId.Value, Mode = Mode.Value, Tags = new(Tags.Value.Split(rs_splitChar, StringSplitOptions.RemoveEmptyEntries)), ToTags = new(ToTags.Value.Split(rs_splitChar, StringSplitOptions.RemoveEmptyEntries)), diff --git a/VPet.ModMaker/Models/WorkModel.cs b/VPet.ModMaker/Models/WorkModel.cs index 029f056..32ef684 100644 --- a/VPet.ModMaker/Models/WorkModel.cs +++ b/VPet.ModMaker/Models/WorkModel.cs @@ -5,6 +5,7 @@ using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Media; namespace VPet.ModMaker.Models; @@ -32,11 +33,16 @@ public class WorkModel : I18nModel public ObservableValue Time { get; } = new(); public ObservableValue FinishBonus { get; } = new(); - public ObservableValue BorderBrush { get; } = new("0290D5"); - public ObservableValue Background { get; } = new("81d4fa"); - public ObservableValue ButtonBackground { get; } = new("0286C6"); - public ObservableValue ButtonForeground { get; } = new("ffffff"); - public ObservableValue Foreground { get; } = new("0286C6"); + public ObservableValue BorderBrush { get; } = + new(new((Color)ColorConverter.ConvertFromString("#FF0290D5"))); + public ObservableValue Background { get; } = + new(new((Color)ColorConverter.ConvertFromString("#FF81d4fa"))); + public ObservableValue Foreground { get; } = + new(new((Color)ColorConverter.ConvertFromString("#FF0286C6"))); + public ObservableValue ButtonBackground { get; } = + new(new((Color)ColorConverter.ConvertFromString("#AA0286C6"))); + public ObservableValue ButtonForeground { get; } = + new(new((Color)ColorConverter.ConvertFromString("#FFffffff"))); public ObservableValue Left { get; } = new(100); public ObservableValue Top { get; } = new(160); @@ -89,11 +95,15 @@ public class WorkModel : I18nModel Time.Value = work.Time; FinishBonus.Value = work.FinishBonus; - BorderBrush.Value = work.BorderBrush; - Background.Value = work.Background; - ButtonBackground.Value = work.ButtonBackground; - ButtonForeground.Value = work.ButtonForeground; - Foreground.Value = work.Foreground; + BorderBrush.Value = new((Color)ColorConverter.ConvertFromString("#FF" + work.BorderBrush)); + Background.Value = new((Color)ColorConverter.ConvertFromString("#FF" + work.Background)); + Foreground.Value = new((Color)ColorConverter.ConvertFromString("#FF" + work.Foreground)); + ButtonBackground.Value = new( + (Color)ColorConverter.ConvertFromString("#AA" + work.ButtonBackground) + ); + ButtonForeground.Value = new( + (Color)ColorConverter.ConvertFromString("#FF" + work.ButtonForeground) + ); Left.Value = work.Left; Top.Value = work.Top; @@ -116,11 +126,11 @@ public class WorkModel : I18nModel Time = Time.Value, FinishBonus = FinishBonus.Value, // - BorderBrush = BorderBrush.Value, - Background = Background.Value, - ButtonBackground = ButtonBackground.Value, - ButtonForeground = ButtonForeground.Value, - Foreground = Foreground.Value, + BorderBrush = BorderBrush.Value.ToString().Substring(3), + Background = Background.Value.ToString().Substring(3), + ButtonBackground = ButtonBackground.Value.ToString().Substring(3), + ButtonForeground = ButtonForeground.Value.ToString().Substring(3), + Foreground = Foreground.Value.ToString().Substring(3), // Left = Left.Value, Top = Top.Value, diff --git a/VPet.ModMaker/Styles.xaml b/VPet.ModMaker/Styles.xaml index 1c68f3c..f50a7f4 100644 --- a/VPet.ModMaker/Styles.xaml +++ b/VPet.ModMaker/Styles.xaml @@ -27,5 +27,4 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +