工作面板

This commit is contained in:
ZouJin 2024-03-13 00:38:23 +08:00
parent fec9f514fc
commit 4aa4f4f41b
11 changed files with 154 additions and 66 deletions

View File

@ -1,4 +1,6 @@
using System;
using LinePutScript.Localization.WPF;
using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@ -6,6 +8,7 @@ using System.Timers;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using static VPet_Simulator.Core.GraphHelper;
using static VPet_Simulator.Core.GraphInfo;
namespace VPet_Simulator.Core
@ -508,5 +511,60 @@ namespace VPet_Simulator.Core
/// </summary>
Empty,
}
/// <summary>
/// 获得工作列表分类
/// </summary>
/// <param name="ws">所有工作</param>
/// <param name="ss">所有学习</param>
/// <param name="ps">所有娱乐</param>
public void WorkList(out List<Work> ws, out List<Work> ss, out List<Work> ps)
{
ws = new List<Work>();
ss = new List<Work>();
ps = new List<Work>();
foreach (var w in Core.Graph.GraphConfig.Works)
{
switch (w.Type)
{
case Work.WorkType.Study:
ss.Add(w);
break;
case Work.WorkType.Work:
ws.Add(w);
break;
case Work.WorkType.Play:
ps.Add(w);
break;
}
}
}
/// <summary>
/// 工作检测
/// </summary>
public Func<Work, bool> WorkCheck;
/// <summary>
/// 开始工作
/// </summary>
/// <param name="work">工作内容</param>
public void StartWork(Work work)
{
if (!Core.Controller.EnableFunction || Core.Save.Mode != IGameSave.ModeType.Ill)
if (!Core.Controller.EnableFunction || Core.Save.Level >= work.LevelLimit)
if (State == Main.WorkingState.Work && StateID == Core.Graph.GraphConfig.Works.IndexOf(work))
WorkTimer.Stop();
else
{
if (WorkCheck != null && !WorkCheck.Invoke(work))
return;
WorkTimer.Start(work);
}
else
MessageBoxX.Show(LocalizeCore.Translate("您的桌宠等级不足{0}/{2}\n无法进行{1}", Core.Save.Level.ToString()
, work.NameTrans, work.LevelLimit), LocalizeCore.Translate("{0}取消", work.NameTrans));
else
MessageBoxX.Show(LocalizeCore.Translate("您的桌宠 {0} 生病啦,没法进行{1}", Core.Save.Name,
work.NameTrans), LocalizeCore.Translate("{0}取消", work.NameTrans));
Visibility = Visibility.Collapsed;
}
}
}

View File

