using LinePutScript;
using LinePutScript.Localization.WPF;
using Microsoft.Win32;
using Panuon.WPF.UI;
using Steamworks;
using Steamworks.Data;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using VPet_Simulator.Windows.Interface;
namespace VPet_Simulator.Windows
{
///
/// winCharacterPanel.xaml 的交互逻辑
///
public partial class winCharacterPanel : WindowX
{
MainWindow mw;
public winCharacterPanel(MainWindow mw)
{
this.mw = mw;
InitializeComponent();
Title = "面板".Translate() + ' ' + mw.PrefixSave;
mw.Windows.Add(this);
foreach (var v in mw.GameSavesData.Statistics.Data)
{
StatList.Add(new StatInfo(v.Key, v.Value.GetDouble()));
}
DataGridStatic.ItemsSource = StatList;
mw.GameSavesData.Statistics.StatisticChanged += Statistics_StatisticChanged;
if (mw.GameSavesData.HashCheck)
{
cb_NoCheat.IsEnabled = true;
if (mw.IsSteamUser)
cb_AgreeUpload.IsEnabled = true;
}
}
private void Statistics_StatisticChanged(Interface.Statistics sender, string name, SetObject value)
{
Dispatcher.Invoke(() =>
{
var v = StatList.FirstOrDefault(x => x.StatId == name);
if (v != null)
{
v.StatCount = value.GetDouble();
}
else
{
StatList.Add(new StatInfo(name, value.GetDouble()));
}
});
}
private ObservableCollection StatList { get; set; } = new();
private class StatInfo : INotifyPropertyChanged
{
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; }
private double _statCount;
///
/// 统计内容
///
public double StatCount
{
get { return _statCount; }
set
{
if (_statCount != value)
{
_statCount = value;
OnPropertyChanged(nameof(StatCount));
}
}
}
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
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
);
}
}
private void WindowX_Closed(object sender, EventArgs e)
{
mw.GameSavesData.Statistics.StatisticChanged -= Statistics_StatisticChanged;
mw.Windows.Remove(this);
}
private void btn_r_save_Click(object sender, RoutedEventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog()
{
FileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "VPet_Rank.png"),
Filter = "PNG Image File|*.png"
};
if (saveFileDialog.ShowDialog() != true)
return;
r_viewbox.ScrollToTop();
FrameworkElement outputbox;
if (r_output.ActualWidth > r_output_base.ActualWidth)
outputbox = r_output;
else
outputbox = r_output_base;
RenderTargetBitmap image = new RenderTargetBitmap((int)outputbox.ActualWidth, (int)outputbox.ActualHeight, 96, 96, PixelFormats.Pbgra32);
image.Render(outputbox);
var path = saveFileDialog.FileName;
using (MemoryStream ms = new MemoryStream())
{
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(image));
encoder.Save(ms);
File.WriteAllBytes(path, ms.ToArray());
if (mw.IsSteamUser && cb_AgreeUpload.IsChecked == true)
SteamScreenshots.AddScreenshot(path, null, image.PixelWidth, image.PixelHeight);
var psi = new ProcessStartInfo
{
FileName = path,
UseShellExecute = true
};
Process.Start(psi);
}
}
private void cb_AgreeUpload_Checked(object sender, RoutedEventArgs e)
{
cb_NoCheat.IsChecked = true;
}
private void cb_NoCheat_Unchecked(object sender, RoutedEventArgs e)
{
cb_AgreeUpload.IsChecked = false;
}
private void btn_r_genRank_Click(object sender, RoutedEventArgs e)
{
btn_r_genRank.IsEnabled = false;
pb_r_genRank.Value = 0;
pb_r_genRank.Visibility = Visibility.Visible;
Task.Run(GenRank);
}
private async void GenRank()
{
mw.Set["v"][(gint)"rank"] = DateTime.Now.Year;
bool useranking = mw.IsSteamUser && await Dispatcher.InvokeAsync(() => cb_AgreeUpload.IsChecked == true);
string petname = mw.GameSavesData.GameSave.Name;
string username = mw.IsSteamUser ? SteamClient.Name : Environment.UserName;
int timelength = mw.GameSavesData.Statistics[(gint)"stat_total_time"];
double timelength_h = (timelength / 3600.0);
double startdatelength = (DateTime.Now - mw.GameSavesData[(gdat)"birthday"]).TotalDays;
double startlengthrank = 0;
if (useranking)
{
Leaderboard? leaderboard = await SteamUserStats.FindOrCreateLeaderboardAsync("stat_total_time", LeaderboardSort.Descending, LeaderboardDisplay.Numeric);
var result = await leaderboard?.ReplaceScore(timelength);
var length = leaderboard?.EntryCount ?? 1.0;
startlengthrank = 1 - ((result?.NewGlobalRank - 1) ?? length) / length;
}
string startlengthranktext;
if (startlengthrank < 0.5)
startlengthranktext = '"' + "主人~多陪陪我~".Translate() + '"';
else
startlengthranktext = '"' + "主人~感谢陪伴~".Translate() + '"';
double timelengthph = timelength_h / startdatelength;
string timelengthphtext;
string timelengthtext;
int timelength_i;
if (timelengthph < 2)
{
timelengthphtext = "同学".Translate();
timelengthtext = '"' + "学长~前辈~".Translate() + '"';
timelength_i = 1;
}
else if (timelengthph < 4)
{
timelengthphtext = "朋友".Translate();
timelengthtext = '"' + "兄弟!".Translate() + '"';
timelength_i = 2;
}
else if (timelengthph < 7)
{
timelengthphtext = "挚友".Translate();
timelengthtext = '"' + "不求同年同月同日生,但求同年同月同日打开《虚拟桌宠模拟器》".Translate() + '"';
timelength_i = 3;
}
else if (timelengthph < 10)
{
timelengthphtext = "家人".Translate();
timelengthtext = '"' + "We are 伐木累~".Translate() + '"';
timelength_i = 4;
}
else
{
timelengthphtext = "女鹅".Translate();
timelengthtext = '"' + "爸妈~ 这么叫好像不太好".Translate() + '"';
timelength_i = 5;
}
await Dispatcher.InvokeAsync(() => pb_r_genRank.Value = 10);
string studytext;
int study_i;
if (mw.GameSavesData.GameSave.Level < 20)
{
studytext = "相当于桌宠的小学学历哦\n\"肃清! {0}的安魂曲☆\"".Translate(petname);
study_i = 1;
}
else if (mw.GameSavesData.GameSave.Level < 40)
{
studytext = "相当于桌宠的中学学历哦\n<高考桌宠100天>".Translate();
study_i = 2;
}
else if (mw.GameSavesData.GameSave.Level < 60)
{
studytext = "相当于桌宠的大学学历哦\n\"大学生上课吃饭睡觉, {0}学习吃饭睡觉, {0}=大学生\"".Translate(petname);
study_i = 3;
}
else if (mw.GameSavesData.GameSave.Level < 80)
{
studytext = "相当于桌宠的博士学历哦\n\"大学生上课吃饭睡觉, 人家和那个带兜帽的没关系啦\"".Translate();
study_i = 4;
}
else
{
studytext = "<虚拟桌宠模拟器砖家>\n\"一定是{0}干的!\"".Translate(username);
study_i = 5;
}
int studyexpmax, studymoneymax;
double studyexpmaxrank = 0, studymoneymaxrank = 0;
if (mw.IsSteamUser)
{
studyexpmax = SteamUserStats.GetStatInt("stat_single_profit_exp");
studymoneymax = SteamUserStats.GetStatInt("stat_single_profit_money");
}
else
{
studyexpmax = mw.GameSavesData.Statistics[(gint)"stat_single_profit_exp"];
studymoneymax = mw.GameSavesData.Statistics[(gint)"stat_single_profit_money"];
}
await Dispatcher.InvokeAsync(() => pb_r_genRank.Value = 20);
if (useranking)
{
Leaderboard? leaderboard = await SteamUserStats.FindOrCreateLeaderboardAsync("stat_single_profit_exp", LeaderboardSort.Descending, LeaderboardDisplay.Numeric);
var result = await leaderboard?.ReplaceScore(studyexpmax);
var length = leaderboard?.EntryCount ?? 1.0;
studyexpmaxrank = 1 - ((result?.NewGlobalRank - 1) ?? length) / length;
leaderboard = await SteamUserStats.FindOrCreateLeaderboardAsync("stat_single_profit_money", LeaderboardSort.Descending, LeaderboardDisplay.Numeric);
result = await leaderboard?.ReplaceScore(studymoneymax);
length = leaderboard?.EntryCount ?? 1.0;
studymoneymaxrank = 1 - ((result?.NewGlobalRank - 1) ?? length) / length;
}
string studyexptext, workmoneytext;
int studyexp_i, workmoney_i;
if (studyexpmaxrank < 0.25)
{
studyexptext = '"' + "在你这个年纪,你怎么睡得着觉的?".Translate() + '"';
studyexp_i = 5;
}
else if (studyexpmaxrank < 0.4)
{
studyexptext = '"' + "孩子学习老不好,多半是废了,快来试试思维驰学习机".Translate() + '"';
studyexp_i = 4;
}
else if (studyexpmaxrank < 0.55)
{
studyexptext = '"' + "孩子学习老不好,多半是废了,快来试试思维驰学习机".Translate() + '"';
studyexp_i = 3;
}
else if (studyexpmaxrank < 0.75)
{
studyexptext = '"' + "学而不思则罔,思而不学则die".Translate() + '"';
studyexp_i = 2;
}
else
{
studyexptext = '"' + "看我量子速读法!".Translate() + '"';
studyexp_i = 1;
}
if (studymoneymaxrank < 0.25)
{
workmoneytext = '"' + "钱钱乃身外之物".Translate() + '"';
workmoney_i = 4;
}
else if (studymoneymaxrank < 0.5)
{
workmoneytext = '"' + "风声雨声读书声声声入耳,日结月结次次结钱钱入账".Translate() + '"';
workmoney_i = 3;
}
else if (studymoneymaxrank < 0.75)
{
workmoneytext = '"' + "有钱能使磨推鬼".Translate() + '"';
workmoney_i = 2;
}
else
{
workmoneytext = '"' + "可是,我真的很需要那些钱钱!".Translate() + '"';
workmoney_i = 1;
}
await Dispatcher.InvokeAsync(() => pb_r_genRank.Value = 40);
int worktime = mw.GameSavesData.Statistics[(gint)"stat_work_time"];
double worktimeph = (double)worktime / timelength;
double worktimephrank = 0;
if (useranking)
{
Leaderboard? leaderboard = await SteamUserStats.FindOrCreateLeaderboardAsync("stat_work_time_ph", LeaderboardSort.Descending, LeaderboardDisplay.Numeric);
var result = await leaderboard?.ReplaceScore((int)(worktimeph * 10000));
var length = leaderboard?.EntryCount ?? 1.0;
worktimephrank = 1 - ((result?.NewGlobalRank - 1) ?? length) / length;
}
string worktimephtext;
int worktime_i;
if (worktimephrank < 0.25)
{
worktimephtext = '"' + "干一天来歇一天, 能混一天是一天".Translate() + '"';
worktime_i = 1;
}
else if (worktimephrank < 0.35)
{
worktimephtext = '"' + "早8晚5,快乐回家".Translate() + '"';
worktime_i = 2;
}
else if (worktimephrank < 0.45)
{
worktimephtext = '"' + "早8晚5,快乐回家".Translate() + '"';
worktime_i = 3;
}
else if (worktimephrank < 0.55)
{
worktimephtext = '"' + "早8晚5,快乐回家".Translate() + '"';
worktime_i = 4;
}
else if (worktimephrank < 0.75)
{
worktimephtext = '"' + "加班没有加班费不是基本常识吗?".Translate() + '"';
worktime_i = 5;
}
else
{
worktimephtext = '"' + "老板! 路灯已经准备好了!".Translate() + '"';
worktime_i = 6;
}
int betterbuytimes = mw.GameSavesData.Statistics[(gint)"stat_buytimes"];
int betterbuycount = (int)mw.GameSavesData.Statistics[(gdbe)"stat_betterbuy"];
Food mostfood = new Food()
{
Name = "None",
};
foreach (var pair in mw.GameSavesData.Statistics.Data.Where(x => x.Key.StartsWith("buy_")).OrderByDescending(x => ((int)x.Value)))
{
var fn = pair.Key.Substring(4);
var f = mw.Foods.FirstOrDefault(x => x.Name == fn);
if (f != null)
{
mostfood = f;
break;
}
}
string foodtext = "啥也没吃,{0}都饿坏了".Translate(petname);
switch (mostfood.Type)
{
case Food.FoodType.Meal:
foodtext = '"' + "人是铁饭是钢, 四菜一汤吃得香".Translate() + '"';
break;
case Food.FoodType.Drug:
foodtext = '"' + "自动购买又忘开了吧?".Translate() + '"';
break;
case Food.FoodType.Drink:
foodtext = '"' + "多喝热水".Translate() + '"';
break;
case Food.FoodType.Functional:
foodtext = '"' + "不是正餐买不起, 而是功能性更有性价比".Translate() + '"';
break;
case Food.FoodType.Snack:
foodtext = '"' + "多吃零食有益心理健康".Translate() + '"';
break;
case Food.FoodType.Gift:
foodtext = '"' + "公若不弃,{0}愿拜为义父!".Translate(petname) + '"';
break;
}
await Dispatcher.InvokeAsync(() => pb_r_genRank.Value = 60);
int autobuytimes = mw.GameSavesData.Statistics[(gint)"stat_autobuy"];
double autobuytimesph = (double)autobuytimes / betterbuytimes;
double autobuytimesphrank = 0;
if (useranking)
{
Leaderboard? leaderboard = await SteamUserStats.FindOrCreateLeaderboardAsync("stat_autobuy_ph", LeaderboardSort.Descending, LeaderboardDisplay.Numeric);
var result = await leaderboard?.ReplaceScore((int)(autobuytimesph * 10000));
var length = leaderboard?.EntryCount ?? 1.0;
autobuytimesphrank = 1 - ((result?.NewGlobalRank - 1) ?? length) / length;
}
string autobuytext;
int autobuy_i;
if (autobuytimesph < 0.25)
{
autobuytext = '"' + "主人, 是担心我乱买东西嘛".Translate() + '"';
autobuy_i = 4;
}
else if (autobuytimesph < 0.5)
{
autobuytext = '"' + "自己赚的钱自己花".Translate() + '"';
autobuy_i = 3;
}
else if (autobuytimesph < 0.75)
{
autobuytext = '"' + "不要小看我的情报网! 你自动购买礼物没关,对不对?".Translate() + '"';
autobuy_i = 2;
}
else
{
autobuytext = '"' + "诚招保姆,工资面议".Translate() + '"';
autobuy_i = 1;
}
await Dispatcher.InvokeAsync(() => pb_r_genRank.Value = 70);
var modworkshoplist = mw.CoreMODs.FindAll(x => x.Path.FullName.Contains("workshop"));
int modworkshop = modworkshoplist.Count;
int modon = modworkshoplist.FindAll(x => x.IsOnMOD(mw)).Count;
double modworkshoprank = 0;
if (useranking)
{
Leaderboard? leaderboard = await SteamUserStats.FindOrCreateLeaderboardAsync("workshop", LeaderboardSort.Descending, LeaderboardDisplay.Numeric);
var result = await leaderboard?.ReplaceScore(modworkshop);
var length = leaderboard?.EntryCount ?? 1.0;
modworkshoprank = 1 - ((result?.NewGlobalRank - 1) ?? length) / length;
}
string modworkshoptext;
int modworkshop_i;
if (modworkshop == 0)
{
modworkshoptext = '"' + "桌宠的steam创意工坊里有许多的mod喵, 主人快去试试吧".Translate() + '"';
modworkshop_i = 3;
}
else if (modworkshoprank < 0.3)
{
modworkshoptext = '"' + "主人还可以再去创意工坊体验更多MOD喵".Translate() + '"';
modworkshop_i = 3;
}
else if (modworkshoprank < 0.7)
{ modworkshoptext = '"' + "创意工坊又更新了很多有趣的mod喵, 主人要不要去看看?".Translate() + '"'; modworkshop_i = 2; }
else
{ modworkshoptext = '"' + "主人已经是mod大师了喵,要不要试试mod制作器,给我做mod喵!".Translate() + '"'; modworkshop_i = 1; }
await Dispatcher.InvokeAsync(() => pb_r_genRank.Value = 80);
int like = (int)mw.GameSavesData.GameSave.Likability;
string liketext = "";
while (like > 100)
{
like -= 100;
liketext += '\uEE0E';
}
while (like > 50)
{
like -= 50;
liketext += '\uEE0F';
}
if (liketext.Length == 0)
{
liketext = "\uEECA";
}
double likerank = 0;
if (useranking)
{
Leaderboard? leaderboard = await SteamUserStats.FindOrCreateLeaderboardAsync("stat_likability", LeaderboardSort.Descending, LeaderboardDisplay.Numeric);
var result = await leaderboard?.ReplaceScore((int)mw.GameSavesData.GameSave.Likability);
var length = leaderboard?.EntryCount ?? 1.0;
likerank = 1 - ((result?.NewGlobalRank - 1) ?? length) / length;
}
await Dispatcher.InvokeAsync(() => pb_r_genRank.Value = 88);
await Dispatcher.InvokeAsync(() =>
{
r_r_startday.Text = mw.GameSavesData[(gdat)"birthday"].ToLongDateString();
r_r_startlength.Text = startdatelength.ToString("f1");
r_r_length_h.Text = timelength_h.ToString("f1");
r_r_length_p.Text = startlengthrank.ToString("p1");
r_r_lenghranktext.Text = startlengthranktext;
r_r_lengthph.Text = timelengthph.ToString("f1");
r_r_lengthphtext.Text = timelengthphtext;
r_r_lenghtext.Text = timelengthtext;
r_i_timelength.Source = new BitmapImage(new Uri($"pack://application:,,,/Res/img/r_timelength_{timelength_i}.png"));
r_r_level.Text = mw.GameSavesData.GameSave.Level.ToString();
r_r_exp.Text = mw.GameSavesData.GameSave.TotalExpGained().ToString("f0");
r_r_studytime.Text = (mw.GameSavesData.Statistics[(gint)"stat_study_time"] / 60).ToString();
r_r_studytext.Text = studytext;
r_i_exp.Source = new BitmapImage(new Uri($"pack://application:,,,/Res/img/r_level_{study_i}.png"));
r_r_studyexpmax.Text = studyexpmax.ToString();
r_r_studyexpmaxrank.Text = studyexpmaxrank.ToString("p1");
r_r_studyexptext.Text = studyexptext;
r_i_singleexp.Source = new BitmapImage(new Uri($"pack://application:,,,/Res/img/r_singleexp_{studyexp_i}.png"));
r_r_worktime.Text = (worktime / 60).ToString();
r_r_worktimeps.Text = worktimeph.ToString("p1");
r_r_worktimepsrank.Text = worktimephrank.ToString("p1");
r_r_worktext.Text = worktimephtext;
r_i_money.Source = new BitmapImage(new Uri($"pack://application:,,,/Res/img/r_worktime_{worktime_i}.png"));
r_r_workmoneymax.Text = studymoneymax.ToString();
r_r_workmoneyrank.Text = studymoneymaxrank.ToString("p1");
r_r_workmoneytext.Text = workmoneytext;
r_i_singlemoney.Source = new BitmapImage(new Uri($"pack://application:,,,/Res/img/r_singlemoney_{workmoney_i}.png"));
r_r_username.Text = username;
r_r_petname.Text = r_r_petname_2.Text = r_r_petname_3.Text = r_r_petname_4.Text = petname;
r_r_now.Text = DateTime.Now.ToShortDateString();
r_r_betterbuytimes.Text = betterbuytimes.ToString();
r_r_betterbuycount.Text = betterbuycount.ToString();
r_r_betterbuymosttype.Text = mostfood.Type.ToString().Translate();
r_r_betterbuymostitem.Text = mostfood.TranslateName;
r_r_betterbuymosttext.Text = foodtext;
r_i_mostfood.Source = new BitmapImage(new Uri($"pack://application:,,,/Res/img/r_mostfood_{mostfood.Type}.png"));
r_r_autobuy.Text = autobuytimes.ToString();
r_r_autobuypres.Text = autobuytimesph.ToString("p1");
r_r_autobuyrank.Text = autobuytimesphrank.ToString("p1");
r_r_autobuytext.Text = autobuytext;
r_i_autobuy.Source = new BitmapImage(new Uri($"pack://application:,,,/Res/img/r_autobuy_{autobuy_i}.png"));
r_r_modcount.Text = modworkshop.ToString();
r_r_modenablecount.Text = modon.ToString();
r_r_modcountrank.Text = modworkshoprank.ToString("p1");
r_r_modcounttext.Text = modworkshoptext;
r_i_mod.Source = new BitmapImage(new Uri($"pack://application:,,,/Res/img/r_mod_{modworkshop_i}.png"));
r_r_sleeplength.Text = (mw.GameSavesData.Statistics[(gint)"stat_sleep_time"] / 3600.0).ToString("f1");
r_r_movelength.Text = px_tocm(mw.GameSavesData.Statistics[(gi64)"stat_move_length"], out string cm);
r_r_movelengthcm.Text = cm;
r_r_saycount.Text = mw.GameSavesData.Statistics[(gint)"stat_say_times"].ToString();
r_r_musiccount.Text = mw.GameSavesData.Statistics[(gint)"stat_music"].ToString();
r_r_touchtotal.Text = (mw.GameSavesData.Statistics[(gint)"stat_touch_body"] + mw.GameSavesData.Statistics[(gint)"stat_touch_head"]).ToString();
if (mw.GameSavesData.GameSave.Likability > 100)
r_i_like.Visibility = Visibility.Visible;
else
r_i_like.Visibility = Visibility.Collapsed;
r_r_opencount.Text = mw.GameSavesData.Statistics[(gint)"stat_open_times"].ToString();
r_r_bettercount.Text = mw.GameSavesData.Statistics[(gint)"stat_100_all"].ToString();
r_r_likecount.Text = liketext;
r_r_likecountrank.Text = likerank.ToString("p1");
r_viewbox.Visibility = Visibility.Visible;
btn_r_genRank.IsEnabled = true;
btn_r_save.IsEnabled = true;
pb_r_genRank.Visibility = Visibility.Collapsed;
Width = 800;
Height = 800;
});
}
private string px_tocm(long px, out string cm)
{
if (px < 37795)
{
cm = "px";
return px.ToString();
}
else if (px < 3779527)
{
cm = "cm";
return (px * 2.54 / 96).ToString("f1");
}
else if (px < 377952755)
{
cm = "m";
return (px * 2.54 / 9600).ToString("f1");
}
else
{
cm = "km";
return (px * 2.54 / 9600000).ToString("f1");
}
}
}
}