using LinePutScript.Localization.WPF; using Panuon.WPF.UI; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace VPet_Simulator.Windows { /// /// winCharacterPanel.xaml 的交互逻辑 /// public partial class winCharacterPanel : WindowX { MainWindow mw; public winCharacterPanel(MainWindow mw) { this.mw = mw; InitializeComponent(); foreach (var v in mw.GameSavesData.Statistics.Data) { StatList.Add(new StatInfo(v.Key, v.Value.GetDouble())); } DataGridStatic.ItemsSource = StatList; } private ObservableCollection StatList { get; set; } = new(); private class StatInfo { public StatInfo(string statId, double statCount) { StatId = statId; StatCount = statCount; if (statId.StartsWith("buy_")) { StatName = "购买次数".Translate() + '_' + statId.Substring(4).Translate(); } else if (statId.StartsWith("stat_")) { StatName = "统计".Translate() + '_' + statId.Substring(5).Translate(); } else { StatName = statId.Translate(); } } /// /// 统计ID /// public string StatId { get; set; } /// /// 统计显示名称 /// public string StatName { get; set; } /// /// 统计内容 /// public double StatCount { get; set; } } private void PgbExperience_GeneratingPercentText( object sender, GeneratingPercentTextRoutedEventArgs e ) { e.Text = $"{e.Value * 10} / {100 * 10}"; } private void PgbStrength_GeneratingPercentText( object sender, GeneratingPercentTextRoutedEventArgs e ) { e.Text = $"{e.Value} / 100"; } private void PgbSpirit_GeneratingPercentText( object sender, GeneratingPercentTextRoutedEventArgs e ) { var progressBar = (ProgressBar)sender; progressBar.Foreground = GetForeground(e.Value); progressBar.BorderBrush = GetForeground(e.Value); e.Text = $"{e.Value} / 100"; } private void PgbHunger_GeneratingPercentText( object sender, GeneratingPercentTextRoutedEventArgs e ) { var progressBar = (ProgressBar)sender; progressBar.Foreground = GetForeground(e.Value); progressBar.BorderBrush = GetForeground(e.Value); e.Text = $"{e.Value} / 100"; } private void PgbThirsty_GeneratingPercentText( object sender, GeneratingPercentTextRoutedEventArgs e ) { var progressBar = (ProgressBar)sender; progressBar.Foreground = GetForeground(e.Value); progressBar.BorderBrush = GetForeground(e.Value); e.Text = $"{e.Value} / 100"; if (e.Value <= 20) { txtHearth.Visibility = Visibility.Visible; stkHearth.Visibility = Visibility.Visible; } } private void PgbHearth_GeneratingPercentText( object sender, GeneratingPercentTextRoutedEventArgs e ) { e.Text = $"{e.Value} / 100"; } private Brush GetForeground(double value) { if (value >= 80) { return FindResource("SuccessProgressBarForeground") as Brush; } else if (value >= 50) { return FindResource("WarningProgressBarForeground") as Brush; } else { return FindResource("DangerProgressBarForeground") as Brush; } } private void TextBox_Search_TextChanged(object sender, TextChangedEventArgs e) { if (sender is not TextBox textBox) return; if (string.IsNullOrWhiteSpace(textBox.Text)) { DataGridStatic.ItemsSource = StatList; } else { DataGridStatic.ItemsSource = StatList.Where( i => i.StatName.IndexOf( textBox.Text, StringComparison.InvariantCultureIgnoreCase ) >= 0 || i.StatId.IndexOf( textBox.Text, StringComparison.InvariantCultureIgnoreCase ) >= 0 ); } } } }