Merge branch 'LorisYounger:main' into main

This commit is contained in:
Dragon Taki 2023-09-25 22:38:21 +08:00 committed by GitHub
commit e879041e90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 326 additions and 112 deletions

View File

@ -449,7 +449,7 @@ namespace VPet_Simulator.Core
public void Display(string name, AnimatType animat, GraphType Type, Action<string> EndAction = null)
{
var list = Core.Graph.FindGraphs(name, animat, Core.Save.Mode)?.FindAll(x => x.GraphInfo.Type == Type);
if (list != null && list.Count > 0)
if ((list?.Count ?? -1) > 0)
Display(list[Function.Rnd.Next(list.Count)], () => EndAction(name));
else
Display(Type, animat, EndAction);
@ -464,7 +464,7 @@ namespace VPet_Simulator.Core
public void Display(string name, AnimatType animat, GraphType Type, Action EndAction = null)
{
var list = Core.Graph.FindGraphs(name, animat, Core.Save.Mode)?.FindAll(x => x.GraphInfo.Type == Type);
if (list.Count > 0)
if ((list?.Count ?? -1) > 0)
Display(list[Function.Rnd.Next(list.Count)], EndAction);
else
Display(Type, animat, EndAction);

View File

@ -41,6 +41,39 @@ namespace VPet_Simulator.Core
/// </summary>
public DateTime StartTime;
/// <summary>
/// 任务完成时调用该参数
/// </summary>
public event Action<FinishWorkInfo> E_FinishWork;
/// <summary>
/// 完成工作信息
/// </summary>
public struct FinishWorkInfo
{
/// <summary>
/// 当前完成工作
/// </summary>
public Work work;
/// <summary>
/// 当前完成工作收入
/// </summary>
public double count;
/// <summary>
/// 当前完成工作花费时间
/// </summary>
public double spendtime;
/// <summary>
/// 完成工作信息
/// </summary>
/// <param name="work">当前工作</param>
/// <param name="count">当前盈利(自动计算附加)</param>
public FinishWorkInfo(Work work, double count)
{
this.work = work;
this.count = count * (1 + work.FinishBonus);
this.spendtime = work.Time;
}
}
/// <summary>
/// UI相关显示
/// </summary>
/// <param name="m"></param>
@ -55,17 +88,19 @@ namespace VPet_Simulator.Core
//ts = TimeSpan.FromMinutes(MaxTime);
//tleft = TimeSpan.Zero;
//PBLeft.Value = MaxTime;
FinishWorkInfo fwi = new FinishWorkInfo(nowWork, GetCount);
E_FinishWork?.Invoke(fwi);
if (nowWork.Type == Work.WorkType.Work)
{
m.Core.Save.Money += GetCount * nowWork.FinishBonus;
Stop(() => m.SayRnd(LocalizeCore.Translate("{2}完成啦, 累计赚了 {0:f2} 金钱\n共计花费了{1}分钟", GetCount * (1 + nowWork.FinishBonus),
nowWork.Time, nowWork.NameTrans), true));
Stop(() => m.SayRnd(LocalizeCore.Translate("{2}完成啦, 累计赚了 {0:f2} 金钱\n共计花费了{1}分钟", fwi.count,
fwi.spendtime, fwi.work.NameTrans), true));
}
else
{
m.Core.Save.Exp += GetCount * nowWork.FinishBonus;
Stop(() => m.SayRnd(LocalizeCore.Translate("{2}完成啦, 累计获得 {0:f2} 经验\n共计花费了{1}分钟", GetCount * (1 + nowWork.FinishBonus),
nowWork.Time, nowWork.NameTrans), true));
Stop(() => m.SayRnd(LocalizeCore.Translate("{2}完成啦, 累计获得 {0:f2} 经验\n共计花费了{1}分钟", fwi.count,
fwi.spendtime, fwi.work.NameTrans), true));
}
return;
}

View File

@ -188,12 +188,12 @@ namespace VPet_Simulator.Windows
Set.StartRecordLastPoint = new Point(Dispatcher.Invoke(() => Left), Dispatcher.Invoke(() => Top));
File.WriteAllText(ExtensionValue.BaseDirectory + @"\Setting.lps", Set.ToString());
if (!Directory.Exists(ExtensionValue.BaseDirectory + @"\BackUP"))
Directory.CreateDirectory(ExtensionValue.BaseDirectory + @"\BackUP");
if (!Directory.Exists(ExtensionValue.BaseDirectory + @"\Saves"))
Directory.CreateDirectory(ExtensionValue.BaseDirectory + @"\Saves");
if (Core != null && Core.Save != null)
{
var ds = new List<string>(Directory.GetFiles(ExtensionValue.BaseDirectory + @"\BackUP", "*.lps")).FindAll(x => x.Contains('_')).OrderBy(x =>
var ds = new List<string>(Directory.GetFiles(ExtensionValue.BaseDirectory + @"\Saves", "*.lps")).FindAll(x => x.Contains('_')).OrderBy(x =>
{
if (int.TryParse(x.Split('_')[1].Split('.')[0], out int i))
return i;
@ -204,13 +204,13 @@ namespace VPet_Simulator.Windows
File.Delete(ds[0]);
ds.RemoveAt(0);
}
if (File.Exists(ExtensionValue.BaseDirectory + $"\\BackUP\\Save_{st}.lps"))
File.Delete(ExtensionValue.BaseDirectory + $"\\BackUP\\Save_{st}.lps");
if (File.Exists(ExtensionValue.BaseDirectory + $"\\Saves\\Save_{st}.lps"))
File.Delete(ExtensionValue.BaseDirectory + $"\\Saves\\Save_{st}.lps");
if (File.Exists(ExtensionValue.BaseDirectory + @"\Save.lps"))
File.Move(ExtensionValue.BaseDirectory + @"\Save.lps", ExtensionValue.BaseDirectory + $"\\BackUP\\Save_{st}.lps");
File.WriteAllText(ExtensionValue.BaseDirectory + @"\Save.lps", GameSavesData.ToLPS().ToString());
File.Move(ExtensionValue.BaseDirectory + @"\Save.lps", ExtensionValue.BaseDirectory + @"\Save.bkp");
File.WriteAllText(ExtensionValue.BaseDirectory + $"\\Saves\\Save_{st}.lps", GameSavesData.ToLPS().ToString());
}
}
}
@ -308,6 +308,7 @@ namespace VPet_Simulator.Windows
var item = food[Function.Rnd.Next(food.Count)];
Core.Save.Money -= item.Price * 0.2;
TakeItem(item);
GameSavesData.Statistics[(gint)"stat_autobuy"]++;
Main.Display(item.GetGraph(), item.ImageSource, Main.DisplayToNomal);
}
else if (Core.Save.StrengthDrink < 75)
@ -318,6 +319,7 @@ namespace VPet_Simulator.Windows
var item = food[Function.Rnd.Next(food.Count)];
Core.Save.Money -= item.Price * 0.2;
TakeItem(item);
GameSavesData.Statistics[(gint)"stat_autobuy"]++;
Main.Display(item.GetGraph(), item.ImageSource, Main.DisplayToNomal);
}
else if (Set.AutoGift && Core.Save.Feeling < 50)
@ -328,6 +330,7 @@ namespace VPet_Simulator.Windows
var item = food[Function.Rnd.Next(food.Count)];
Core.Save.Money -= item.Price * 0.2;
TakeItem(item);
GameSavesData.Statistics[(gint)"stat_autogift"]++;
Main.Display(item.GetGraph(), item.ImageSource, Main.DisplayToNomal);
}
}
@ -459,6 +462,7 @@ namespace VPet_Simulator.Windows
Core.Save.Money -= item.Price;
//统计
GameSavesData.Statistics[(gint)"stat_buytimes"]++;
GameSavesData.Statistics[(gint)("buy_" + item.Name)]++;
GameSavesData.Statistics[(gdbe)"stat_betterbuy"] += item.Price;
switch (item.Type)
@ -471,6 +475,7 @@ namespace VPet_Simulator.Windows
break;
case Food.FoodType.Drug:
GameSavesData.Statistics[(gdbe)"stat_bb_drug"] += item.Price;
GameSavesData.Statistics[(gdbe)"stat_bb_drug_exp"] += item.Exp;
break;
case Food.FoodType.Snack:
GameSavesData.Statistics[(gdbe)"stat_bb_snack"] += item.Price;
@ -483,6 +488,7 @@ namespace VPet_Simulator.Windows
break;
case Food.FoodType.Gift:
GameSavesData.Statistics[(gdbe)"stat_bb_gift"] += item.Price;
GameSavesData.Statistics[(gdbe)"stat_bb_gift_like"] += item.Likability;
break;
}
}
@ -627,6 +633,14 @@ namespace VPet_Simulator.Windows
}
private void Handle_Steam(Main obj)
{
if (HashCheck)
{
SteamFriends.SetRichPresence("lv", $" (lv{GameSavesData.GameSave.Level})");
}
else
{
SteamFriends.SetRichPresence("lv", " ");
}
if (Core.Save.Mode == GameSave.ModeType.Ill)
{
SteamFriends.SetRichPresence("steam_display", "#Status_Ill");
@ -647,7 +661,23 @@ namespace VPet_Simulator.Windows
if (obj.DisplayType.Name == "music")
SteamFriends.SetRichPresence("steam_display", "#Status_Music");
else
{
switch (obj.DisplayType.Type)
{
case GraphType.Move:
SteamFriends.SetRichPresence("idel", "乱爬".Translate());
break;
case GraphType.Idel:
case GraphType.StateONE:
case GraphType.StateTWO:
SteamFriends.SetRichPresence("idel", "发呆".Translate());
break;
default:
SteamFriends.SetRichPresence("idel", "闲逛".Translate());
break;
}
SteamFriends.SetRichPresence("steam_display", "#Status_IDLE");
}
break;
}
}
@ -714,6 +744,8 @@ namespace VPet_Simulator.Windows
if (CurrMusicType != null && Main.IsIdel)
{//识别通过,开始跑跳舞动画
//先统计下
GameSavesData.Statistics[(gint)"stat_music"]++;
Main.Display(Core.Graph.FindGraph("music", AnimatType.A_Start, Core.Save.Mode), Display_Music);
}
else