@ -46,6 +46,7 @@ namespace VPet_Simulator.Core
LoadWork();
}
public void LoadWork()
{
MenuWork.Click -= MenuWork_Click;
@ -58,24 +59,9 @@ namespace VPet_Simulator.Core
MenuWork.Items.Clear();
MenuStudy.Items.Clear();
MenuPlay.Items.Clear();
List<Work> ws = new List<Work>();
List<Work> ss = new List<Work>();
List<Work> ps = new List<Work>();
foreach (var w in m.Core.Graph.GraphConfig.Works)
{
switch (w.Type)
{
case Work.WorkType.Study:
ss.Add(w);
break;
case Work.WorkType.Work:
ws.Add(w);
break;
case Work.WorkType.Play:
ps.Add(w);
break;
}
}
m.WorkList(out List<Work> ws, out List<Work> ss, out List<Work> ps);
if (ws.Count == 0)
{
MenuWork.Visibility = Visibility.Collapsed;
@ -94,7 +80,7 @@ namespace VPet_Simulator.Core
{
Header = w.NameTrans
};
mi.Click += (s, e) => StartWork(w);
mi.Click += (s, e) => m.StartWork(w);
MenuWork.Items.Add(mi);
}
}
@ -116,7 +102,7 @@ namespace VPet_Simulator.Core
{
Header = w.NameTrans
};
mi.Click += (s, e) => StartWork(w);
mi.Click += (s, e) => m.StartWork(w);
MenuStudy.Items.Add(mi);
}
}
@ -138,7 +124,7 @@ namespace VPet_Simulator.Core
{
Header = w.NameTrans
};
mi.Click += (s, e) => StartWork(w);
mi.Click += (s, e) => m.StartWork(w);
MenuPlay.Items.Add(mi);
}
}
@ -146,42 +132,20 @@ namespace VPet_Simulator.Core
private void MenuStudy_Click(object sender, RoutedEventArgs e)
{
StartWork(wstudy);
m.StartWork(wstudy);
}
Work wwork;
Work wstudy;
Work wplay;
/// <summary>
/// 工作检测
/// </summary>
public Func<Work, bool> WorkCheck;
public void StartWork(Work work)
{
if (!m.Core.Controller.EnableFunction || m.Core.Save.Mode != IGameSave.ModeType.Ill)
if (!m.Core.Controller.EnableFunction || m.Core.Save.Level >= work.LevelLimit)
if (m.State == Main.WorkingState.Work && m.StateID == m.Core.Graph.GraphConfig.Works.IndexOf(work))
m.WorkTimer.Stop();
else
{
if (WorkCheck != null && !WorkCheck.Invoke(work))
return;
m.WorkTimer.Start(work);
}
else
MessageBoxX.Show(LocalizeCore.Translate("您的桌宠等级不足{0}/{2}\n无法进行{1}", m.Core.Save.Level.ToString()
, work.NameTrans, work.LevelLimit), LocalizeCore.Translate("{0}取消", work.NameTrans));
else
MessageBoxX.Show(LocalizeCore.Translate("您的桌宠 {0} 生病啦,没法进行{1}", m.Core.Save.Name,
work.NameTrans), LocalizeCore.Translate("{0}取消", work.NameTrans));
Visibility = Visibility.Collapsed;
}
private void MenuWork_Click(object sender, RoutedEventArgs e)
{
StartWork(wwork);
m.StartWork(wwork);
}
private void MenuPlay_Click(object sender, RoutedEventArgs e)
{
StartWork(wplay);
m.StartWork(wplay);
}
private void M_TimeUIHandle(Main m)

View File

@ -2,6 +2,7 @@
using LinePutScript.Dictionary;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using VPet_Simulator.Core;
@ -155,6 +156,14 @@ namespace VPet_Simulator.Windows.Interface
/// 游戏存档数据
/// </summary>
GameSave_v2 GameSavesData { get; }
/// <summary>
/// 主窗体 Grid
/// </summary>
Grid MGHost { get; }
/// <summary>
/// 主窗体 Pet Grid
/// </summary>
Grid PetGrid { get; }
}
}

View File

@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ll="clr-namespace:LinePutScript.Localization.WPF;assembly=LinePutScript.Localization.WPF"
xmlns:pu="clr-namespace:Panuon.WPF.UI;assembly=Panuon.WPF.UI" Background="{x:Null}" WindowStyle="None"
SizeToContent="Height" xmlns:local="clr-namespace:VPet_Simulator.Windows" mc:Ignorable="d" ShowInTaskbar="False"
ResizeMode="NoResize" Title="MWFriends" Width="250" pu:WindowXCaption.Height="0">

View File

@ -275,6 +275,9 @@ namespace VPet_Simulator.Windows
petHelper.ReloadLocation();
}
}
//private DateTime timecount = DateTime.Now;
/// <summary>
/// 保存设置
@ -1134,6 +1137,10 @@ namespace VPet_Simulator.Windows
}
}
Grid IMainWindow.MGHost => MGHost;
Grid IMainWindow.PetGrid => MGrid;
/// <summary>
/// 移除所有聊天对话框
/// </summary>

View File

@ -10,8 +10,8 @@
<WindowChrome.WindowChrome>
<WindowChrome GlassFrameThickness="-1" />
</WindowChrome.WindowChrome>
<Grid>
<Grid x:Name="MGrid" Width="250" Height="Auto" >
<Grid x:Name="MGHost" x:FieldModifier="public">
<Grid x:Name="MGrid" Width="250" Height="Auto" x:FieldModifier="public">
<Label x:Name="LoadingText" HorizontalAlignment="Center" VerticalAlignment="Center"
Background="{DynamicResource DARKPrimaryLight}" Foreground="{DynamicResource DARKPrimaryText}"
Content="Loading" />

View File

