Framework changed to WPF

Only the basic window frame is implemented.
Adjusted the structure of resource files.
This commit is contained in:
2022-09-29 21:56:43 +08:00
parent 346a68ddb4
commit a055dc5299
128 changed files with 48325 additions and 63581 deletions

View File

@@ -0,0 +1,54 @@
<Page
x:Class="GrasscutterTools.Pages.PageGive"
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:local="clr-namespace:GrasscutterTools.Pages"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="PageGive"
d:Background="{StaticResource NormalBorderBrush}"
d:DesignHeight="420"
d:DesignWidth="490"
mc:Ignorable="d">
<StackPanel Margin="16">
<GroupBox Header="Give Item" />
<DockPanel>
<Label x:Name="LblLevelTip" Content="Level:" />
<TextBox
x:Name="TxtLevel"
Margin="4,0,0,0"
Text="100" />
</DockPanel>
<GroupBox Header="Give All">
<StackPanel Margin="8" Orientation="Horizontal">
<Button
x:Name="BtnGiveAll"
Padding="16,8"
HorizontalAlignment="Left"
Content="All" />
<Button
x:Name="BtnGiveWeapons"
Margin="8,0,0,0"
Padding="16,8"
HorizontalAlignment="Left"
Content="Weapons" />
<Button
x:Name="BtnGiveMats"
Margin="8,0,0,0"
Padding="16,8"
HorizontalAlignment="Left"
Content="Mats" />
<Button
x:Name="BtnGiveAvatars"
Margin="8,0,0,0"
Padding="16,8"
HorizontalAlignment="Left"
Content="Avatars" />
</StackPanel>
</GroupBox>
</StackPanel>
</Page>

View File

@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using GrasscutterTools.Events;
using GrasscutterTools.Game;
using GrasscutterTools.Interfaces;
using GrasscutterTools.Models;
namespace GrasscutterTools.Pages
{
/// <summary>
/// PageGive.xaml 的交互逻辑
/// </summary>
public partial class PageGive : Page, IPageListProvider, IPageCommand
{
public PageGive()
{
InitializeComponent();
ListSource = new GameItems(Properties.Resources.Items);
Categories = ListSource.Select(it => it.Category).Distinct().ToArray();
OnCommandGenerated("");
}
public GameItems ListSource { get; private set; }
public bool CanGroup => true;
public string[] Categories { get; private set; }
public event EventHandler<CommandGeneratedEventArgs> CommandGenerated;
private void OnCommandGenerated(string command)
=> CommandGenerated?.Invoke(this, new CommandGeneratedEventArgs(command));
public void OnListItemSelected(GameItem item)
{
LblTest.Content = item;
}
}
}

View File

@@ -0,0 +1,25 @@
<Page
x:Class="GrasscutterTools.Pages.PageHome"
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:local="clr-namespace:GrasscutterTools.Pages"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="PageHome"
d:Background="{StaticResource NormalBorderBrush}"
d:DesignHeight="420"
d:DesignWidth="490"
mc:Ignorable="d">
<Grid>
<Image Source="/Resources/ImgHome.jpg" />
<Label
x:Name="LblWelcome"
Margin="0,16,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Top"
FontSize="20">
Welcome to GrasscutterTools
</Label>
</Grid>
</Page>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace GrasscutterTools.Pages
{
/// <summary>
/// PageHome.xaml 的交互逻辑
/// </summary>
public partial class PageHome : Page
{
public PageHome()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,24 @@
<Page
x:Class="GrasscutterTools.Pages.PageTools"
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:local="clr-namespace:GrasscutterTools.Pages"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="PageTools"
d:Background="{StaticResource NormalBorderBrush}"
d:DesignHeight="420"
d:DesignWidth="490"
mc:Ignorable="d">
<Grid>
<Button
x:Name="BtnIdMergeTool"
Padding="16,8"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Click="BtnIdMergeTool_Click"
Content="Id Merge Tool" />
</Grid>
</Page>

View File

@@ -0,0 +1,71 @@
using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Win32;
namespace GrasscutterTools.Pages
{
/// <summary>
/// PageHome.xaml 的交互逻辑
/// </summary>
public partial class PageTools : Page
{
public PageTools()
{
InitializeComponent();
}
private void BtnIdMergeTool_Click(object sender, RoutedEventArgs e)
{
var src = new OpenFileDialog
{
Title = "请选择原文件",
Multiselect = false,
};
var dest = new OpenFileDialog
{
Title = "请选择目标文件",
Multiselect = false,
};
if (src.ShowDialog() == true && dest.ShowDialog() == true)
{
var srcLines = File.ReadAllLines(src.FileName);
var srcDic = new Dictionary<string, string>(srcLines.Length);
foreach (var line in srcLines)
{
var sp = line.IndexOf(':');
if (sp > 0)
{
var value = line.Substring(sp + 1).Trim();
if (!value.StartsWith("[N/A]"))
srcDic[line.Substring(0, sp).Trim()] = line.Substring(sp+1).Trim();
}
}
var destLines = File.ReadAllLines(dest.FileName);
using (var outStream = File.Create(dest.FileName))
using (var outTxtStream = new StreamWriter(outStream))
{
foreach (var line in destLines)
{
var sp = line.IndexOf(':');
if (sp == -1)
{
outTxtStream.WriteLine(line);
}
else
{
var key = line.Substring(0, sp).Trim();
if (!srcDic.TryGetValue(key, out var value))
value = line.Substring(sp + 1).Trim();
outTxtStream.WriteLine($"{key}:{value}");
}
}
}
}
}
}
}