View File

@ -108,8 +108,8 @@ namespace VPet_Simulator.Windows
var point = Set.StartRecordLastPoint;
if (point.X != 0 || point.Y != 0)
{
L= point.X;
T = point.Y;
L = point.X;
T = point.Y;
}
}
else
@ -155,6 +155,26 @@ namespace VPet_Simulator.Windows
}
Closed += ForceClose;
//更新存档系统
if (Directory.Exists(ExtensionValue.BaseDirectory + @"\BackUP"))
{
if (!Directory.Exists(ExtensionValue.BaseDirectory + @"\Saves"))
Directory.Move(ExtensionValue.BaseDirectory + @"\BackUP", ExtensionValue.BaseDirectory + @"\Saves");
else
{
foreach (var file in new DirectoryInfo(ExtensionValue.BaseDirectory + @"\BackUP").GetFiles())
if (!File.Exists(ExtensionValue.BaseDirectory + @"\Saves\" + file.Name))
file.MoveTo(ExtensionValue.BaseDirectory + @"\Saves\" + file.Name);
else
file.Delete();
Directory.Delete(ExtensionValue.BaseDirectory + @"\BackUP");
}
}
if (!Directory.Exists(ExtensionValue.BaseDirectory + @"\Saves"))
{
Directory.CreateDirectory(ExtensionValue.BaseDirectory + @"\Saves");
}
Task.Run(GameLoad);
}
catch (Exception e)
@ -258,9 +278,9 @@ namespace VPet_Simulator.Windows
public void LoadLatestSave(string petname)
{
if (Directory.Exists(ExtensionValue.BaseDirectory + @"\BackUP"))
if (Directory.Exists(ExtensionValue.BaseDirectory + @"\Saves"))
{
var ds = new List<string>(Directory.GetFiles(ExtensionValue.BaseDirectory + @"\BackUP", "*.lps")).FindAll(x => x.Contains('_')).OrderBy(x =>
var ds = new List<string>(Directory.GetFiles(ExtensionValue.BaseDirectory + @"\Saves", "*.lps")).FindAll(x => x.Contains('_')).OrderBy(x =>
{
if (int.TryParse(x.Split('_')[1].Split('.')[0], out int i))
return i;
@ -383,11 +403,6 @@ namespace VPet_Simulator.Windows
else//新玩家,默认设置为
Set["CGPT"][(gstr)"type"] = "LB";
if (Directory.Exists(ExtensionValue.BaseDirectory + @"\UserData") && !Directory.Exists(ExtensionValue.BaseDirectory + @"\BackUP"))
{
Directory.Move(ExtensionValue.BaseDirectory + @"\UserData", ExtensionValue.BaseDirectory + @"\BackUP");
}
//加载数据合理化:食物
if (!Set["gameconfig"].GetBool("noAutoCal"))
{
@ -410,7 +425,7 @@ namespace VPet_Simulator.Windows
await Dispatcher.InvokeAsync(new Action(() => LoadingText.Content = "尝试加载游戏存档".Translate()));
//加载存档
if (File.Exists(ExtensionValue.BaseDirectory + @"\Save.lps"))
if (File.Exists(ExtensionValue.BaseDirectory + @"\Save.lps")) //有老的旧存档,优先旧存档
try
{
if (!GameLoad(new LpsDocument(File.ReadAllText(ExtensionValue.BaseDirectory + @"\Save.lps"))))
@ -471,6 +486,15 @@ namespace VPet_Simulator.Windows
SteamFriends.SetRichPresence("username", Core.Save.Name);
SteamFriends.SetRichPresence("mode", (Core.Save.Mode.ToString() + "ly").Translate());
SteamFriends.SetRichPresence("steam_display", "#Status_IDLE");
SteamFriends.SetRichPresence("idel", "闲逛".Translate());
if (HashCheck)
{
SteamFriends.SetRichPresence("lv", $" (lv{GameSavesData.GameSave.Level})");
}
else
{
SteamFriends.SetRichPresence("lv", " ");
}
}
else
{
@ -539,6 +563,7 @@ namespace VPet_Simulator.Windows
winSetting.Show();
};
Main.FunctionSpendHandle += lowStrength;
Main.WorkTimer.E_FinishWork += WorkTimer_E_FinishWork;
Main.ToolBar.MenuMODConfig.Items.Add(m);
try
{
@ -669,6 +694,7 @@ namespace VPet_Simulator.Windows
m_menu = new ContextMenu();
m_menu.Popup += (x, y) => { GameSavesData.Statistics[(gint)"stat_menu_pop"]++; };
m_menu.MenuItems.Add(new MenuItem("鼠标穿透".Translate(), (x, y) => { SetTransparentHitThrough(); }) { });
m_menu.MenuItems.Add(new MenuItem("操作教程".Translate(), (x, y) =>
{
@ -796,6 +822,22 @@ namespace VPet_Simulator.Windows
}
private void M_menu_Popup(object sender, EventArgs e)
{
throw new NotImplementedException();
}
private void WorkTimer_E_FinishWork(WorkTimer.FinishWorkInfo obj)
{
if (obj.work.Type == GraphHelper.Work.WorkType.Work)
{
GameSavesData.Statistics[(gint)"stat_single_profit_money"] = (int)obj.count;
}
else
{
GameSavesData.Statistics[(gint)"stat_single_profit_exp"] = (int)obj.count;
}
}
private void Main_Event_TouchBody()
{

View File

@ -4,10 +4,10 @@
{
"tokens"
{
"#Status_IDLE" "%username%在%mode%闲逛"
"#Status_Music" "%username%在%mode%跳舞"
"#Status_Sleep" "%username%在%mode%睡大觉"
"#Status_Work" "%username%在%mode%%work%"
"#Status_IDLE" "%username%在%mode%%idel%%lv%"
"#Status_Music" "%username%在%mode%跳舞%lv%"
"#Status_Sleep" "%username%在%mode%睡大觉%lv%"
"#Status_Work" "%username%在%mode%%work%%lv%"
"#Status_DIY" "%DIY%"
"#Status_Ill" "%username% 生病了"
}
@ -16,10 +16,10 @@
{
"tokens"
{
"#Status_IDLE" "%username%在%mode%閒逛"
"#Status_Music" "%username%在%mode%跳舞"
"#Status_Sleep" "%username%在%mode%睡大覺"
"#Status_Work" "%username%在%mode%%work%"
"#Status_IDLE" "%username%在%mode%%idel%%lv%"
"#Status_Music" "%username%在%mode%跳舞%lv%"
"#Status_Sleep" "%username%在%mode%睡大覺%lv%"
"#Status_Work" "%username%在%mode%%work%%lv%"
"#Status_DIY" "%DIY%"
"#Status_Ill" "%username% 生病了"
}
@ -28,10 +28,10 @@
{
"tokens"
{
"#Status_IDLE" "%username% is %mode% idle"
"#Status_Music" "%username% dancing %mode%"
"#Status_Sleep" "%username% Sleep %mode%"
"#Status_Work" "%username% %work% %mode%"
"#Status_IDLE" "%username% is %mode% %idel%%lv%"
"#Status_Music" "%username% dancing %mode%%lv%"
"#Status_Sleep" "%username% Sleep %mode%%lv%"
"#Status_Work" "%username% %work% %mode%%lv%"
"#Status_DIY" "%DIY%"
"#Status_Ill" "%username% is sick"
}

View File

@ -1,4 +1,5 @@
using LinePutScript.Localization.WPF;
using LinePutScript;
using LinePutScript.Localization.WPF;
using System;
using System.Collections.Generic;
using System.Linq;
@ -115,6 +116,29 @@ namespace VPet_Simulator.Windows
var say = textList[tbTalk.SelectedIndex];
textList.RemoveAt(tbTalk.SelectedIndex);
//聊天效果
if (say.Exp != 0)
{
if (say.Exp > 0)
{
mw.GameSavesData.Statistics[(gint)"stat_say_exp_p"]++;
}
else
mw.GameSavesData.Statistics[(gint)"stat_say_exp_d"]++;
}
if (say.Likability != 0)
{
if (say.Likability > 0)
mw.GameSavesData.Statistics[(gint)"stat_say_like_p"]++;
else
mw.GameSavesData.Statistics[(gint)"stat_say_like_d"]++;
}
if(say.Money != 0)
{
if (say.Money > 0)
mw.GameSavesData.Statistics[(gint)"stat_say_money_p"]++;
else
mw.GameSavesData.Statistics[(gint)"stat_say_money_d"]++;
}
mw.Main.Core.Save.EatFood(say);
mw.Main.Core.Save.Money += say.Money;
@ -136,7 +160,7 @@ namespace VPet_Simulator.Windows
break;
}
}
}
}
RelsSelect();
}
}

View File

@ -6,8 +6,8 @@
xmlns:local="clr-namespace:VPet_Simulator.Windows"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pu="clr-namespace:Panuon.WPF.UI;assembly=Panuon.WPF.UI"
xmlns:system="clr-namespace:System;assembly=mscorlib" Title="{ll:Str 设置}" Width="{ll:Dbe SettingWidth,
DefValue=500}" Height="550" Closing="WindowX_Closing" FontSize="16"
xmlns:system="clr-namespace:System;assembly=mscorlib" Title="{ll:Str 设置}"
Width="{ll:Dbe SettingWidth, DefValue=500}" Height="550" Closing="WindowX_Closing" FontSize="16"
Style="{DynamicResource BaseWindowXStyle}" Topmost="True" WindowStartupLocation="CenterScreen" mc:Ignorable="d">
<!--<pu:WindowX.Resources>
<DataTemplate x:Key="DIYDataTemplate">
@ -53,6 +53,7 @@
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="1" VerticalAlignment="Center" Text="{ll:Str 快速切换}" />
@ -214,6 +215,16 @@
<ComboBox x:Name="PetBox" Grid.Row="11" Grid.Column="2" Margin="0,3,0,2" FontSize="16"
SelectionChanged="PetBox_SelectionChanged"
Style="{DynamicResource StandardComboBoxStyle}" ToolTip="{ll:Str '加载的宠物动画,重启后生效'}" />
<TextBlock Grid.Row="13" VerticalAlignment="Center" Text="{ll:Str 隐藏窗口}" />
<pu:Switch x:Name="SwitchHideFromTaskControl" Grid.Row="13" Grid.Column="2"
Background="Transparent" BorderBrush="{DynamicResource PrimaryDark}" BoxHeight="18"
BoxWidth="35" Checked="SwitchHideFromTaskControl_OnChecked"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
Content="{ll:Str '在任务切换器中隐藏窗口'}" ToggleBrush="{DynamicResource PrimaryDark}"
ToggleShadowColor="{x:Null}" ToggleSize="14" ToolTip="{ll:Str '在Alt+Tab中隐藏'}"
Unchecked="SwitchHideFromTaskControl_OnChecked" />
</Grid>
</ScrollViewer>
<Button x:Name="ButtonRestartGraph" VerticalAlignment="Bottom"
@ -239,6 +250,11 @@
<system:Int32>-1</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str 每2分钟一次}">
<ComboBoxItem.Tag>
<system:Int32>2</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str 每5分钟一次}">
<ComboBoxItem.Tag>
<system:Int32>5</system:Int32>
@ -297,7 +313,7 @@
<TextBlock Margin="0,5,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
Background="{x:Null}" TextWrapping="Wrap">
<Run FontSize="18" FontWeight="Bold" Text="{ll:Str 聊天设置}" /><LineBreak />
<Run Text="{ll:Str 使用ChatGPT进行聊天等相关设置}" />
<Run Text="{ll:Str 聊天等相关设置}" />
</TextBlock>
<Grid>
<Grid.ColumnDefinitions>
@ -309,7 +325,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" VerticalAlignment="Center" Text="{ll:Str 使用模式}" />
<TextBlock x:Name="tbMode" Grid.Row="0" VerticalAlignment="Center" Text="{ll:Str 使用模式}" />
<TextBlock Grid.Row="1" VerticalAlignment="Center" Text="{ll:Str 相关功能}" />
<Grid Grid.Column="2">
<Grid.ColumnDefinitions>
@ -320,20 +336,35 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RadioButton x:Name="RBCGPTUseAPI" Grid.Column="1" Checked="CGPType_Checked"
<!--<RadioButton x:Name="RBCGPTUseAPI" Grid.Column="1" Checked="CGPType_Checked"
Content="{ll:Str '使用从ChatGPT\&#13;申请的的API'}" GroupName="cgpttype"
Style="{DynamicResource StandardRadioButtonStyle}"
ToolTip="{ll:Str 需要去OpenAI官网申请}" />
ToolTip="{ll:Str 需要去OpenAI官网申请}" />-->
<RadioButton x:Name="RBCGPTUseLB" Checked="CGPType_Checked"
Content="{ll:Str '使用桌宠选项式\&#13;聊天功能'}" GroupName="cgpttype" IsChecked="True"
Style="{DynamicResource StandardRadioButtonStyle}"
ToolTip="{ll:Str 支持MOD与创意工坊添加聊天内容}" />
<RadioButton x:Name="RBCGPTClose" Grid.Row="1" Checked="CGPType_Checked"
<RadioButton x:Name="RBCGPTClose" Grid.Column="1" Checked="CGPType_Checked"
Content="{ll:Str '关闭聊天框'}" GroupName="cgpttype"
Style="{DynamicResource StandardRadioButtonStyle}" />
<RadioButton x:Name="RBCGPTDIY" Grid.Row="1" Grid.Column="1" Checked="CGPType_Checked"
Content="{ll:Str '自定义聊天接口'}" GroupName="cgpttype" IsEnabled="False"
Style="{DynamicResource StandardRadioButtonStyle}" />
<RadioButton x:Name="RBCGPTDIY" Grid.Row="1" Checked="CGPType_Checked"
GroupName="cgpttype" Style="{DynamicResource StandardRadioButtonStyle}"
Grid.ColumnSpan="2">
<Grid Width="{Binding ActualWidth,ElementName=RBCGPTDIY}">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="40" />
</Grid.ColumnDefinitions>
<Label Content="{ll:Str '自定义聊天接口'}" Background="{x:Null}" />
<ComboBox x:Name="cbChatAPISelect"
Style="{DynamicResource StandardComboBoxStyle}" Grid.Column="0"
Grid.Row="1" SelectionChanged="cbChatAPISelect_SelectionChanged" />
</Grid>
</RadioButton>
</Grid>
<Button x:Name="BtnCGPTReSet" Grid.Row="1" Grid.Column="2" Margin="4" Padding="1"
pu:ButtonHelper.CornerRadius="4" Background="{DynamicResource SecondaryLight}"
@ -347,8 +378,8 @@
Background="{DynamicResource SecondaryLight}" Click="save_click" Content="{ll:Str 保存游戏}"
ToolTip="{ll:Str '手动保存桌宠存档,就算不手动保存,桌宠也会在退出的时候自动保存'}" />
<Button Grid.Row="1" Grid.Column="2" Margin="4" Padding="1" pu:ButtonHelper.CornerRadius="4"
Background="{DynamicResource SecondaryLight}"
Content="{ll:Str 重新开始}" ToolTip="{ll:Str '重新开始新游戏,重置统计等信息\&#13;对于想要获得脱离超模从而获得成就非常有帮助'}" Click="restart_click" />
Background="{DynamicResource SecondaryLight}" Content="{ll:Str 重新开始}"
ToolTip="{ll:Str '重新开始新游戏,重置统计等信息\&#13;对于想要获得脱离超模从而获得成就非常有帮助'}" Click="restart_click" />
<Button Grid.Row="1" Grid.Column="2" Margin="4" Padding="1" pu:ButtonHelper.CornerRadius="4"
Background="{DynamicResource SecondaryLight}" Click="cleancache_click"
Content="{ll:Str 清理缓存}" ToolTip="{ll:Str '清理缓存的动画,声音文件'}" />
@ -377,6 +408,7 @@
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<pu:Switch x:Name="CalFunctionBox" Grid.Column="2" Background="Transparent"
BorderBrush="{DynamicResource PrimaryDark}" BoxHeight="18" BoxWidth="35"
@ -404,7 +436,7 @@
<ComboBoxItem Content="Ill" />
</ComboBox>
</Grid>
<Grid Grid.Row="5" Grid.RowSpan="2" Grid.Column="2">
<Grid Grid.Row="5" Grid.RowSpan="4" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
@ -491,7 +523,37 @@
</ComboBoxItem>
</ComboBox>
</Grid>
<Grid Grid.Row="7" Grid.Column="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<WrapPanel Grid.ColumnSpan="3">
<TextBlock Text="{ll:Str '当前移动区域:'}" />
<TextBlock x:Name="textMoveArea" Text="{ll:Str '主屏幕'}" />
</WrapPanel>
<Button x:Name="BtnSetMoveArea_Default" Grid.Row="1" Grid.Column="0" Margin="5,5,5,5"
Padding="1" pu:ButtonHelper.CornerRadius="4"
Background="{DynamicResource SecondaryLight}"
Click="BtnSetMoveArea_Default_Click" Content="{ll:Str 重置为主屏}"
ToolTip="{ll:Str '设置桌宠只在主屏幕进行移动'}" />
<Button x:Name="BtnSetMoveArea_DetectScreen" Grid.Row="1" Grid.Column="1"
Margin="5,5,5,5" Padding="1" pu:ButtonHelper.CornerRadius="4"
Background="{DynamicResource SecondaryLight}"
Click="BtnSetMoveArea_DetectScreen_Click" Content="{ll:Str 设为当前屏幕}"
ToolTip="{ll:Str '设置桌宠只在当前桌宠所在的屏幕范围进行移动'}" />
<Button x:Name="BtnSetMoveArea_Window" Grid.Row="1" Grid.Column="2" Margin="5,5,5,5"
Padding="1" pu:ButtonHelper.CornerRadius="4"
Background="{DynamicResource SecondaryLight}"
Click="BtnSetMoveArea_Window_Click" Content="{ll:Str 自定移动范围}"
ToolTip="{ll:Str '手动设置桌宠可移动范围'}" />
</Grid>
<TextBlock Grid.Row="0" VerticalAlignment="Center" Text="{ll:Str 数据计算}" />
<TextBlock Grid.Row="1" VerticalAlignment="Center" Text="{ll:Str 显示状态}" />
<TextBlock Grid.Row="5" VerticalAlignment="Center" Text="{ll:Str 桌宠移动}" />
@ -650,56 +712,59 @@
</TabItem>
<TabItem BorderBrush="{DynamicResource PrimaryDarker}" Header="{ll:Str 诊断}">
<StackPanel>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
TextWrapping="Wrap">
<Run FontSize="18" FontWeight="Bold" Text="{ll:Str 自动超模MOD优化}" /><LineBreak />
<Run Text="{ll:Str '对于超模内容,游戏会自动计算合理价格\&#13;如果未使用任何超模数据,数据菜单栏将会显示图标方便您进行炫耀数据'}" />
</TextBlock>
<pu:Switch x:Name="swAutoCal" Grid.Column="2" Background="Transparent" BorderBrush="{DynamicResource PrimaryDark}"
BoxHeight="18" BoxWidth="35"
CheckedBackground="{DynamicResource Primary}" CheckedBorderBrush="{DynamicResource Primary}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Content="{ll:Str '自动计算合理价格'}"
ToggleBrush="{DynamicResource PrimaryDark}" ToggleShadowColor="{x:Null}" ToggleSize="14"
ToolTip="{ll:Str '该选项重启后生效'}" HorizontalAlignment="Left"
Margin="20,0,0,0"
Checked="swAutoCal_Checked" Unchecked="swAutoCal_Checked" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}" FontSize="13"
TextWrapping="Wrap" Margin="0,20,0,0">
<Run FontSize="18" FontWeight="Bold" Text="{ll:Str 诊断与反馈}" /> <LineBreak />
<Run Text="{ll:Str '选择要发送给 LBGame 的诊断数据,诊断数据用于保护和及时更新 虚拟桌宠模拟器, 解决问题并改进产品.'}" /><LineBreak />
<Run Text="{ll:Str '无论选择哪个选项,游戏都可以安全正常地运行.'}" /> <Hyperlink Click="hyper_moreInfo">
<Run Text="{ll:Str 获取有关这些设置的更多信息}" />
</Hyperlink>
<LineBreak /> <Run FontWeight="Bold" Text="{ll:Str '当前存档Hash验证信息'}" />
:<Run x:Name="RHashCheck" FontWeight="Bold" Text="通过" />
</TextBlock>
<RadioButton x:Name="RBDiagnosisYES" Margin="10,10,10,0" HorizontalAlignment="Left"
VerticalAlignment="Top" Checked="RBDiagnosisYES_Checked"
Content="{ll:Str '发送诊断数据: 发送游戏存档, 包括饱腹,状态等各种游戏内\&#13;数据. 可能会包括该游戏内存和CPU使用情况'}"
GroupName="diagnosis" Style="{DynamicResource StandardRadioButtonStyle}" />
<RadioButton x:Name="RBDiagnosisNO" Margin="10,10,10,0" HorizontalAlignment="Left"
VerticalAlignment="Top" Checked="RBDiagnosisNO_Checked"
Content="{ll:Str '不发送诊断数据: 适用于启用修改器,修改过游戏数据等不\&#13;符合分析数据条件. 或不希望提供游戏数据的玩家'}"
GroupName="diagnosis" IsChecked="True" Style="{DynamicResource StandardRadioButtonStyle}" />
<TextBlock Margin="0,15,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
Background="{x:Null}" TextWrapping="Wrap">
<Run FontWeight="Bold" Text="{ll:Str 反馈频率}" /><LineBreak />
<Run Text="{ll:Str 'VOS 应寻求我反馈按以下频率'}" />
</TextBlock>
<ComboBox x:Name="CBDiagnosis" Width="200" Margin="10,5,0,0" HorizontalAlignment="Left"
VerticalAlignment="Top" IsEnabled="False" SelectedIndex="1"
SelectionChanged="CBDiagnosis_SelectionChanged"
Style="{DynamicResource StandardComboBoxStyle}">
<ComboBoxItem Content="{ll:Str '每 两百 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 五百 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 一千 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 两千 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 五千 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 一万 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 两万 周期一次'}" />
</ComboBox>
</StackPanel>
<ScrollViewer>
<StackPanel>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
TextWrapping="Wrap">
<Run FontSize="18" FontWeight="Bold" Text="{ll:Str 自动超模MOD优化}" /><LineBreak />
<Run Text="{ll:Str '对于超模内容,游戏会自动计算合理价格\&#13;如果未使用任何超模数据,数据菜单栏将会显示图标方便您进行炫耀数据'}" />
</TextBlock>
<pu:Switch x:Name="swAutoCal" Grid.Column="2" Background="Transparent"
BorderBrush="{DynamicResource PrimaryDark}" BoxHeight="18" BoxWidth="35"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Content="{ll:Str '自动计算合理价格'}"
ToggleBrush="{DynamicResource PrimaryDark}" ToggleShadowColor="{x:Null}" ToggleSize="14"
ToolTip="{ll:Str '该选项重启后生效'}" HorizontalAlignment="Left" Margin="20,0,0,0"
Checked="swAutoCal_Checked" Unchecked="swAutoCal_Checked" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
FontSize="13" TextWrapping="Wrap" Margin="0,20,0,0">
<Run FontSize="18" FontWeight="Bold" Text="{ll:Str 诊断与反馈}" /> <LineBreak />
<Run Text="{ll:Str '选择要发送给 LBGame 的诊断数据,诊断数据用于保护和及时更新 虚拟桌宠模拟器, 解决问题并改进产品.'}" /><LineBreak />
<Run Text="{ll:Str '无论选择哪个选项,游戏都可以安全正常地运行.'}" /> <Hyperlink Click="hyper_moreInfo">
<Run Text="{ll:Str 获取有关这些设置的更多信息}" />
</Hyperlink>
<LineBreak /> <Run FontWeight="Bold" Text="{ll:Str '当前存档Hash验证信息'}" />
:<Run x:Name="RHashCheck" FontWeight="Bold" Text="通过" />
</TextBlock>
<RadioButton x:Name="RBDiagnosisYES" Margin="10,10,10,0" HorizontalAlignment="Left"
VerticalAlignment="Top" Checked="RBDiagnosisYES_Checked"
Content="{ll:Str '发送诊断数据: 发送游戏存档, 包括饱腹,状态等各种游戏内\&#13;数据. 可能会包括该游戏内存和CPU使用情况'}"
GroupName="diagnosis" Style="{DynamicResource StandardRadioButtonStyle}" />
<RadioButton x:Name="RBDiagnosisNO" Margin="10,10,10,0" HorizontalAlignment="Left"
VerticalAlignment="Top" Checked="RBDiagnosisNO_Checked"
Content="{ll:Str '不发送诊断数据: 适用于启用修改器,修改过游戏数据等不\&#13;符合分析数据条件. 或不希望提供游戏数据的玩家'}"
GroupName="diagnosis" IsChecked="True"
Style="{DynamicResource StandardRadioButtonStyle}" />
<TextBlock Margin="0,15,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
Background="{x:Null}" TextWrapping="Wrap">
<Run FontWeight="Bold" Text="{ll:Str 反馈频率}" /><LineBreak />
<Run Text="{ll:Str 'VOS 应寻求我反馈按以下频率'}" />
</TextBlock>
<ComboBox x:Name="CBDiagnosis" Width="200" Margin="10,5,0,0" HorizontalAlignment="Left"
VerticalAlignment="Top" IsEnabled="False" SelectedIndex="1"
SelectionChanged="CBDiagnosis_SelectionChanged"
Style="{DynamicResource StandardComboBoxStyle}">
<ComboBoxItem Content="{ll:Str '每 两百 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 五百 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 一千 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 两千 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 五千 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 一万 周期一次'}" />
<ComboBoxItem Content="{ll:Str '每 两万 周期一次'}" />
</ComboBox>
</StackPanel>
</ScrollViewer>
</TabItem>
<TabItem BorderBrush="{DynamicResource PrimaryDarker}" Header="{ll:Str MOD管理}">
<Grid>

View File

@ -1075,6 +1075,11 @@ namespace VPet_Simulator.Windows
{
mw.Set.EnableFunction = false;
combCalFunState.IsEnabled = true;
if (mw.Main.State != Main.WorkingState.Nomal)
{
mw.Main.WorkTimer.Visibility = Visibility.Collapsed;
mw.Main.State = Main.WorkingState.Nomal;
}
}
}
@ -1103,15 +1108,12 @@ namespace VPet_Simulator.Windows
reloadid = mw.Set.SaveTimes;
CBSaveReLoad.SelectedItem = null;
CBSaveReLoad.Items.Clear();
if (Directory.Exists(ExtensionValue.BaseDirectory + @"\BackUP"))
if (Directory.Exists(ExtensionValue.BaseDirectory + @"\Saves"))
{
foreach (var file in new DirectoryInfo(ExtensionValue.BaseDirectory + @"\BackUP")
.GetFiles().OrderByDescending(x => x.LastWriteTime))
foreach (var file in new DirectoryInfo(ExtensionValue.BaseDirectory + @"\Saves")
.GetFiles("Save*.lps").OrderByDescending(x => x.LastWriteTime))
{
if (file.Extension.ToLower() == ".lps")
{
CBSaveReLoad.Items.Add(file.Name.Split('.').First());
}
CBSaveReLoad.Items.Add(file.Name.Split('.').First());
}
CBSaveReLoad.SelectedIndex = 0;
}
@ -1123,7 +1125,7 @@ namespace VPet_Simulator.Windows
if (CBSaveReLoad.SelectedItem != null)
{
string txt = (string)CBSaveReLoad.SelectedItem;
string path = ExtensionValue.BaseDirectory + @"\BackUP\" + txt + ".lps";
string path = ExtensionValue.BaseDirectory + @"\Saves\" + txt + ".lps";
if (File.Exists(path))
{
try
@ -1135,8 +1137,13 @@ namespace VPet_Simulator.Windows
{
try
{
if (mw.Main.State != Main.WorkingState.Nomal)
{
mw.Main.WorkTimer.Visibility = Visibility.Collapsed;
mw.Main.State = Main.WorkingState.Nomal;
}
if (!mw.GameLoad(l))
MessageBoxX.Show("存档损毁,无法加载该存档\n可能是上次储存出错或Steam云同步导致的\n请在设置中加载备份还原存档", "存档损毁".Translate());
MessageBoxX.Show("存档损毁,无法加载该存档\n可能是上次储存出错或Steam云同步导致的\n请在设置中加载备份还原存档", "存档损毁".Translate());
}
catch (Exception ex)
{

View File

@ -35,4 +35,7 @@ EXP#EXP:|
在任务切换器中隐藏窗口#Hide window from task switcher:|
在Alt+Tab中隐藏#Hide from Alt+Tab:|
音频播放失败,已尝试自动切换到备用播放器. 如果问题持续,请检查是否已安装WindowsMediaPlayer#Audio playback failed, attempted automatic switch to backup player. If the issue persists, please check if Windows Media Player is installed.:|
音频错误#audio error:|
音频错误#audio error:|
闲逛#Idle:|
乱爬#Climb:|
发呆#Stare:|

View File

@ -35,4 +35,7 @@ EXP#EXP:|
在任务切换器中隐藏窗口#在任务切换器中隐藏窗口:|
在Alt+Tab中隐藏#在Alt+Tab中隐藏:|
音频播放失败,已尝试自动切换到备用播放器. 如果问题持续,请检查是否已安装WindowsMediaPlayer#音频播放失败,已尝试自动切换到备用播放器. 如果问题持续,请检查是否已安装WindowsMediaPlayer:|
音频错误#音频错误:|
音频错误#音频错误:|
闲逛#闲逛:|
乱爬#乱爬:|
发呆#发呆:|

View File

@ -36,3 +36,6 @@ EXP#EXP:|
在Alt+Tab中隐藏#在Alt+Tab選單中隱藏視窗:|
音频播放失败,已尝试自动切换到备用播放器. 如果问题持续,请检查是否已安装WindowsMediaPlayer#無法播放音訊已嘗試自動切換到備用播放器。如果問題仍然出現請檢查是否已安裝WindowsMediaPlayer:|
音频错误#音訊錯誤:|
闲逛#閒逛:|
乱爬#亂爬:|
发呆#發呆:|