@ -113,6 +113,7 @@
<None Remove="Res\img\r_worktime_4.png" />
<None Remove="Res\img\r_worktime_5.png" />
<None Remove="Res\img\r_worktime_6.png" />
<None Remove="RichPresence.vdf" />
<None Remove="快捷键通用注解.md" />
</ItemGroup>
<ItemGroup>
@ -124,7 +125,9 @@
<Resource Include="Res\img\rbgb.png" />
<Resource Include="Res\img\r_mostfood_Food.png" />
<Resource Include="Res\remixicon.ttf" />
<Resource Include="vpeticon.ico" />
<Resource Include="vpeticon.ico">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Settings.Designer.cs">

View File

@ -7,7 +7,7 @@
xmlns:pu="clr-namespace:Panuon.WPF.UI;assembly=Panuon.WPF.UI" Height="500" Width="500" VerticalAlignment="Top">
<Grid>
<Border Background="{DynamicResource SecondaryLighter}" BorderBrush="{DynamicResource Secondary}"
BorderThickness="5" VerticalAlignment="Top" Margin="5,50,5,5" CornerRadius="5" Padding="5">
BorderThickness="5" VerticalAlignment="Top" Margin="5,5,5,5" CornerRadius="5" Padding="5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*" />

View File

@ -0,0 +1,36 @@
<Window x:Class="VPet_Simulator.Windows.winWorkMenu" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:pu="https://opensource.panuon.com/wpf-ui"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ll="clr-namespace:LinePutScript.Localization.WPF;assembly=LinePutScript.Localization.WPF"
xmlns:local="clr-namespace:VPet_Simulator.Windows" mc:Ignorable="d" Title="{ll:Str 工作面板}" Height="400"
Width="600" ResizeMode="CanMinimize" FontSize="16">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<TabControl Grid.RowSpan="2">
<TabItem Header="{ll:Str '学习'}">
<ListBox x:Name="lbStudy" />
</TabItem>
<TabItem Header="{ll:Str '玩耍'}">
<ListBox x:Name="lbPlay" />
</TabItem>
<TabItem Header="{ll:Str '工作'}">
<ListBox x:Name="lbWork" />
</TabItem>
</TabControl>
<Image x:Name="WorkViewImage" Grid.Column="1" Margin="10,10,10,33" Source="/Res/img/r_singlemoney_1.png" />
<Button Grid.Row="1" Grid.Column="1" VerticalAlignment="Bottom" Margin="5" Height="30" Content="开始工作"
Background="{DynamicResource DARKPrimary}" BorderThickness="1" pu:ButtonHelper.CornerRadius="5"
BorderBrush="{DynamicResource DARKPrimaryDarker}" Foreground="{DynamicResource DARKPrimaryText}"
FontWeight="Bold" FontSize="20" IsEnabled="False" />
<Label Background="{x:Null}" Grid.Column="1" VerticalAlignment="Bottom" Content="请从侧边栏选择工作" FontSize="24"
Foreground="{DynamicResource DARKPrimaryDark}" FontWeight="Bold" />
</Grid>
</Window>

View File

@ -11,6 +11,7 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using static VPet_Simulator.Core.GraphHelper;
namespace VPet_Simulator.Windows;
/// <summary>
@ -18,8 +19,29 @@ namespace VPet_Simulator.Windows;
/// </summary>
public partial class winWorkMenu : Window
{
public winWorkMenu()
MainWindow mw;
List<Work> ws;
List<Work> ss;
List<Work> ps;
public winWorkMenu(MainWindow mw)
{
InitializeComponent();
this.mw = mw;
mw.Main.WorkList(out ws, out ss, out ps);
foreach (var v in ws)
{
lbWork.Items.Add(v.NameTrans);
}
foreach (var v in ss)
{
lbStudy.Items.Add(v.NameTrans);
}
foreach (var v in ps)
{
lbPlay.Items.Add(v.NameTrans);
}
}
}

View File

@ -1,12 +0,0 @@
<Window x:Class="VPet_Simulator.Windows.winWorkMenu"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:VPet_Simulator.Windows"
mc:Ignorable="d"
Title="winWorkMenu" Height="450" Width="800">
<Grid>
</Grid>
</Window>