@@ -4,6 +4,7 @@
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||
using Snap.Hutao.SourceGeneration.Primitive;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
@@ -16,6 +17,7 @@ namespace Snap.Hutao.SourceGeneration.Automation;
|
||||
internal sealed class ConstructorGenerator : IIncrementalGenerator
|
||||
{
|
||||
private const string AttributeName = "Snap.Hutao.Core.Annotation.ConstructorGeneratedAttribute";
|
||||
private const string CompilerGenerated = "System.Runtime.CompilerServices.CompilerGeneratedAttribute";
|
||||
|
||||
//private static readonly DiagnosticDescriptor genericTypeNotSupportedDescriptor = new("SH102", "Generic type is not supported to generate .ctor", "Type [{0}] is not supported", "Quality", DiagnosticSeverity.Error, true);
|
||||
|
||||
@@ -98,6 +100,11 @@ internal sealed class ConstructorGenerator : IIncrementalGenerator
|
||||
|
||||
foreach (IFieldSymbol fieldSymbol in fields)
|
||||
{
|
||||
if (fieldSymbol.Name.AsSpan()[0] is '<')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
bool shoudSkip = false;
|
||||
foreach (SyntaxReference syntaxReference in fieldSymbol.DeclaringSyntaxReferences)
|
||||
{
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" PrivateAssets="all" Version="3.3.4" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.6.0" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.7.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.1" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0">
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
<x:String x:Key="UI_MarkTower">https://static.snapgenshin.com/Bg/UI_MarkTower.png</x:String>
|
||||
<x:String x:Key="UI_Icon_Intee_Explore_1">https://static.snapgenshin.com/Bg/UI_Icon_Intee_Explore_1.png</x:String>
|
||||
<x:String x:Key="UI_MarkQuest_Events_Proce">https://static.snapgenshin.com/Bg/UI_MarkQuest_Events_Proce.png</x:String>
|
||||
<x:String x:Key="UI_ItemIcon_201">https://static.snapgenshin.com/ItemIcon/UI_ItemIcon_201.png</x:String>
|
||||
<x:String x:Key="UI_ItemIcon_204">https://static.snapgenshin.com/ItemIcon/UI_ItemIcon_204.png</x:String>
|
||||
<x:String x:Key="UI_ItemIcon_210">https://static.snapgenshin.com/ItemIcon/UI_ItemIcon_210.png</x:String>
|
||||
<x:String x:Key="UI_ItemIcon_220021">https://static.snapgenshin.com/ItemIcon/UI_ItemIcon_220021.png</x:String>
|
||||
@@ -173,327 +174,6 @@
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="CornerRadius" Value="{StaticResource CompatCornerRadius}"/>
|
||||
</Style>
|
||||
<Style x:Key="WebView2ContentDialogStyle" TargetType="ContentDialog">
|
||||
<Setter Property="Foreground" Value="{ThemeResource ContentDialogForeground}"/>
|
||||
<Setter Property="Background" Value="{ThemeResource ContentDialogBackground}"/>
|
||||
<Setter Property="BorderThickness" Value="{ThemeResource ContentDialogBorderWidth}"/>
|
||||
<Setter Property="BorderBrush" Value="{ThemeResource ContentDialogBorderBrush}"/>
|
||||
<Setter Property="IsTabStop" Value="False"/>
|
||||
<Setter Property="CornerRadius" Value="0"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ContentDialog">
|
||||
<Border x:Name="Container">
|
||||
<Grid x:Name="LayoutRoot" Visibility="Collapsed">
|
||||
<Rectangle x:Name="SmokeLayerBackground" Fill="{ThemeResource ContentDialogSmokeFill}"/>
|
||||
<Border
|
||||
x:Name="BackgroundElement"
|
||||
MinWidth="{ThemeResource ContentDialogMinWidth}"
|
||||
MinHeight="{ThemeResource ContentDialogMinHeight}"
|
||||
MaxWidth="{ThemeResource ContentDialogMaxWidth}"
|
||||
MaxHeight="{ThemeResource ContentDialogMaxHeight}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Background="{TemplateBinding Background}"
|
||||
BackgroundSizing="InnerBorderEdge"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="{TemplateBinding CornerRadius}"
|
||||
FlowDirection="{TemplateBinding FlowDirection}"
|
||||
RenderTransformOrigin="0.5,0.5">
|
||||
<Border.RenderTransform>
|
||||
<ScaleTransform x:Name="ScaleTransform"/>
|
||||
</Border.RenderTransform>
|
||||
<Grid x:Name="DialogSpace" CornerRadius="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<ScrollViewer
|
||||
x:Name="ContentScrollViewer"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
IsTabStop="False"
|
||||
VerticalScrollBarVisibility="Disabled"
|
||||
ZoomMode="Disabled">
|
||||
<Grid
|
||||
Padding="0"
|
||||
BorderBrush="{ThemeResource ContentDialogSeparatorBorderBrush}"
|
||||
BorderThickness="{ThemeResource ContentDialogSeparatorThickness}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<ContentControl
|
||||
x:Name="Title"
|
||||
Margin="{ThemeResource ContentDialogTitleMargin}"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
Content="{TemplateBinding Title}"
|
||||
ContentTemplate="{TemplateBinding TitleTemplate}"
|
||||
FontFamily="{StaticResource ContentControlThemeFontFamily}"
|
||||
FontSize="20"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{TemplateBinding Foreground}"
|
||||
IsTabStop="False">
|
||||
<ContentControl.Template>
|
||||
<ControlTemplate TargetType="ContentControl">
|
||||
<ContentPresenter
|
||||
Margin="{TemplateBinding Padding}"
|
||||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
ContentTransitions="{TemplateBinding ContentTransitions}"
|
||||
MaxLines="2"
|
||||
TextWrapping="Wrap"/>
|
||||
</ControlTemplate>
|
||||
</ContentControl.Template>
|
||||
</ContentControl>
|
||||
<ContentPresenter
|
||||
x:Name="Content"
|
||||
Grid.Row="1"
|
||||
Margin="0,0,0,8"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
FontFamily="{StaticResource ContentControlThemeFontFamily}"
|
||||
FontSize="{StaticResource ControlContentThemeFontSize}"
|
||||
Foreground="{TemplateBinding Foreground}"
|
||||
TextWrapping="Wrap"/>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
<Grid
|
||||
x:Name="CommandSpace"
|
||||
Grid.Row="1"
|
||||
Padding="8,0,8,8"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Bottom"
|
||||
XYFocusKeyboardNavigation="Enabled">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition x:Name="PrimaryColumn" Width="*"/>
|
||||
<ColumnDefinition x:Name="FirstSpacer" Width="0"/>
|
||||
<ColumnDefinition x:Name="SecondaryColumn" Width="0"/>
|
||||
<ColumnDefinition x:Name="SecondSpacer" Width="{ThemeResource ContentDialogButtonSpacing}"/>
|
||||
<ColumnDefinition x:Name="CloseColumn" Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button
|
||||
x:Name="PrimaryButton"
|
||||
HorizontalAlignment="Stretch"
|
||||
Content="{TemplateBinding PrimaryButtonText}"
|
||||
ElementSoundMode="FocusOnly"
|
||||
IsEnabled="{TemplateBinding IsPrimaryButtonEnabled}"
|
||||
IsTabStop="False"
|
||||
Style="{TemplateBinding PrimaryButtonStyle}"/>
|
||||
<Button
|
||||
x:Name="SecondaryButton"
|
||||
HorizontalAlignment="Stretch"
|
||||
Content="{TemplateBinding SecondaryButtonText}"
|
||||
ElementSoundMode="FocusOnly"
|
||||
IsEnabled="{TemplateBinding IsSecondaryButtonEnabled}"
|
||||
IsTabStop="False"
|
||||
Style="{TemplateBinding SecondaryButtonStyle}"/>
|
||||
<Button
|
||||
x:Name="CloseButton"
|
||||
Grid.Column="4"
|
||||
HorizontalAlignment="Stretch"
|
||||
Content="{TemplateBinding CloseButtonText}"
|
||||
ElementSoundMode="FocusOnly"
|
||||
IsTabStop="False"
|
||||
Style="{TemplateBinding CloseButtonStyle}"/>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup x:Name="DialogShowingStates">
|
||||
|
||||
<VisualStateGroup.Transitions>
|
||||
<VisualTransition To="DialogHidden">
|
||||
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="IsHitTestVisible">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="False"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleTransform" Storyboard.TargetProperty="ScaleX">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.0"/>
|
||||
<SplineDoubleKeyFrame
|
||||
KeySpline="{StaticResource ControlFastOutSlowInKeySpline}"
|
||||
KeyTime="{StaticResource ControlFastAnimationDuration}"
|
||||
Value="1.05"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleTransform" Storyboard.TargetProperty="ScaleY">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.0"/>
|
||||
<SplineDoubleKeyFrame
|
||||
KeySpline="{StaticResource ControlFastOutSlowInKeySpline}"
|
||||
KeyTime="{StaticResource ControlFastAnimationDuration}"
|
||||
Value="1.05"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="Opacity">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.0"/>
|
||||
<LinearDoubleKeyFrame KeyTime="{StaticResource ControlFasterAnimationDuration}" Value="0.0"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualTransition>
|
||||
<VisualTransition To="DialogShowing">
|
||||
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleTransform" Storyboard.TargetProperty="ScaleX">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.05"/>
|
||||
<SplineDoubleKeyFrame
|
||||
KeySpline="{StaticResource ControlFastOutSlowInKeySpline}"
|
||||
KeyTime="{StaticResource ControlNormalAnimationDuration}"
|
||||
Value="1.0"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleTransform" Storyboard.TargetProperty="ScaleY">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.05"/>
|
||||
<SplineDoubleKeyFrame
|
||||
KeySpline="{StaticResource ControlFastOutSlowInKeySpline}"
|
||||
KeyTime="{StaticResource ControlNormalAnimationDuration}"
|
||||
Value="1.0"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="Opacity">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="0.0"/>
|
||||
<LinearDoubleKeyFrame KeyTime="{StaticResource ControlFasterAnimationDuration}" Value="1.0"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualTransition>
|
||||
</VisualStateGroup.Transitions>
|
||||
<VisualState x:Name="DialogHidden"/>
|
||||
<VisualState x:Name="DialogShowing">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PrimaryButton.IsTabStop" Value="True"/>
|
||||
<Setter Target="SecondaryButton.IsTabStop" Value="True"/>
|
||||
<Setter Target="CloseButton.IsTabStop" Value="True"/>
|
||||
<Setter Target="LayoutRoot.Visibility" Value="Visible"/>
|
||||
<Setter Target="BackgroundElement.TabFocusNavigation" Value="Cycle"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="DialogShowingWithoutSmokeLayer">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PrimaryButton.IsTabStop" Value="True"/>
|
||||
<Setter Target="SecondaryButton.IsTabStop" Value="True"/>
|
||||
<Setter Target="CloseButton.IsTabStop" Value="True"/>
|
||||
<Setter Target="LayoutRoot.Visibility" Value="Visible"/>
|
||||
<Setter Target="LayoutRoot.Background" Value="{x:Null}"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup x:Name="DialogSizingStates">
|
||||
<VisualState x:Name="DefaultDialogSizing"/>
|
||||
<VisualState x:Name="FullDialogSizing">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="BackgroundElement.VerticalAlignment" Value="Stretch"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup x:Name="ButtonsVisibilityStates">
|
||||
<VisualState x:Name="AllVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="FirstSpacer.Width" Value="{ThemeResource ContentDialogButtonSpacing}"/>
|
||||
<Setter Target="SecondaryColumn.Width" Value="*"/>
|
||||
<Setter Target="SecondaryButton.(Grid.Column)" Value="2"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="NoneVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="CommandSpace.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="PrimaryVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PrimaryButton.(Grid.Column)" Value="4"/>
|
||||
<Setter Target="SecondaryButton.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="CloseButton.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="SecondaryVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="SecondaryButton.(Grid.Column)" Value="4"/>
|
||||
<Setter Target="PrimaryButton.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="CloseButton.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="CloseVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PrimaryButton.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="SecondaryButton.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="PrimaryAndSecondaryVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="SecondaryButton.(Grid.Column)" Value="4"/>
|
||||
<Setter Target="CloseButton.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="PrimaryAndCloseVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="SecondaryButton.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="SecondaryAndCloseVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PrimaryButton.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup x:Name="DefaultButtonStates">
|
||||
<VisualState x:Name="NoDefaultButton"/>
|
||||
<VisualState x:Name="PrimaryAsDefaultButton">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PrimaryButton.Style" Value="{StaticResource AccentButtonStyle}"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="SecondaryAsDefaultButton">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="SecondaryButton.Style" Value="{StaticResource AccentButtonStyle}"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="CloseAsDefaultButton">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="CloseButton.Style" Value="{StaticResource AccentButtonStyle}"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup x:Name="DialogBorderStates">
|
||||
<VisualState x:Name="NoBorder"/>
|
||||
<VisualState x:Name="AccentColorBorder">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="BackgroundElement.BorderBrush" Value="{ThemeResource SystemControlForegroundAccentBrush}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
<Style TargetType="shci:CachedImage">
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="Foreground" Value="{ThemeResource ApplicationForegroundThemeBrush}"/>
|
||||
|
||||
19
src/Snap.Hutao/Snap.Hutao/Control/ColorSegment.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Windows.UI;
|
||||
|
||||
namespace Snap.Hutao.Control;
|
||||
|
||||
internal sealed class ColorSegment : IColorSegment
|
||||
{
|
||||
public ColorSegment(Color color, double value)
|
||||
{
|
||||
Color = color;
|
||||
Value = value;
|
||||
}
|
||||
|
||||
public Color Color { get; set; }
|
||||
|
||||
public double Value { get; set; }
|
||||
}
|
||||
@@ -3,10 +3,10 @@
|
||||
|
||||
using Microsoft.UI.Xaml;
|
||||
|
||||
namespace Snap.Hutao.View.Helper;
|
||||
namespace Snap.Hutao.Control.Helper;
|
||||
|
||||
[SuppressMessage("", "SH001")]
|
||||
[DependencyProperty("SquareLength", typeof(double), 0D, nameof(OnSquareLengthChanged), IsAttached = true, AttachedType = typeof(Microsoft.UI.Xaml.FrameworkElement))]
|
||||
[DependencyProperty("SquareLength", typeof(double), 0D, nameof(OnSquareLengthChanged), IsAttached = true, AttachedType = typeof(FrameworkElement))]
|
||||
public sealed partial class FrameworkElementHelper
|
||||
{
|
||||
private static void OnSquareLengthChanged(DependencyObject dp, DependencyPropertyChangedEventArgs e)
|
||||
13
src/Snap.Hutao/Snap.Hutao/Control/IColorSegment.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Windows.UI;
|
||||
|
||||
namespace Snap.Hutao.Control;
|
||||
|
||||
internal interface IColorSegment
|
||||
{
|
||||
Color Color { get; }
|
||||
|
||||
double Value { get; }
|
||||
}
|
||||
18
src/Snap.Hutao/Snap.Hutao/Control/Markup/Int32Extension.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Microsoft.UI.Xaml.Markup;
|
||||
|
||||
namespace Snap.Hutao.Control.Markup;
|
||||
|
||||
[MarkupExtensionReturnType(ReturnType = typeof(int))]
|
||||
internal sealed class Int32Extension : MarkupExtension
|
||||
{
|
||||
public string Value { get; set; } = default!;
|
||||
|
||||
protected override object ProvideValue()
|
||||
{
|
||||
_ = int.TryParse(Value, out int result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
18
src/Snap.Hutao/Snap.Hutao/Control/Markup/UInt32Extension.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Microsoft.UI.Xaml.Markup;
|
||||
|
||||
namespace Snap.Hutao.Control.Markup;
|
||||
|
||||
[MarkupExtensionReturnType(ReturnType = typeof(uint))]
|
||||
internal sealed class UInt32Extension : MarkupExtension
|
||||
{
|
||||
public string Value { get; set; } = default!;
|
||||
|
||||
protected override object ProvideValue()
|
||||
{
|
||||
_ = uint.TryParse(Value, out uint result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using System.Buffers.Binary;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Windows.UI;
|
||||
|
||||
44
src/Snap.Hutao/Snap.Hutao/Control/SegmentedBar.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using Microsoft.UI.Xaml.Shapes;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Snap.Hutao.Control;
|
||||
|
||||
[DependencyProperty("Source", typeof(List<IColorSegment>), default!, nameof(OnSourceChanged))]
|
||||
internal sealed partial class SegmentedBar : ContentControl
|
||||
{
|
||||
private readonly LinearGradientBrush brush = new() { StartPoint = new(0, 0), EndPoint = new(1, 0), };
|
||||
|
||||
public SegmentedBar()
|
||||
{
|
||||
Content = new Rectangle()
|
||||
{
|
||||
Fill = brush,
|
||||
};
|
||||
}
|
||||
|
||||
private static void OnSourceChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
SegmentedBar segmentedBar = (SegmentedBar)obj;
|
||||
|
||||
GradientStopCollection collection = segmentedBar.brush.GradientStops;
|
||||
collection.Clear();
|
||||
|
||||
if (args.NewValue as List<IColorSegment> is [_, ..] list)
|
||||
{
|
||||
double total = list.Sum(seg => seg.Value);
|
||||
double offset = 0;
|
||||
foreach (ref readonly IColorSegment segment in CollectionsMarshal.AsSpan(list))
|
||||
{
|
||||
collection.Add(new GradientStop() { Color = segment.Color, Offset = offset, });
|
||||
offset += segment.Value / total;
|
||||
collection.Add(new GradientStop() { Color = segment.Color, Offset = offset, });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -100,5 +100,270 @@
|
||||
<!-- TODO: When will DefaultInfoBarStyle added -->
|
||||
<Style TargetType="InfoBar">
|
||||
<Setter Property="FontFamily" Value="{StaticResource MiSans}"/>
|
||||
<Setter Property="IsTabStop" Value="False"/>
|
||||
<Setter Property="CloseButtonStyle" Value="{StaticResource InfoBarCloseButtonStyle}"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="BorderBrush" Value="{ThemeResource InfoBarBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="{ThemeResource InfoBarBorderThickness}"/>
|
||||
<Setter Property="AutomationProperties.LandmarkType" Value="Custom"/>
|
||||
<Setter Property="AutomationProperties.IsDialog" Value="True"/>
|
||||
<Setter Property="CornerRadius" Value="{ThemeResource ControlCornerRadius}"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="InfoBar">
|
||||
<Border
|
||||
x:Name="ContentRoot"
|
||||
VerticalAlignment="Top"
|
||||
Background="{ThemeResource InfoBarInformationalSeverityBackgroundBrush}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="{TemplateBinding CornerRadius}">
|
||||
<!-- Background is used here so that it overrides the severity status color if set. -->
|
||||
<Grid
|
||||
MinHeight="{ThemeResource InfoBarMinHeight}"
|
||||
Padding="{StaticResource InfoBarContentRootPadding}"
|
||||
HorizontalAlignment="Stretch"
|
||||
Background="{TemplateBinding Background}"
|
||||
CornerRadius="{TemplateBinding CornerRadius}">
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<!-- Icon -->
|
||||
<ColumnDefinition Width="*"/>
|
||||
<!-- Title, message, and action -->
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<!-- Close button -->
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid x:Name="StandardIconArea" Visibility="Collapsed">
|
||||
<TextBlock
|
||||
x:Name="IconBackground"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource InfoBarIconMargin}"
|
||||
VerticalAlignment="Top"
|
||||
AutomationProperties.AccessibilityView="Raw"
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{StaticResource InfoBarIconFontSize}"
|
||||
Foreground="{ThemeResource InfoBarInformationalSeverityIconBackground}"
|
||||
Text="{StaticResource InfoBarIconBackgroundGlyph}"/>
|
||||
<TextBlock
|
||||
x:Name="StandardIcon"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource InfoBarIconMargin}"
|
||||
VerticalAlignment="Top"
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{StaticResource InfoBarIconFontSize}"
|
||||
Foreground="{ThemeResource InfoBarInformationalSeverityIconForeground}"
|
||||
Text="{StaticResource InfoBarInformationalIconGlyph}"/>
|
||||
</Grid>
|
||||
<Viewbox
|
||||
x:Name="UserIconBox"
|
||||
Grid.Column="0"
|
||||
MaxWidth="{ThemeResource InfoBarIconFontSize}"
|
||||
MaxHeight="{ThemeResource InfoBarIconFontSize}"
|
||||
Margin="{ThemeResource InfoBarIconMargin}"
|
||||
VerticalAlignment="Top"
|
||||
Child="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.IconElement}"
|
||||
Visibility="Collapsed"/>
|
||||
<InfoBarPanel
|
||||
Grid.Column="1"
|
||||
Margin="{StaticResource InfoBarPanelMargin}"
|
||||
HorizontalOrientationPadding="{StaticResource InfoBarPanelHorizontalOrientationPadding}"
|
||||
VerticalOrientationPadding="{StaticResource InfoBarPanelVerticalOrientationPadding}">
|
||||
<TextBlock
|
||||
x:Name="Title"
|
||||
FontSize="{StaticResource InfoBarTitleFontSize}"
|
||||
FontWeight="{StaticResource InfoBarTitleFontWeight}"
|
||||
Foreground="{ThemeResource InfoBarTitleForeground}"
|
||||
InfoBarPanel.HorizontalOrientationMargin="{StaticResource InfoBarTitleHorizontalOrientationMargin}"
|
||||
InfoBarPanel.VerticalOrientationMargin="{StaticResource InfoBarTitleVerticalOrientationMargin}"
|
||||
Text="{TemplateBinding Title}"
|
||||
TextWrapping="WrapWholeWords"/>
|
||||
<TextBlock
|
||||
x:Name="Message"
|
||||
FontSize="{StaticResource InfoBarMessageFontSize}"
|
||||
FontWeight="{StaticResource InfoBarMessageFontWeight}"
|
||||
Foreground="{ThemeResource InfoBarMessageForeground}"
|
||||
InfoBarPanel.HorizontalOrientationMargin="{StaticResource InfoBarMessageHorizontalOrientationMargin}"
|
||||
InfoBarPanel.VerticalOrientationMargin="{StaticResource InfoBarMessageVerticalOrientationMargin}"
|
||||
Text="{TemplateBinding Message}"
|
||||
TextWrapping="WrapWholeWords"/>
|
||||
<ContentPresenter
|
||||
VerticalAlignment="Top"
|
||||
Content="{TemplateBinding ActionButton}"
|
||||
InfoBarPanel.HorizontalOrientationMargin="{StaticResource InfoBarActionHorizontalOrientationMargin}"
|
||||
InfoBarPanel.VerticalOrientationMargin="{StaticResource InfoBarActionVerticalOrientationMargin}">
|
||||
<ContentPresenter.Resources>
|
||||
<Style BasedOn="{StaticResource DefaultHyperlinkButtonStyle}" TargetType="HyperlinkButton">
|
||||
<Style.Setters>
|
||||
<Setter Property="Margin" Value="{StaticResource InfoBarHyperlinkButtonMargin}"/>
|
||||
<Setter Property="Foreground" Value="{ThemeResource InfoBarHyperlinkButtonForeground}"/>
|
||||
</Style.Setters>
|
||||
</Style>
|
||||
</ContentPresenter.Resources>
|
||||
</ContentPresenter>
|
||||
</InfoBarPanel>
|
||||
<ContentPresenter
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"/>
|
||||
<Button
|
||||
Name="CloseButton"
|
||||
Grid.Column="2"
|
||||
Command="{TemplateBinding CloseButtonCommand}"
|
||||
CommandParameter="{TemplateBinding CloseButtonCommandParameter}"
|
||||
Style="{TemplateBinding CloseButtonStyle}">
|
||||
<Button.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.ThemeDictionaries>
|
||||
<ResourceDictionary x:Key="Default">
|
||||
<StaticResource x:Key="ButtonBackground" ResourceKey="AppBarButtonBackground"/>
|
||||
<StaticResource x:Key="ButtonBackgroundPointerOver" ResourceKey="AppBarButtonBackgroundPointerOver"/>
|
||||
<StaticResource x:Key="ButtonBackgroundPressed" ResourceKey="AppBarButtonBackgroundPressed"/>
|
||||
<StaticResource x:Key="ButtonBackgroundDisabled" ResourceKey="AppBarButtonBackgroundDisabled"/>
|
||||
<StaticResource x:Key="ButtonForeground" ResourceKey="AppBarButtonForeground"/>
|
||||
<StaticResource x:Key="ButtonForegroundPointerOver" ResourceKey="AppBarButtonForegroundPointerOver"/>
|
||||
<StaticResource x:Key="ButtonForegroundPressed" ResourceKey="AppBarButtonForegroundPressed"/>
|
||||
<StaticResource x:Key="ButtonForegroundDisabled" ResourceKey="AppBarButtonForegroundDisabled"/>
|
||||
<StaticResource x:Key="ButtonBorderBrush" ResourceKey="AppBarButtonBorderBrush"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushPointerOver" ResourceKey="AppBarButtonBorderBrushPointerOver"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushPressed" ResourceKey="AppBarButtonBorderBrushPressed"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushDisabled" ResourceKey="AppBarButtonBorderBrushDisabled"/>
|
||||
</ResourceDictionary>
|
||||
<ResourceDictionary x:Key="HighContrast">
|
||||
<StaticResource x:Key="ButtonBackground" ResourceKey="AppBarButtonBackground"/>
|
||||
<StaticResource x:Key="ButtonBackgroundPointerOver" ResourceKey="AppBarButtonBackgroundPointerOver"/>
|
||||
<StaticResource x:Key="ButtonBackgroundPressed" ResourceKey="AppBarButtonBackgroundPressed"/>
|
||||
<StaticResource x:Key="ButtonBackgroundDisabled" ResourceKey="AppBarButtonBackgroundDisabled"/>
|
||||
<StaticResource x:Key="ButtonForeground" ResourceKey="AppBarButtonForeground"/>
|
||||
<StaticResource x:Key="ButtonForegroundPointerOver" ResourceKey="AppBarButtonForegroundPointerOver"/>
|
||||
<StaticResource x:Key="ButtonForegroundPressed" ResourceKey="AppBarButtonForegroundPressed"/>
|
||||
<StaticResource x:Key="ButtonForegroundDisabled" ResourceKey="AppBarButtonForegroundDisabled"/>
|
||||
<StaticResource x:Key="ButtonBorderBrush" ResourceKey="AppBarButtonBorderBrush"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushPointerOver" ResourceKey="AppBarButtonBorderBrushPointerOver"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushPressed" ResourceKey="AppBarButtonBorderBrushPressed"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushDisabled" ResourceKey="AppBarButtonBorderBrushDisabled"/>
|
||||
</ResourceDictionary>
|
||||
<ResourceDictionary x:Key="Light">
|
||||
<StaticResource x:Key="ButtonBackground" ResourceKey="AppBarButtonBackground"/>
|
||||
<StaticResource x:Key="ButtonBackgroundPointerOver" ResourceKey="AppBarButtonBackgroundPointerOver"/>
|
||||
<StaticResource x:Key="ButtonBackgroundPressed" ResourceKey="AppBarButtonBackgroundPressed"/>
|
||||
<StaticResource x:Key="ButtonBackgroundDisabled" ResourceKey="AppBarButtonBackgroundDisabled"/>
|
||||
<StaticResource x:Key="ButtonForeground" ResourceKey="AppBarButtonForeground"/>
|
||||
<StaticResource x:Key="ButtonForegroundPointerOver" ResourceKey="AppBarButtonForegroundPointerOver"/>
|
||||
<StaticResource x:Key="ButtonForegroundPressed" ResourceKey="AppBarButtonForegroundPressed"/>
|
||||
<StaticResource x:Key="ButtonForegroundDisabled" ResourceKey="AppBarButtonForegroundDisabled"/>
|
||||
<StaticResource x:Key="ButtonBorderBrush" ResourceKey="AppBarButtonBorderBrush"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushPointerOver" ResourceKey="AppBarButtonBorderBrushPointerOver"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushPressed" ResourceKey="AppBarButtonBorderBrushPressed"/>
|
||||
<StaticResource x:Key="ButtonBorderBrushDisabled" ResourceKey="AppBarButtonBorderBrushDisabled"/>
|
||||
</ResourceDictionary>
|
||||
</ResourceDictionary.ThemeDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Button.Resources>
|
||||
<Viewbox
|
||||
Width="{StaticResource InfoBarCloseButtonGlyphSize}"
|
||||
Height="{StaticResource InfoBarCloseButtonGlyphSize}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
<SymbolIcon Symbol="{StaticResource InfoBarCloseButtonSymbol}"/>
|
||||
</Viewbox>
|
||||
</Button>
|
||||
|
||||
</Grid>
|
||||
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup x:Name="SeverityLevels">
|
||||
<VisualState x:Name="Informational"/>
|
||||
<VisualState x:Name="Error">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ContentRoot.Background" Value="{ThemeResource InfoBarErrorSeverityBackgroundBrush}"/>
|
||||
<Setter Target="IconBackground.Foreground" Value="{ThemeResource InfoBarErrorSeverityIconBackground}"/>
|
||||
<Setter Target="StandardIcon.Text" Value="{StaticResource InfoBarErrorIconGlyph}"/>
|
||||
<Setter Target="StandardIcon.Foreground" Value="{ThemeResource InfoBarErrorSeverityIconForeground}"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Warning">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ContentRoot.Background" Value="{ThemeResource InfoBarWarningSeverityBackgroundBrush}"/>
|
||||
<Setter Target="IconBackground.Foreground" Value="{ThemeResource InfoBarWarningSeverityIconBackground}"/>
|
||||
<Setter Target="StandardIcon.Text" Value="{StaticResource InfoBarWarningIconGlyph}"/>
|
||||
<Setter Target="StandardIcon.Foreground" Value="{ThemeResource InfoBarWarningSeverityIconForeground}"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Success">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ContentRoot.Background" Value="{ThemeResource InfoBarSuccessSeverityBackgroundBrush}"/>
|
||||
<Setter Target="IconBackground.Foreground" Value="{ThemeResource InfoBarSuccessSeverityIconBackground}"/>
|
||||
<Setter Target="StandardIcon.Text" Value="{StaticResource InfoBarSuccessIconGlyph}"/>
|
||||
<Setter Target="StandardIcon.Foreground" Value="{ThemeResource InfoBarSuccessSeverityIconForeground}"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup x:Name="IconStates">
|
||||
<VisualState x:Name="StandardIconVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="UserIconBox.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="StandardIconArea.Visibility" Value="Visible"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="UserIconVisible">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="UserIconBox.Visibility" Value="Visible"/>
|
||||
<Setter Target="StandardIconArea.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="NoIconVisible"/>
|
||||
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup>
|
||||
<VisualState x:Name="CloseButtonVisible"/>
|
||||
<VisualState x:Name="CloseButtonCollapsed">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="CloseButton.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup x:Name="InfoBarVisibility">
|
||||
<VisualState x:Name="InfoBarVisible"/>
|
||||
<VisualState x:Name="InfoBarCollapsed">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ContentRoot.Visibility" Value="Collapsed"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup>
|
||||
<VisualState x:Name="ForegroundNotSet"/>
|
||||
<VisualState x:Name="ForegroundSet">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="Title.Foreground" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Foreground}"/>
|
||||
<Setter Target="Message.Foreground" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Foreground}"/>
|
||||
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
</Border>
|
||||
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
|
||||
@@ -150,7 +150,7 @@ internal sealed class Activation : IActivation
|
||||
// Increase launch times
|
||||
LocalSetting.Set(SettingKeys.LaunchTimes, LocalSetting.Get(SettingKeys.LaunchTimes, 0) + 1);
|
||||
|
||||
if (false && LocalSetting.Get(SettingKeys.Major1Minor7Revision0GuideState, (uint)GuideState.None) < (uint)GuideState.Completed)
|
||||
if (LocalSetting.Get(SettingKeys.Major1Minor7Revision0GuideState, (uint)GuideState.Language) < (uint)GuideState.Completed)
|
||||
{
|
||||
await taskContext.SwitchToMainThreadAsync();
|
||||
serviceProvider.GetRequiredService<GuideWindow>();
|
||||
@@ -243,11 +243,6 @@ internal sealed class Activation : IActivation
|
||||
{
|
||||
try
|
||||
{
|
||||
if (serviceProvider.GetRequiredService<IHutaoUserService>() is IHutaoUserServiceInitialization hutaoUserServiceInitialization)
|
||||
{
|
||||
await hutaoUserServiceInitialization.InitializeInternalAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
await serviceProvider
|
||||
.GetRequiredService<IDailyNoteService>()
|
||||
.RefreshDailyNotesAsync()
|
||||
|
||||
@@ -115,6 +115,11 @@ internal static class LocalSetting
|
||||
return Get<Windows.Foundation.Rect>(key, defaultValue);
|
||||
}
|
||||
|
||||
public static ApplicationDataCompositeValue Get(string key, ApplicationDataCompositeValue defaultValue)
|
||||
{
|
||||
return Get<ApplicationDataCompositeValue>(key, defaultValue);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="Set{T}(string, T)"/>
|
||||
public static void Set(string key, byte value)
|
||||
{
|
||||
@@ -217,6 +222,11 @@ internal static class LocalSetting
|
||||
Set<Windows.Foundation.Rect>(key, value);
|
||||
}
|
||||
|
||||
public static void Set(string key, ApplicationDataCompositeValue value)
|
||||
{
|
||||
Set<ApplicationDataCompositeValue>(key, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取设置项的值
|
||||
/// </summary>
|
||||
|
||||
@@ -48,4 +48,9 @@ internal static class SettingKeys
|
||||
/// 1.7.0 版本指引状态
|
||||
/// </summary>
|
||||
public const string Major1Minor7Revision0GuideState = "Major1Minor7Revision0GuideState";
|
||||
|
||||
/// <summary>
|
||||
/// 排除的系统公告
|
||||
/// </summary>
|
||||
public const string ExcludedAnnouncementIds = "ExcludedAnnouncementIds";
|
||||
}
|
||||
@@ -26,7 +26,7 @@ internal sealed class JumpListInterop : IJumpListInterop
|
||||
list.Items.Clear();
|
||||
|
||||
JumpListItem launchGameItem = JumpListItem.CreateWithArguments(Activation.LaunchGame, SH.CoreJumpListHelperLaunchGameItemDisplayName);
|
||||
launchGameItem.Logo = "ms-appx:///Resource/Icon/UI_GuideIcon_PlayMethod.png".ToUri();
|
||||
launchGameItem.Logo = "ms-appx:///Resource/Navigation/LaunchGame.png".ToUri();
|
||||
|
||||
list.Items.Add(launchGameItem);
|
||||
|
||||
|
||||
@@ -84,6 +84,11 @@ internal static partial class EnumerableExtension
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void RemoveLast<T>(this IList<T> collection)
|
||||
{
|
||||
collection.RemoveAt(collection.Count - 1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 转换到新类型的列表
|
||||
/// </summary>
|
||||
|
||||
@@ -4,17 +4,11 @@
|
||||
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:mxi="using:Microsoft.Xaml.Interactivity"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shvg="using:Snap.Hutao.View.Guide"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="RootGrid">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
|
||||
@@ -14,24 +14,6 @@
|
||||
Height="44"
|
||||
Margin="48,0,0,0"/>
|
||||
|
||||
<cwuc:SwitchPresenter x:Name="ContentSwitchPresenter">
|
||||
<cwuc:SwitchPresenter.ContentTransitions>
|
||||
<TransitionCollection>
|
||||
<EntranceThemeTransition/>
|
||||
</TransitionCollection>
|
||||
</cwuc:SwitchPresenter.ContentTransitions>
|
||||
<cwuc:Case>
|
||||
<cwuc:Case.Value>
|
||||
<x:Boolean>True</x:Boolean>
|
||||
</cwuc:Case.Value>
|
||||
<shv:WelcomeView/>
|
||||
</cwuc:Case>
|
||||
<cwuc:Case>
|
||||
<cwuc:Case.Value>
|
||||
<x:Boolean>False</x:Boolean>
|
||||
</cwuc:Case.Value>
|
||||
<shv:MainView/>
|
||||
</cwuc:Case>
|
||||
</cwuc:SwitchPresenter>
|
||||
<shv:MainView/>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
using Microsoft.UI.Xaml;
|
||||
using Snap.Hutao.Core.Setting;
|
||||
using Snap.Hutao.Core.Windowing;
|
||||
using Snap.Hutao.Message;
|
||||
using Windows.Foundation;
|
||||
using Windows.Win32.UI.WindowsAndMessaging;
|
||||
|
||||
@@ -17,7 +14,7 @@ namespace Snap.Hutao;
|
||||
[HighQuality]
|
||||
[Injection(InjectAs.Singleton)]
|
||||
[SuppressMessage("", "CA1001")]
|
||||
internal sealed partial class MainWindow : Window, IWindowOptionsSource, IRecipient<WelcomeStateCompleteMessage>
|
||||
internal sealed partial class MainWindow : Window, IWindowOptionsSource
|
||||
{
|
||||
private const int MinWidth = 848;
|
||||
private const int MinHeight = 524;
|
||||
@@ -35,11 +32,8 @@ internal sealed partial class MainWindow : Window, IWindowOptionsSource, IRecipi
|
||||
InitializeComponent();
|
||||
windowOptions = new(this, TitleBarView.DragArea, new(1200, 741), true);
|
||||
ExtendedWindow<MainWindow>.Initialize(this, serviceProvider);
|
||||
serviceProvider.GetRequiredService<IMessenger>().Register(this);
|
||||
logger = serviceProvider.GetRequiredService<ILogger<MainWindow>>();
|
||||
|
||||
// If not complete we should present the welcome view.
|
||||
ContentSwitchPresenter.Value = StaticResource.IsAnyUnfulfilledContractPresent();
|
||||
closedEventHander = OnClosed;
|
||||
Closed += closedEventHander;
|
||||
}
|
||||
@@ -54,12 +48,6 @@ internal sealed partial class MainWindow : Window, IWindowOptionsSource, IRecipi
|
||||
pInfo->ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo->ptMinTrackSize.Y);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public void Receive(WelcomeStateCompleteMessage message)
|
||||
{
|
||||
ContentSwitchPresenter.Value = false;
|
||||
}
|
||||
|
||||
private void OnClosed(object sender, WindowEventArgs args)
|
||||
{
|
||||
logger.LogInformation("MainWindow Closed");
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
namespace Snap.Hutao.Message;
|
||||
|
||||
/// <summary>
|
||||
/// 欢迎状态完成消息
|
||||
/// </summary>
|
||||
[HighQuality]
|
||||
internal sealed class WelcomeStateCompleteMessage
|
||||
{
|
||||
}
|
||||
@@ -119,7 +119,7 @@ internal sealed partial class GachaItem
|
||||
ArchiveId = archiveId,
|
||||
GachaType = item.GachaType,
|
||||
QueryType = item.UIGFGachaType,
|
||||
ItemId = uint.Parse(item.ItemId, CultureInfo.CurrentCulture),
|
||||
ItemId = uint.Parse(item.ItemId, CultureInfo.CurrentCulture), // TODO: catch the FormatException and throw v2.3 incompat exception
|
||||
Time = item.Time,
|
||||
Id = item.Id,
|
||||
};
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using System.Runtime.Versioning;
|
||||
|
||||
namespace Snap.Hutao.Model.Entity;
|
||||
|
||||
/// <summary>
|
||||
@@ -86,10 +88,16 @@ internal sealed partial class SettingEntry
|
||||
/// <summary>
|
||||
/// 启动游戏 多倍启动
|
||||
/// </summary>
|
||||
[Obsolete("不再支持多开")]
|
||||
public const string MultipleInstances = "Launch.MultipleInstances";
|
||||
|
||||
/// <summary>
|
||||
/// 语言
|
||||
/// </summary>
|
||||
public const string Culture = "Culture";
|
||||
|
||||
/// <summary>
|
||||
/// 自定义极验接口
|
||||
/// </summary>
|
||||
public const string GeetestCustomCompositeUrl = "GeetestCustomCompositeUrl";
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |
@@ -1536,6 +1536,69 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 游戏进程已退出 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ServiceGameLaunchPhaseProcessExited {
|
||||
get {
|
||||
return ResourceManager.GetString("ServiceGameLaunchPhaseProcessExited", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 正在初始化游戏进程 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ServiceGameLaunchPhaseProcessInitializing {
|
||||
get {
|
||||
return ResourceManager.GetString("ServiceGameLaunchPhaseProcessInitializing", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 游戏进程已启动 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ServiceGameLaunchPhaseProcessStarted {
|
||||
get {
|
||||
return ResourceManager.GetString("ServiceGameLaunchPhaseProcessStarted", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 解锁帧率上限失败,正在结束游戏进程 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ServiceGameLaunchPhaseUnlockFpsFailed {
|
||||
get {
|
||||
return ResourceManager.GetString("ServiceGameLaunchPhaseUnlockFpsFailed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 解锁帧率上限成功 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ServiceGameLaunchPhaseUnlockFpsSucceed {
|
||||
get {
|
||||
return ResourceManager.GetString("ServiceGameLaunchPhaseUnlockFpsSucceed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 正在尝试解锁帧率上限 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ServiceGameLaunchPhaseUnlockingFps {
|
||||
get {
|
||||
return ResourceManager.GetString("ServiceGameLaunchPhaseUnlockingFps", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 等待游戏进程退出 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ServiceGameLaunchPhaseWaitingProcessExit {
|
||||
get {
|
||||
return ResourceManager.GetString("ServiceGameLaunchPhaseWaitingProcessExit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 选择游戏本体 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2031,6 +2094,33 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 预测 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewControlStatisticsSegmentedItemContentPrediction {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewControlStatisticsSegmentedItemContentPrediction", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 比例 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewControlStatisticsSegmentedItemContentProportion {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewControlStatisticsSegmentedItemContentProportion", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 统计 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewControlStatisticsSegmentedItemContentStatistics {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewControlStatisticsSegmentedItemContentStatistics", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 养成计划 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2274,6 +2364,87 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 请输入请求接口的 Url 复合模板 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlCompositInputHint {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlCompositInputHint", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 接口需要返回形如上方所示的 Json 数据,多余的数据会被忽略 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlReturnDataDescription1 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlReturnDataDescription1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 "code" 为 0 时,指示验证成功,其他的值均视为验证失败 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlReturnDataDescription2 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlReturnDataDescription2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 返回数据 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlReturnDataHeader {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlReturnDataHeader", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 {0} 将在实际请求时替换为 gt 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlSampleDescription1 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlSampleDescription1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 {1} 将在实际请求时替换为 challenge 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlSampleDescription2 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlSampleDescription2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 将会通过 GET 方式对接口发送请求 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlSampleDescription3 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlSampleDescription3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 示例 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlSampleHeader {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlSampleHeader", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 配置无感验证接口 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewDialogGeetestCustomUrlTitle {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewDialogGeetestCustomUrlTitle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 导出 App 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2454,6 +2625,132 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 我已阅读并同意 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepAgreementIHaveReadText {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepAgreementIHaveReadText", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 问题报告方式与流程 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepAgreementIssueReport {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepAgreementIssueReport", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Snap Hutao 开源许可 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepAgreementOpenSourceLicense {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepAgreementOpenSourceLicense", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 用户数据与隐私权益 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepAgreementPrivacyPolicy {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepAgreementPrivacyPolicy", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 用户使用协议与法律声明 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepAgreementTermOfService {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepAgreementTermOfService", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 文档 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepDocument {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepDocument", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 环境 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepEnvironment {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepEnvironment", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 安装完成后重启胡桃以查看是否正常生效 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepEnvironmentAfterInstallDescription {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepEnvironmentAfterInstallDescription", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 如果上方的图标中存在乱码,请前往 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepEnvironmentFontDescription1 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepEnvironmentFontDescription1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 下载并自行安装图标字体 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepEnvironmentFontDescription2 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepEnvironmentFontDescription2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 若未检测到 WebView2 运行时信息,可以前往 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepEnvironmentWebView2Description1 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepEnvironmentWebView2Description1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 下载并自行安装运行时 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepEnvironmentWebView2Description2 {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepEnvironmentWebView2Description2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 语言 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepLanguage {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepLanguage", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 资源 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewGuideStepStaticResource {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewGuideStepStaticResource", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 深渊统计 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2833,7 +3130,7 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 {1:00.000%} 概率 {0} 抽后获得五星物品 的本地化字符串。
|
||||
/// 查找类似 {1:P3} 概率 {0} 抽后获得五星物品 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewModelGachaLogPredictedPullLeftToOrange {
|
||||
get {
|
||||
@@ -2842,7 +3139,7 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 {0:00.000%} 概率下一抽获得五星物品 的本地化字符串。
|
||||
/// 查找类似 {0:P3} 概率下一抽获得五星物品 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewModelGachaLogProbabilityOfNextPullIsOrange {
|
||||
get {
|
||||
@@ -2904,6 +3201,42 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 我已阅读并同意上方的条款 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewModelGuideActionAgreement {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewModelGuideActionAgreement", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 完成 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewModelGuideActionComplete {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewModelGuideActionComplete", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 下一步 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewModelGuideActionNext {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewModelGuideActionNext", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 下载资源文件中,请稍候 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewModelGuideActionStaticResourceBegin {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewModelGuideActionStaticResourceBegin", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 请输入正确的邮箱 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -3363,6 +3696,15 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 刷新时间 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewPageAvatarPropertyRefreshTimeToggle {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewPageAvatarPropertyRefreshTimeToggle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 评分 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -3769,7 +4111,7 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 每期深渊首次上传可免费获得5天时长 的本地化字符串。
|
||||
/// 查找类似 每期深渊首次上传可免费获得 3 天时长 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewPageGachaLogHutaoCloudSpiralAbyssActivityDescription {
|
||||
get {
|
||||
@@ -4911,6 +5253,42 @@ namespace Snap.Hutao.Resource.Localization {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 配置 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewPageSettingGeetestCustomUrlAction {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewPageSettingGeetestCustomUrlAction", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 配置当请求触发人机验证时使用的验证接口 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewPageSettingGeetestCustomUrlDescription {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewPageSettingGeetestCustomUrlDescription", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 配置验证请求接口 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewPageSettingGeetestCustomUrlHeader {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewPageSettingGeetestCustomUrlHeader", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 无感验证 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ViewPageSettingGeetestVerificationHeader {
|
||||
get {
|
||||
return ResourceManager.GetString("ViewPageSettingGeetestVerificationHeader", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 胡桃账号 的本地化字符串。
|
||||
/// </summary>
|
||||
|
||||
@@ -60,45 +60,45 @@
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
||||
<xsd:attribute name="type" type="xsd:string"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="alias" type="xsd:string"/>
|
||||
<xsd:attribute name="name" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
@@ -153,6 +153,9 @@
|
||||
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
|
||||
<value>List</value>
|
||||
</data>
|
||||
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
|
||||
<value>Database is corrupted: {0}</value>
|
||||
</data>
|
||||
<data name="CoreExceptionServiceUserdataCorruptedMessage" xml:space="preserve">
|
||||
<value>User data archive is corrupted: {0}</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="FilePickerImportCommit" xml:space="preserve">
|
||||
<value>Import</value>
|
||||
</data>
|
||||
<data name="GuideWindowTitle" xml:space="preserve">
|
||||
<value>Welcome to Snap Hutao, Traveler ~</value>
|
||||
</data>
|
||||
<data name="LaunchGameTitle" xml:space="preserve">
|
||||
<value>Select Account to Launch</value>
|
||||
</data>
|
||||
@@ -231,9 +237,24 @@
|
||||
<data name="ModelBindingUserInitializationFailed" xml:space="preserve">
|
||||
<value>Network Error</value>
|
||||
</data>
|
||||
<data name="ModelEntityDailyNoteNotRefreshed" xml:space="preserve">
|
||||
<value>Not refreshed</value>
|
||||
</data>
|
||||
<data name="ModelEntityDailyNoteRefreshTimeFormat" xml:space="preserve">
|
||||
<value>Refresh at {0:yyyy/MM/dd HH:mm:ss}</value>
|
||||
</data>
|
||||
<data name="ModelEntitySpiralAbyssScheduleFormat" xml:space="preserve">
|
||||
<value>Schedule {0}</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeAvatar" xml:space="preserve">
|
||||
<value>Character</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeUnknown" xml:space="preserve">
|
||||
<value>Unknown</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeWeapon" xml:space="preserve">
|
||||
<value>Weapon</value>
|
||||
</data>
|
||||
<data name="ModelIntrinsicAssociationTypeFatui" xml:space="preserve">
|
||||
<value>Fatui</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
@@ -351,6 +372,9 @@
|
||||
<value>Sword</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataAvatarPlayerName" xml:space="preserve">
|
||||
<value>Traveler</value>
|
||||
</data>
|
||||
<data name="ModelMetadataFetterInfoBirthdayFormat" xml:space="preserve">
|
||||
<value>{0}/{1}</value>
|
||||
</data>
|
||||
@@ -375,7 +399,7 @@
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataMaterialLocalSpecialtyRegex" xml:space="preserve">
|
||||
<value>^[\u4e00-\u9fa5]{2}区域特产$</value>
|
||||
<value>^[\u4e00-\u9fa5]{2}Local Specialty$</value>
|
||||
<comment>If you don't know what is regex, DO NOT TRANSLATE THIS!</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataMaterialWeaponAscensionMaterial" xml:space="preserve">
|
||||
@@ -506,6 +530,24 @@
|
||||
<value>Anemo RES</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryCalculatorNotRefreshed" xml:space="preserve">
|
||||
<value>Dev Plan: N/A</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryCalculatorRefreshTimeFormat" xml:space="preserve">
|
||||
<value>Avatar Calculator: {0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryGameRecordNotRefreshed" xml:space="preserve">
|
||||
<value>My Characters: N/A</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryGameRecordRefreshTimeFormat" xml:space="preserve">
|
||||
<value>My Characters: {0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryShowcaseNotRefreshed" xml:space="preserve">
|
||||
<value>Enka: N/A</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryShowcaseRefreshTimeFormat" xml:space="preserve">
|
||||
<value>Character Showcase: {0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceCultivationProjectCurrentUserdataCourrpted" xml:space="preserve">
|
||||
<value>Failed to save development plan status</value>
|
||||
</data>
|
||||
@@ -584,6 +626,9 @@
|
||||
<data name="ServiceGachaLogHutaoCloudServiceNotAllowed" xml:space="preserve">
|
||||
<value>Wish history uploading service is not available</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUIGFImportItemInvalidFormat" xml:space="preserve">
|
||||
<value>Data contains unexpected item, Id: {0}</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUrlProviderAuthkeyRequestFailed" xml:space="preserve">
|
||||
<value>Failed to request authkey</value>
|
||||
</data>
|
||||
@@ -602,9 +647,15 @@
|
||||
<data name="ServiceGachaLogUrlProviderStokenUnsupported" xml:space="preserve">
|
||||
<value>SToken refresh does not support HoYoLab account</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUrlProviderUrlLanguageNotMatchCurrentLocale" xml:space="preserve">
|
||||
<value>UIGF file language: {0} does not match Snap Hutao language: {1}, please retry after switching client language to target UIGF file language</value>
|
||||
</data>
|
||||
<data name="ServiceGachaStatisticsFactoryItemIdInvalid" xml:space="preserve">
|
||||
<value>Unsupported Item ID: {0}</value>
|
||||
</data>
|
||||
<data name="ServiceGachaUIGFImportLanguageNotMatch" xml:space="preserve">
|
||||
<value>UIGF file language: {0} does not match Snap Hutao language: {1}, please retry after switching client language to target UIGF file language</value>
|
||||
</data>
|
||||
<data name="ServiceGameDetectGameAccountMultiMatched" xml:space="preserve">
|
||||
<value>Multiple matching accounts detected, please delete duplicate accounts</value>
|
||||
</data>
|
||||
@@ -614,6 +665,27 @@
|
||||
<data name="ServiceGameFileOperationExceptionMessage" xml:space="preserve">
|
||||
<value>Failed to operate on game file: {0}</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessExited" xml:space="preserve">
|
||||
<value>Game process closed</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessInitializing" xml:space="preserve">
|
||||
<value>Initializing game process…</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessStarted" xml:space="preserve">
|
||||
<value>Game process started</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsFailed" xml:space="preserve">
|
||||
<value>Failed to unlock frame rate limit, closing game process…</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsSucceed" xml:space="preserve">
|
||||
<value>Successfully unlocked frame rate limit</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockingFps" xml:space="preserve">
|
||||
<value>Trying to unlock frame rate limit…</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
|
||||
<value>Waiting for the game process to close…</value>
|
||||
</data>
|
||||
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
|
||||
<value>Select game executable</value>
|
||||
</data>
|
||||
@@ -623,6 +695,15 @@
|
||||
<data name="ServiceGameLocatorUnityLogGamePathNotFound" xml:space="preserve">
|
||||
<value>Game path not found in Unity log file</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileBackupFormat" xml:space="preserve">
|
||||
<value>Backup:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileRenameFormat" xml:space="preserve">
|
||||
<value>Rename:{0} to:{1}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileRestoreFormat" xml:space="preserve">
|
||||
<value>Replace: {0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageRenameDataFolderFailed" xml:space="preserve">
|
||||
<value>Failed to change data folder name</value>
|
||||
</data>
|
||||
@@ -632,6 +713,9 @@
|
||||
<data name="ServiceGamePackageRequestPackageVerionFailed" xml:space="preserve">
|
||||
<value>Requesting Package Version failed</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageRequestScatteredFileFailed" xml:space="preserve">
|
||||
<value>Failed to download client file: {0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePathLocateFailed" xml:space="preserve">
|
||||
<value>Unable to find game path. Edit it in the Setting page.</value>
|
||||
</data>
|
||||
@@ -666,7 +750,7 @@
|
||||
<value>Wish history data backup service will be available until\n{0:yyyy-MM-dd HH:mm:ss}</value>
|
||||
</data>
|
||||
<data name="ServiceMetadataFileNotFound" xml:space="preserve">
|
||||
<value>无法找到缓存的元数据文件</value>
|
||||
<value>Unable to find cached metadata file</value>
|
||||
</data>
|
||||
<data name="ServiceMetadataNotInitialized" xml:space="preserve">
|
||||
<value>Metadata service has not been initialized or failed to initialize</value>
|
||||
@@ -680,6 +764,15 @@
|
||||
<data name="ServiceMetadataVersionNotSupported" xml:space="preserve">
|
||||
<value>Your Snap Hutao version is too low. Please update as soon as possible.</value>
|
||||
</data>
|
||||
<data name="ServiceSignInClaimRewardFailedFormat" xml:space="preserve">
|
||||
<value>Check-in failed, {0}</value>
|
||||
</data>
|
||||
<data name="ServiceSignInRewardListRequestFailed" xml:space="preserve">
|
||||
<value>Fetch Signin reward list failed</value>
|
||||
</data>
|
||||
<data name="ServiceSignInSuccessRewardFormat" xml:space="preserve">
|
||||
<value>Check-in successfully, {0} x {1}</value>
|
||||
</data>
|
||||
<data name="ServiceUserCurrentMultiMatched" xml:space="preserve">
|
||||
<value>Multiple users recorded as selected</value>
|
||||
</data>
|
||||
@@ -746,12 +839,27 @@
|
||||
<data name="ViewControlStatisticsCardPurpleText" xml:space="preserve">
|
||||
<value>4 Stars</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardToLastOrangeText" xml:space="preserve">
|
||||
<value>Last 5 Stars</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardToLastPurpleText" xml:space="preserve">
|
||||
<value>Last 4 Stars</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardUpAveragePullText" xml:space="preserve">
|
||||
<value>Luckiness Avg</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardUpText" xml:space="preserve">
|
||||
<value>UP</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentPrediction" xml:space="preserve">
|
||||
<value>Prediction</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentProportion" xml:space="preserve">
|
||||
<value>Proportion</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
|
||||
<value>Statistics</value>
|
||||
</data>
|
||||
<data name="ViewCultivationHeader" xml:space="preserve">
|
||||
<value>Dev Plan</value>
|
||||
</data>
|
||||
@@ -792,7 +900,7 @@
|
||||
<value>Create new plan</value>
|
||||
</data>
|
||||
<data name="ViewDialogCultivatePromotionDeltaTitle" xml:space="preserve">
|
||||
<value>Add to current plan</value>
|
||||
<value>Add to Current Dev Plan</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationDailyTaskNotify" xml:space="preserve">
|
||||
<value>Daily Commission Availability Notification</value>
|
||||
@@ -800,6 +908,9 @@
|
||||
<data name="ViewDialogDailyNoteNotificationExpeditionNotify" xml:space="preserve">
|
||||
<value>Expedition Reward Notification</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationHomeCoinNotifyThreshold" xml:space="preserve">
|
||||
<value>Original Resin Alarm Threshold</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationResinNotifyThreshold" xml:space="preserve">
|
||||
<value>Realm Currency Alarm Threshold</value>
|
||||
</data>
|
||||
@@ -830,6 +941,33 @@
|
||||
<data name="ViewDialogGachaLogUrlTitle" xml:space="preserve">
|
||||
<value>Input wish history URL manually</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlCompositInputHint" xml:space="preserve">
|
||||
<value>Input request Url with composit template</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription1" xml:space="preserve">
|
||||
<value>The interface requires a return of Json data as shown above. Extra data will be ignored</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription2" xml:space="preserve">
|
||||
<value>If "code" is 0, the authentication is successful, otherwise the authentication is failed</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataHeader" xml:space="preserve">
|
||||
<value>Returned data</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription1" xml:space="preserve">
|
||||
<value>{0} will be replaced with gt during a request</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription2" xml:space="preserve">
|
||||
<value>{1} will be replaced with challenge during a request</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription3" xml:space="preserve">
|
||||
<value>Requests will be sent to interfaces via GET</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleHeader" xml:space="preserve">
|
||||
<value>Example</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlTitle" xml:space="preserve">
|
||||
<value>Configure no authentication interface</value>
|
||||
</data>
|
||||
<data name="ViewDialogImportExportApp" xml:space="preserve">
|
||||
<value>Export App</value>
|
||||
</data>
|
||||
@@ -890,11 +1028,53 @@
|
||||
<data name="ViewGachaLogHeader" xml:space="preserve">
|
||||
<value>Wish History</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIHaveReadText" xml:space="preserve">
|
||||
<value>I've read and agreed to</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIssueReport" xml:space="preserve">
|
||||
<value>Issue Reporting Approach and Process</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementOpenSourceLicense" xml:space="preserve">
|
||||
<value>Snap Hutao Open Source License</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementPrivacyPolicy" xml:space="preserve">
|
||||
<value>User Data and Privacy Notice</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementTermOfService" xml:space="preserve">
|
||||
<value>User Agreement and Legal Notices</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepDocument" xml:space="preserve">
|
||||
<value>Documentation</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironment" xml:space="preserve">
|
||||
<value>Environments</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentAfterInstallDescription" xml:space="preserve">
|
||||
<value>Restart Snap Hutao after the installation to check if it takes effect</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription1" xml:space="preserve">
|
||||
<value>If icons above are mojibake or unable to load, please visit</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription2" xml:space="preserve">
|
||||
<value>to download and install the font</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description1" xml:space="preserve">
|
||||
<value>If no Webview2 runtime information detected, please visit</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description2" xml:space="preserve">
|
||||
<value>to download and install runtime</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepLanguage" xml:space="preserve">
|
||||
<value>Language</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepStaticResource" xml:space="preserve">
|
||||
<value>Assets</value>
|
||||
</data>
|
||||
<data name="ViewHutaoDatabaseHeader" xml:space="preserve">
|
||||
<value>Abyss Stats</value>
|
||||
</data>
|
||||
<data name="ViewInfoBarToggleTitle" xml:space="preserve">
|
||||
<value>有新的通知</value>
|
||||
<value>New notification</value>
|
||||
</data>
|
||||
<data name="ViewLaunchGameHeader" xml:space="preserve">
|
||||
<value>Game Launcher</value>
|
||||
@@ -983,6 +1163,9 @@
|
||||
<data name="ViewModelDailyNoteRegisterTaskFail" xml:space="preserve">
|
||||
<value>Failed to add Scheduled Task, please try again in administrator mode</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRequestProgressTitle" xml:space="preserve">
|
||||
<value>Fetching Realtime Notes data, please wait</value>
|
||||
</data>
|
||||
<data name="ViewModelExportSuccessMessage" xml:space="preserve">
|
||||
<value>Successfully saved to selected patch</value>
|
||||
</data>
|
||||
@@ -1014,10 +1197,10 @@
|
||||
<value>Import Failed</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogPredictedPullLeftToOrange" xml:space="preserve">
|
||||
<value>{1:00.000%} 概率 {0} 抽后获得五星物品</value>
|
||||
<value>{1:P3} chance to get a 5-star item after {0} wishes</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogProbabilityOfNextPullIsOrange" xml:space="preserve">
|
||||
<value>{0:00.000%} 概率下一抽获得五星物品</value>
|
||||
<value>{0:P3} chance to get a 5-star item in the next wish</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRefreshFail" xml:space="preserve">
|
||||
<value>Failed to fetch wish history</value>
|
||||
@@ -1037,6 +1220,21 @@
|
||||
<data name="ViewModelGachaLogUploadToHutaoCloudProgress" xml:space="preserve">
|
||||
<value>Uploading to Snap Hutao Cloud Service</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionAgreement" xml:space="preserve">
|
||||
<value>I've Read and Agreed Conditions Above</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionComplete" xml:space="preserve">
|
||||
<value>Complete</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionNext" xml:space="preserve">
|
||||
<value>Next</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionStaticResourceBegin" xml:space="preserve">
|
||||
<value>Dowloading Assets</value>
|
||||
</data>
|
||||
<data name="ViewModelHutaoPassportEmailNotValidHint" xml:space="preserve">
|
||||
<value>Please enter correct email address.</value>
|
||||
</data>
|
||||
<data name="ViewModelImportFromClipboardErrorTitle" xml:space="preserve">
|
||||
<value>Text format in clipboard is incorrect</value>
|
||||
</data>
|
||||
@@ -1134,7 +1332,7 @@
|
||||
<value>Import</value>
|
||||
</data>
|
||||
<data name="ViewPageAchievementRemoveArchive" xml:space="preserve">
|
||||
<value>Delete current archive</value>
|
||||
<value>Delete Current Archive</value>
|
||||
</data>
|
||||
<data name="ViewPageAchievementSearchPlaceholder" xml:space="preserve">
|
||||
<value>Search achievement name, description or ID</value>
|
||||
@@ -1158,7 +1356,7 @@
|
||||
<value>No character data fetched</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyExportAsImage" xml:space="preserve">
|
||||
<value>Export as image</value>
|
||||
<value>Export as Image</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyHeader" xml:space="preserve">
|
||||
<value>Character Attributes</value>
|
||||
@@ -1187,6 +1385,9 @@
|
||||
<data name="ViewPageAvatarPropertyRefreshFromHoyolabGameRecordDescription" xml:space="preserve">
|
||||
<value>Sync most data other than character talent</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyRefreshTimeToggle" xml:space="preserve">
|
||||
<value>Refresh Time</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyScore" xml:space="preserve">
|
||||
<value>Rating</value>
|
||||
</data>
|
||||
@@ -1230,7 +1431,7 @@
|
||||
<value>Delete list</value>
|
||||
</data>
|
||||
<data name="ViewPageCultivationRemoveProject" xml:space="preserve">
|
||||
<value>Delete current plan</value>
|
||||
<value>Delete Current Plan</value>
|
||||
</data>
|
||||
<data name="ViewPageCultivationWikiAvatarDescription" xml:space="preserve">
|
||||
<value>Add any character to Development Plan</value>
|
||||
@@ -1271,11 +1472,23 @@
|
||||
<data name="ViewPageDailyNoteResinDiscountUsed" xml:space="preserve">
|
||||
<value>Cost-halving Used</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingAutoRefresh" xml:space="preserve">
|
||||
<value>Auto Refresh</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingAutoRefreshDescription" xml:space="preserve">
|
||||
<value>Refresh the Realtime Notes added after the selected time</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingRefreshElevatedHint" xml:space="preserve">
|
||||
<value>These options are only allowed to modify in non-admin mode</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingRefreshHeader" xml:space="preserve">
|
||||
<value>Refresh</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSlientModeDescription" xml:space="preserve">
|
||||
<value>Do not disturb during Genshin gaming</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSlientModeHeader" xml:space="preserve">
|
||||
<value>Do not disturb</value>
|
||||
<value>Do Not Disturb</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteVerify" xml:space="preserve">
|
||||
<value>Verify Current User and Role</value>
|
||||
@@ -1311,7 +1524,7 @@
|
||||
<value>Download the Cloud Archive of This Uid</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityDescription" xml:space="preserve">
|
||||
<value>Free 5 days after uploading current schedule abyss record</value>
|
||||
<value>Free 3-day license after uploading current schedule Abyss record</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityHeader" xml:space="preserve">
|
||||
<value>Upload Abyss Records</value>
|
||||
@@ -1337,6 +1550,12 @@
|
||||
<data name="ViewPageGachaLogRefreshAction" xml:space="preserve">
|
||||
<value>Fetch</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByManualInput" xml:space="preserve">
|
||||
<value>Type in URL manually.</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByManualInputDescription" xml:space="preserve">
|
||||
<value>We use provided URL to refresh your wish history</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshBySToken" xml:space="preserve">
|
||||
<value>SToken Refresh</value>
|
||||
</data>
|
||||
@@ -1350,7 +1569,7 @@
|
||||
<value>Use embedded browser cache to refresh wish history</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRemoveArchiveAction" xml:space="preserve">
|
||||
<value>Delete current archive</value>
|
||||
<value>Delete Current Archive</value>
|
||||
</data>
|
||||
<data name="ViewPageGahcaLogPivotAvatar" xml:space="preserve">
|
||||
<value>Character</value>
|
||||
@@ -1368,19 +1587,19 @@
|
||||
<value>Weapon</value>
|
||||
</data>
|
||||
<data name="ViewPageHomeGreetingTextCommon1" xml:space="preserve">
|
||||
<value>胡桃已经为你启动了 {0} 次游戏</value>
|
||||
<value>Snap Hutao has launched the game for you {0} times</value>
|
||||
</data>
|
||||
<data name="ViewPageHomeGreetingTextCommon2" xml:space="preserve">
|
||||
<value>你已经启动了胡桃 {0} 次</value>
|
||||
<value>You have launched Snap Hutao {0} times</value>
|
||||
</data>
|
||||
<data name="ViewPageHomeGreetingTextDefault" xml:space="preserve">
|
||||
<value>旅行者,欢迎来到提瓦特大陆!</value>
|
||||
<value>Welcome to Teyvat, Traveler!</value>
|
||||
</data>
|
||||
<data name="ViewPageHomeGreetingTextEasterEgg" xml:space="preserve">
|
||||
<value>你说的对,但是《胡桃》是由 DGP Studio 自主研发的一款...</value>
|
||||
<value>You're right, but Snap Hutao was developed by DGP Studio...</value>
|
||||
</data>
|
||||
<data name="ViewPageHomeGreetingTextEpic1" xml:space="preserve">
|
||||
<value>呐,旅行者,这是你来到提瓦特大陆的第 {0} 天哦</value>
|
||||
<value>Well, Traveler, this is your {0}th day in Teyvat.</value>
|
||||
</data>
|
||||
<data name="ViewPageHomeLaunchGameSettingAction" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
@@ -1572,7 +1791,7 @@
|
||||
<value>Rename</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchSchemeDescription" xml:space="preserve">
|
||||
<value>Switch game server (CN/BiliBili/OS)</value>
|
||||
<value>Switch game server (CN/BiliBili/Global)</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchSchemeHeader" xml:space="preserve">
|
||||
<value>Server</value>
|
||||
@@ -1685,6 +1904,18 @@
|
||||
<data name="ViewPageSettingGameHeader" xml:space="preserve">
|
||||
<value>Game</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlAction" xml:space="preserve">
|
||||
<value>Configuration</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlDescription" xml:space="preserve">
|
||||
<value>Config verification API endpoint used for anti-bot verification</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlHeader" xml:space="preserve">
|
||||
<value>Config Geetest Verification Endpoint</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestVerificationHeader" xml:space="preserve">
|
||||
<value>Geetest Verification</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingHutaoPassportHeader" xml:space="preserve">
|
||||
<value>Snap Hutao Account</value>
|
||||
</data>
|
||||
@@ -1884,7 +2115,10 @@
|
||||
<value>MiYouShe</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperation2" xml:space="preserve">
|
||||
<value>HoYoLab</value>
|
||||
<value>HoYoLAB</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperation3" xml:space="preserve">
|
||||
<value>Current user</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationLoginMihoyoUserAction" xml:space="preserve">
|
||||
<value>Web Login</value>
|
||||
@@ -1895,6 +2129,9 @@
|
||||
<data name="ViewUserCookieOperationRefreshCookieAction" xml:space="preserve">
|
||||
<value>Refresh Cookie</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationSignInRewardAction" xml:space="preserve">
|
||||
<value>Claim Check-In Reward</value>
|
||||
</data>
|
||||
<data name="ViewUserCopyCookieAction" xml:space="preserve">
|
||||
<value>Copy Cookie</value>
|
||||
</data>
|
||||
@@ -1937,6 +2174,21 @@
|
||||
<data name="ViewWikiWeaponHeader" xml:space="preserve">
|
||||
<value>Weapon WIKI</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchPermanentActivityTime" xml:space="preserve">
|
||||
<value>(?:〓活动时间〓|〓任务开放时间〓).*?\d\.\d版本更新(?:完成|)后永久开放</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchPersistentActivityTime" xml:space="preserve">
|
||||
<value>〓活动时间〓.*?\d\.\d版本期间持续开放</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchTransientActivityTime" xml:space="preserve">
|
||||
<value>(?:〓活动时间〓|祈愿时间|【上架时间】).*?(\d\.\d版本更新后|\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}).*?~.*?&lt;t class="t_(?:gl|lc)".*?&gt;(.*?)&lt;/t&gt;</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchVersionUpdateTime" xml:space="preserve">
|
||||
<value>〓更新时间〓.+?&lt;t class=\"t_(?:gl|lc)\".*?&gt;(.*?)&lt;/t&gt;</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchVersionUpdateTitle" xml:space="preserve">
|
||||
<value>\d\.\d版本更新说明</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementTimeDaysBeginFormat" xml:space="preserve">
|
||||
<value>Start in {0} days</value>
|
||||
</data>
|
||||
@@ -1965,7 +2217,10 @@
|
||||
<value>Daily Commission Reward claimed</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteHomeCoinRecoveryFormat" xml:space="preserve">
|
||||
<value>Expected to reach the limit in {0} {1:HH:mm}</value>
|
||||
<value>Will be full in {0} {1:HH:mm}</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteHomeLocked" xml:space="preserve">
|
||||
<value>Serenitea Pot not Unlocked</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteRecoveryTimeDay0" xml:space="preserve">
|
||||
<value>Today</value>
|
||||
@@ -1983,7 +2238,7 @@
|
||||
<value>Original Resin is full</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteResinRecoveryFormat" xml:space="preserve">
|
||||
<value>Fully replenished in {0} {1:HH:mm}</value>
|
||||
<value>Will be replenished in {0} {1:HH:mm}</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerAppend" xml:space="preserve">
|
||||
<value>Ready for use again after</value>
|
||||
@@ -1997,6 +2252,12 @@
|
||||
<data name="WebDailyNoteTransformerMinutesFormat" xml:space="preserve">
|
||||
<value>{0} mins</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotObtained" xml:space="preserve">
|
||||
<value>Not obtained</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotObtainedDetail" xml:space="preserve">
|
||||
<value>Transformer not obtained</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotReached" xml:space="preserve">
|
||||
<value>Cooling down</value>
|
||||
</data>
|
||||
@@ -2025,13 +2286,13 @@
|
||||
<value>Request too fast, please try again later</value>
|
||||
</data>
|
||||
<data name="WebEnkaResponseStatusCode500" xml:space="preserve">
|
||||
<value>服务器偶发错误</value>
|
||||
<value>Occasional Server Errors</value>
|
||||
</data>
|
||||
<data name="WebEnkaResponseStatusCode503" xml:space="preserve">
|
||||
<value>服务器严重错误</value>
|
||||
<value>Critical Server Error</value>
|
||||
</data>
|
||||
<data name="WebEnkaResponseStatusCodeUnknown" xml:space="preserve">
|
||||
<value>未知的服务器错误</value>
|
||||
<value>Unknown Server Error</value>
|
||||
</data>
|
||||
<data name="WebGachaConfigTypeAvatarEventWish" xml:space="preserve">
|
||||
<value>Character Event Wish</value>
|
||||
@@ -2051,4 +2312,10 @@
|
||||
<data name="WebResponseFormat" xml:space="preserve">
|
||||
<value>Return Code: {0} | Message: {1}</value>
|
||||
</data>
|
||||
<data name="WebResponseRefreshCookieHintFormat" xml:space="preserve">
|
||||
<value>Please refresh cookie, raw message: {0}</value>
|
||||
</data>
|
||||
<data name="WebResponseRequestExceptionFormat" xml:space="preserve">
|
||||
<value>[{1}] network request exception in [{0}] please try again later</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -60,45 +60,45 @@
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
||||
<xsd:attribute name="type" type="xsd:string"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="alias" type="xsd:string"/>
|
||||
<xsd:attribute name="name" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
@@ -153,6 +153,9 @@
|
||||
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
|
||||
<value>リスト</value>
|
||||
</data>
|
||||
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
|
||||
<value>データベースが破損しています:{0}</value>
|
||||
</data>
|
||||
<data name="CoreExceptionServiceUserdataCorruptedMessage" xml:space="preserve">
|
||||
<value>{0}:ユーザデータが破損しました</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="FilePickerImportCommit" xml:space="preserve">
|
||||
<value>インポート</value>
|
||||
</data>
|
||||
<data name="GuideWindowTitle" xml:space="preserve">
|
||||
<value>胡桃へようこそ</value>
|
||||
</data>
|
||||
<data name="LaunchGameTitle" xml:space="preserve">
|
||||
<value>アカウントを選択して開始します</value>
|
||||
</data>
|
||||
@@ -220,10 +226,10 @@
|
||||
<value>上场 {0} 次</value>
|
||||
</data>
|
||||
<data name="ModelBindingLaunchGameLaunchSchemeBilibili" xml:space="preserve">
|
||||
<value>BiliBiliサーバー</value>
|
||||
<value>世界樹サーバー</value>
|
||||
</data>
|
||||
<data name="ModelBindingLaunchGameLaunchSchemeChinese" xml:space="preserve">
|
||||
<value>天空島・世界樹サーバー</value>
|
||||
<value>天空島サーバー</value>
|
||||
</data>
|
||||
<data name="ModelBindingLaunchGameLaunchSchemeOversea" xml:space="preserve">
|
||||
<value>グローバルサーバー</value>
|
||||
@@ -231,9 +237,24 @@
|
||||
<data name="ModelBindingUserInitializationFailed" xml:space="preserve">
|
||||
<value>ネットワーク接続エラー</value>
|
||||
</data>
|
||||
<data name="ModelEntityDailyNoteNotRefreshed" xml:space="preserve">
|
||||
<value>尚未刷新</value>
|
||||
</data>
|
||||
<data name="ModelEntityDailyNoteRefreshTimeFormat" xml:space="preserve">
|
||||
<value>刷新于 {0:yyyy/MM/dd HH:mm:ss}</value>
|
||||
</data>
|
||||
<data name="ModelEntitySpiralAbyssScheduleFormat" xml:space="preserve">
|
||||
<value>第 {0} 期</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeAvatar" xml:space="preserve">
|
||||
<value>キャラクター</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeUnknown" xml:space="preserve">
|
||||
<value>未知</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeWeapon" xml:space="preserve">
|
||||
<value>武器</value>
|
||||
</data>
|
||||
<data name="ModelIntrinsicAssociationTypeFatui" xml:space="preserve">
|
||||
<value>ファデュイ</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
@@ -280,7 +301,7 @@
|
||||
<value>女性</value>
|
||||
</data>
|
||||
<data name="ModelIntrinsicBodyTypeLoli" xml:space="preserve">
|
||||
<value>萝莉</value>
|
||||
<value>ロリ</value>
|
||||
</data>
|
||||
<data name="ModelIntrinsicBodyTypeMale" xml:space="preserve">
|
||||
<value>男性</value>
|
||||
@@ -351,11 +372,14 @@
|
||||
<value>片手剣</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataAvatarPlayerName" xml:space="preserve">
|
||||
<value>旅行者</value>
|
||||
</data>
|
||||
<data name="ModelMetadataFetterInfoBirthdayFormat" xml:space="preserve">
|
||||
<value>{0} 月 {1} 日</value>
|
||||
</data>
|
||||
<data name="ModelMetadataMaterialCharacterAndWeaponEnhancementMaterial" xml:space="preserve">
|
||||
<value>角色与武器培养素材</value>
|
||||
<value>キャラクターと武器の育成素材</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataMaterialCharacterAscensionMaterial" xml:space="preserve">
|
||||
@@ -375,7 +399,7 @@
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataMaterialLocalSpecialtyRegex" xml:space="preserve">
|
||||
<value>^[\u4e00-\u9fa5]{2}区域特产$</value>
|
||||
<value>\u4e00\u9fa5{2}地域特産品</value>
|
||||
<comment>If you don't know what is regex, DO NOT TRANSLATE THIS!</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataMaterialWeaponAscensionMaterial" xml:space="preserve">
|
||||
@@ -506,6 +530,24 @@
|
||||
<value>風元素耐性</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryCalculatorNotRefreshed" xml:space="preserve">
|
||||
<value>养成计算:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryCalculatorRefreshTimeFormat" xml:space="preserve">
|
||||
<value>养成计算:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryGameRecordNotRefreshed" xml:space="preserve">
|
||||
<value>我的角色:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryGameRecordRefreshTimeFormat" xml:space="preserve">
|
||||
<value>我的角色:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryShowcaseNotRefreshed" xml:space="preserve">
|
||||
<value>角色橱窗:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryShowcaseRefreshTimeFormat" xml:space="preserve">
|
||||
<value>角色橱窗:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceCultivationProjectCurrentUserdataCourrpted" xml:space="preserve">
|
||||
<value>保存养成计划状态失败</value>
|
||||
</data>
|
||||
@@ -584,6 +626,9 @@
|
||||
<data name="ServiceGachaLogHutaoCloudServiceNotAllowed" xml:space="preserve">
|
||||
<value>祈愿记录上传服务不可用</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUIGFImportItemInvalidFormat" xml:space="preserve">
|
||||
<value>数据包含异常物品, Id:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUrlProviderAuthkeyRequestFailed" xml:space="preserve">
|
||||
<value>请求验证密钥失败</value>
|
||||
</data>
|
||||
@@ -602,9 +647,15 @@
|
||||
<data name="ServiceGachaLogUrlProviderStokenUnsupported" xml:space="preserve">
|
||||
<value>HoYoLabユーザーのSToken 更新はサポートしていません。</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUrlProviderUrlLanguageNotMatchCurrentLocale" xml:space="preserve">
|
||||
<value>Url 中的语言:{0} 与胡桃的语言:{1} 不匹配,请切换到对应语言重试</value>
|
||||
</data>
|
||||
<data name="ServiceGachaStatisticsFactoryItemIdInvalid" xml:space="preserve">
|
||||
<value>Item Id:{0} はサポートしていません</value>
|
||||
</data>
|
||||
<data name="ServiceGachaUIGFImportLanguageNotMatch" xml:space="preserve">
|
||||
<value>UIGF 文件的语言:{0} 与胡桃的语言:{1} 不匹配,请切换到对应语言重试</value>
|
||||
</data>
|
||||
<data name="ServiceGameDetectGameAccountMultiMatched" xml:space="preserve">
|
||||
<value>存在多个匹配账号,请删除重复的账号</value>
|
||||
</data>
|
||||
@@ -614,6 +665,27 @@
|
||||
<data name="ServiceGameFileOperationExceptionMessage" xml:space="preserve">
|
||||
<value>游戏文件操作失败:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessExited" xml:space="preserve">
|
||||
<value>游戏进程已退出</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessInitializing" xml:space="preserve">
|
||||
<value>正在初始化游戏进程</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessStarted" xml:space="preserve">
|
||||
<value>游戏进程已启动</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsFailed" xml:space="preserve">
|
||||
<value>解锁帧率上限失败,正在结束游戏进程</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsSucceed" xml:space="preserve">
|
||||
<value>解锁帧率上限成功</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockingFps" xml:space="preserve">
|
||||
<value>正在尝试解锁帧率上限</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
|
||||
<value>等待游戏进程退出</value>
|
||||
</data>
|
||||
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
|
||||
<value>ゲーム本体を選択する</value>
|
||||
</data>
|
||||
@@ -623,6 +695,15 @@
|
||||
<data name="ServiceGameLocatorUnityLogGamePathNotFound" xml:space="preserve">
|
||||
<value>Unity ログファイル内にはゲームパスが見つかりません</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileBackupFormat" xml:space="preserve">
|
||||
<value>备份:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileRenameFormat" xml:space="preserve">
|
||||
<value>重命名:{0} 到:{1}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileRestoreFormat" xml:space="preserve">
|
||||
<value>替换:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageRenameDataFolderFailed" xml:space="preserve">
|
||||
<value>データフォルダの名前を変更できませんでした</value>
|
||||
</data>
|
||||
@@ -632,6 +713,9 @@
|
||||
<data name="ServiceGamePackageRequestPackageVerionFailed" xml:space="preserve">
|
||||
<value>Package Versionを取得できません</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageRequestScatteredFileFailed" xml:space="preserve">
|
||||
<value>下载客户端文件失败:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePathLocateFailed" xml:space="preserve">
|
||||
<value>无法找到游戏路径,请前往设置修改</value>
|
||||
</data>
|
||||
@@ -680,6 +764,15 @@
|
||||
<data name="ServiceMetadataVersionNotSupported" xml:space="preserve">
|
||||
<value>胡桃のバージョンが古すぎるため、アップデートを推奨します。</value>
|
||||
</data>
|
||||
<data name="ServiceSignInClaimRewardFailedFormat" xml:space="preserve">
|
||||
<value>签到失败,{0}</value>
|
||||
</data>
|
||||
<data name="ServiceSignInRewardListRequestFailed" xml:space="preserve">
|
||||
<value>获取奖励列表失败</value>
|
||||
</data>
|
||||
<data name="ServiceSignInSuccessRewardFormat" xml:space="preserve">
|
||||
<value>签到成功,{0}×{1}</value>
|
||||
</data>
|
||||
<data name="ServiceUserCurrentMultiMatched" xml:space="preserve">
|
||||
<value>多个用户记录为选中状态</value>
|
||||
</data>
|
||||
@@ -746,12 +839,27 @@
|
||||
<data name="ViewControlStatisticsCardPurpleText" xml:space="preserve">
|
||||
<value>星4</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardToLastOrangeText" xml:space="preserve">
|
||||
<value>距上个五星</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardToLastPurpleText" xml:space="preserve">
|
||||
<value>距上个四星</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardUpAveragePullText" xml:space="preserve">
|
||||
<value>ピックアップ獲得平均数</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardUpText" xml:space="preserve">
|
||||
<value>ピックアップ</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentPrediction" xml:space="preserve">
|
||||
<value>预测</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentProportion" xml:space="preserve">
|
||||
<value>比例</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
|
||||
<value>统计</value>
|
||||
</data>
|
||||
<data name="ViewCultivationHeader" xml:space="preserve">
|
||||
<value>育成計画</value>
|
||||
</data>
|
||||
@@ -771,13 +879,13 @@
|
||||
<value>インポートモード</value>
|
||||
</data>
|
||||
<data name="ViewDialogAchievementArchiveImportStrategyAggressive" xml:space="preserve">
|
||||
<value>贪婪(添加新数据,更新已完成项)</value>
|
||||
<value>貪欲(新規項目の追加、達成項目をチェック)</value>
|
||||
</data>
|
||||
<data name="ViewDialogAchievementArchiveImportStrategyLazy" xml:space="preserve">
|
||||
<value>懒惰(添加新数据,跳过已完成项)</value>
|
||||
<value>怠惰(新規項目の追加、達成項目をスキップ)</value>
|
||||
</data>
|
||||
<data name="ViewDialogAchievementArchiveImportStrategyOverwrite" xml:space="preserve">
|
||||
<value>覆盖(删除老数据,添加新的数据)</value>
|
||||
<value>置換(現在項目の削除、全項目をインポート)</value>
|
||||
</data>
|
||||
<data name="ViewDialogAchievementArchiveImportTitle" xml:space="preserve">
|
||||
<value>アーカイブにアチーブメントをインポート</value>
|
||||
@@ -800,6 +908,9 @@
|
||||
<data name="ViewDialogDailyNoteNotificationExpeditionNotify" xml:space="preserve">
|
||||
<value>探検派遣完了のお知らせ</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationHomeCoinNotifyThreshold" xml:space="preserve">
|
||||
<value>洞天宝钱提醒阈值</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationResinNotifyThreshold" xml:space="preserve">
|
||||
<value>洞天宝銭まもなく満タン</value>
|
||||
</data>
|
||||
@@ -830,6 +941,33 @@
|
||||
<data name="ViewDialogGachaLogUrlTitle" xml:space="preserve">
|
||||
<value>祈願履歴のURLを直接入力</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlCompositInputHint" xml:space="preserve">
|
||||
<value>请输入请求接口的 Url 复合模板</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription1" xml:space="preserve">
|
||||
<value>接口需要返回形如上方所示的 Json 数据,多余的数据会被忽略</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription2" xml:space="preserve">
|
||||
<value>"code" 为 0 时,指示验证成功,其他的值均视为验证失败</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataHeader" xml:space="preserve">
|
||||
<value>返回数据</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription1" xml:space="preserve">
|
||||
<value>{0} 将在实际请求时替换为 gt</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription2" xml:space="preserve">
|
||||
<value>{1} 将在实际请求时替换为 challenge</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription3" xml:space="preserve">
|
||||
<value>将会通过 GET 方式对接口发送请求</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleHeader" xml:space="preserve">
|
||||
<value>示例</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlTitle" xml:space="preserve">
|
||||
<value>配置无感验证接口</value>
|
||||
</data>
|
||||
<data name="ViewDialogImportExportApp" xml:space="preserve">
|
||||
<value>导出 App</value>
|
||||
</data>
|
||||
@@ -890,6 +1028,48 @@
|
||||
<data name="ViewGachaLogHeader" xml:space="preserve">
|
||||
<value>祈願履歴</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIHaveReadText" xml:space="preserve">
|
||||
<value>我已阅读并同意</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIssueReport" xml:space="preserve">
|
||||
<value>问题报告方式与流程</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementOpenSourceLicense" xml:space="preserve">
|
||||
<value>Snap Hutao 开源许可</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementPrivacyPolicy" xml:space="preserve">
|
||||
<value>用户数据与隐私权益</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementTermOfService" xml:space="preserve">
|
||||
<value>用户使用协议与法律声明</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepDocument" xml:space="preserve">
|
||||
<value>文档</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironment" xml:space="preserve">
|
||||
<value>环境</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentAfterInstallDescription" xml:space="preserve">
|
||||
<value>安装完成后重启胡桃以查看是否正常生效</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription1" xml:space="preserve">
|
||||
<value>如果上方的图标中存在乱码,请前往</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription2" xml:space="preserve">
|
||||
<value>下载并自行安装图标字体</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description1" xml:space="preserve">
|
||||
<value>若未检测到 WebView2 运行时信息,可以前往</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description2" xml:space="preserve">
|
||||
<value>下载并自行安装运行时</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepLanguage" xml:space="preserve">
|
||||
<value>言語設定</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepStaticResource" xml:space="preserve">
|
||||
<value>资源</value>
|
||||
</data>
|
||||
<data name="ViewHutaoDatabaseHeader" xml:space="preserve">
|
||||
<value>深境螺旋集計</value>
|
||||
</data>
|
||||
@@ -983,6 +1163,9 @@
|
||||
<data name="ViewModelDailyNoteRegisterTaskFail" xml:space="preserve">
|
||||
<value>注册计划任务失败,请使用管理员模式重试</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRequestProgressTitle" xml:space="preserve">
|
||||
<value>正在获取实时便笺信息,请稍候</value>
|
||||
</data>
|
||||
<data name="ViewModelExportSuccessMessage" xml:space="preserve">
|
||||
<value>成功保存到指定位置</value>
|
||||
</data>
|
||||
@@ -1014,10 +1197,10 @@
|
||||
<value>インポート失敗</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogPredictedPullLeftToOrange" xml:space="preserve">
|
||||
<value>{1:00.000%} 概率 {0} 抽后获得五星物品</value>
|
||||
<value>{1:P3} 概率 {0} 抽后获得五星物品</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogProbabilityOfNextPullIsOrange" xml:space="preserve">
|
||||
<value>{0:00.000%} 概率下一抽获得五星物品</value>
|
||||
<value>{0:P3} 概率下一抽获得五星物品</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRefreshFail" xml:space="preserve">
|
||||
<value>祈願履歴を取得できません</value>
|
||||
@@ -1037,6 +1220,21 @@
|
||||
<data name="ViewModelGachaLogUploadToHutaoCloudProgress" xml:space="preserve">
|
||||
<value>胡桃クラウドにアップロード中</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionAgreement" xml:space="preserve">
|
||||
<value>我已阅读并同意上方的条款</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionComplete" xml:space="preserve">
|
||||
<value>完成</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionNext" xml:space="preserve">
|
||||
<value>下一步</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionStaticResourceBegin" xml:space="preserve">
|
||||
<value>下载资源文件中,请稍候</value>
|
||||
</data>
|
||||
<data name="ViewModelHutaoPassportEmailNotValidHint" xml:space="preserve">
|
||||
<value>请输入正确的邮箱</value>
|
||||
</data>
|
||||
<data name="ViewModelImportFromClipboardErrorTitle" xml:space="preserve">
|
||||
<value>クリップボードのテキスト形式が正しくありません</value>
|
||||
</data>
|
||||
@@ -1187,6 +1385,9 @@
|
||||
<data name="ViewPageAvatarPropertyRefreshFromHoyolabGameRecordDescription" xml:space="preserve">
|
||||
<value>同步角色天赋外的大部分信息</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyRefreshTimeToggle" xml:space="preserve">
|
||||
<value>刷新时间</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyScore" xml:space="preserve">
|
||||
<value>評価する</value>
|
||||
</data>
|
||||
@@ -1271,6 +1472,18 @@
|
||||
<data name="ViewPageDailyNoteResinDiscountUsed" xml:space="preserve">
|
||||
<value>本周已消耗减半次数</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingAutoRefresh" xml:space="preserve">
|
||||
<value>自动刷新</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingAutoRefreshDescription" xml:space="preserve">
|
||||
<value>间隔选定的时间后刷新添加的实时便笺</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingRefreshElevatedHint" xml:space="preserve">
|
||||
<value>这些选项仅允许在非管理员模式下更改</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingRefreshHeader" xml:space="preserve">
|
||||
<value>刷新</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSlientModeDescription" xml:space="preserve">
|
||||
<value>プレイ中に通知をオフ</value>
|
||||
</data>
|
||||
@@ -1311,7 +1524,7 @@
|
||||
<value>下载此 Uid 的云端存档</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityDescription" xml:space="preserve">
|
||||
<value>每期深渊首次上传可免费获得5天时长</value>
|
||||
<value>每期深渊首次上传可免费获得 3 天时长</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityHeader" xml:space="preserve">
|
||||
<value>螺旋の記録をアップロード</value>
|
||||
@@ -1337,6 +1550,12 @@
|
||||
<data name="ViewPageGachaLogRefreshAction" xml:space="preserve">
|
||||
<value>フェッチ</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByManualInput" xml:space="preserve">
|
||||
<value>手动输入 Url</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByManualInputDescription" xml:space="preserve">
|
||||
<value>使用由你提供的 Url 刷新祈愿记录</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshBySToken" xml:space="preserve">
|
||||
<value>SToken 更新</value>
|
||||
</data>
|
||||
@@ -1685,6 +1904,18 @@
|
||||
<data name="ViewPageSettingGameHeader" xml:space="preserve">
|
||||
<value>ゲーム</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlAction" xml:space="preserve">
|
||||
<value>配置</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlDescription" xml:space="preserve">
|
||||
<value>配置当请求触发人机验证时使用的验证接口</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlHeader" xml:space="preserve">
|
||||
<value>配置验证请求接口</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestVerificationHeader" xml:space="preserve">
|
||||
<value>无感验证</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingHutaoPassportHeader" xml:space="preserve">
|
||||
<value>胡桃アカウント</value>
|
||||
</data>
|
||||
@@ -1851,7 +2082,7 @@
|
||||
<value>深境螺旋</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssMaxFloor" xml:space="preserve">
|
||||
<value>最深抵达</value>
|
||||
<value>最深到達</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssNormalSkill" xml:space="preserve">
|
||||
<value>元素スキル</value>
|
||||
@@ -1884,7 +2115,10 @@
|
||||
<value>MiYouShe</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperation2" xml:space="preserve">
|
||||
<value>HoYoLab</value>
|
||||
<value>HoYoLAB</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperation3" xml:space="preserve">
|
||||
<value>当前用户</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationLoginMihoyoUserAction" xml:space="preserve">
|
||||
<value>ウェブ上でログイン</value>
|
||||
@@ -1895,6 +2129,9 @@
|
||||
<data name="ViewUserCookieOperationRefreshCookieAction" xml:space="preserve">
|
||||
<value>Cookie 再取得</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationSignInRewardAction" xml:space="preserve">
|
||||
<value>领取签到奖励</value>
|
||||
</data>
|
||||
<data name="ViewUserCopyCookieAction" xml:space="preserve">
|
||||
<value>复制 Cookie</value>
|
||||
</data>
|
||||
@@ -1937,6 +2174,21 @@
|
||||
<data name="ViewWikiWeaponHeader" xml:space="preserve">
|
||||
<value>武器一覧</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchPermanentActivityTime" xml:space="preserve">
|
||||
<value>(?:〓活动时间〓|〓任务开放时间〓).*?\d\.\d版本更新(?:完成|)后永久开放</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchPersistentActivityTime" xml:space="preserve">
|
||||
<value>〓活动时间〓.*?\d\.\d版本期间持续开放</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchTransientActivityTime" xml:space="preserve">
|
||||
<value>(?:〓活动时间〓|祈愿时间|【上架时间】).*?(\d\.\d版本更新后|\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}).*?~.*?&lt;t class="t_(?:gl|lc)".*?&gt;(.*?)&lt;/t&gt;</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchVersionUpdateTime" xml:space="preserve">
|
||||
<value>〓更新时间〓.+?&lt;t class=\"t_(?:gl|lc)\".*?&gt;(.*?)&lt;/t&gt;</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchVersionUpdateTitle" xml:space="preserve">
|
||||
<value>\d\.\d版本更新说明</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementTimeDaysBeginFormat" xml:space="preserve">
|
||||
<value>{0} 日後に開始</value>
|
||||
</data>
|
||||
@@ -1967,6 +2219,9 @@
|
||||
<data name="WebDailyNoteHomeCoinRecoveryFormat" xml:space="preserve">
|
||||
<value>あと{0}{1:HH:mm}に上限に達する</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteHomeLocked" xml:space="preserve">
|
||||
<value>尚未解锁洞天</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteRecoveryTimeDay0" xml:space="preserve">
|
||||
<value>今日</value>
|
||||
</data>
|
||||
@@ -1980,7 +2235,7 @@
|
||||
<value>{0} 日</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteResinRecoveryCompleted" xml:space="preserve">
|
||||
<value>原粹树脂已完全恢复</value>
|
||||
<value>天然樹脂は完全に回復した</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteResinRecoveryFormat" xml:space="preserve">
|
||||
<value>{0} {1:HH:mm} 後ですべて回復</value>
|
||||
@@ -1997,6 +2252,12 @@
|
||||
<data name="WebDailyNoteTransformerMinutesFormat" xml:space="preserve">
|
||||
<value>{0} 分</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotObtained" xml:space="preserve">
|
||||
<value>尚未获得</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotObtainedDetail" xml:space="preserve">
|
||||
<value>尚未获得参量质变仪</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotReached" xml:space="preserve">
|
||||
<value>クールタイム中</value>
|
||||
</data>
|
||||
@@ -2051,4 +2312,10 @@
|
||||
<data name="WebResponseFormat" xml:space="preserve">
|
||||
<value>状态:{0} | 信息:{1}</value>
|
||||
</data>
|
||||
<data name="WebResponseRefreshCookieHintFormat" xml:space="preserve">
|
||||
<value>请刷新 Cookie,原始消息:{0}</value>
|
||||
</data>
|
||||
<data name="WebResponseRequestExceptionFormat" xml:space="preserve">
|
||||
<value>[{0}] 中的 [{1}] 网络请求异常,请稍后再试</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -60,45 +60,45 @@
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
||||
<xsd:attribute name="type" type="xsd:string"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="alias" type="xsd:string"/>
|
||||
<xsd:attribute name="name" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
@@ -153,6 +153,9 @@
|
||||
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
|
||||
<value>목록</value>
|
||||
</data>
|
||||
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
|
||||
<value>数据库已损坏:{0}</value>
|
||||
</data>
|
||||
<data name="CoreExceptionServiceUserdataCorruptedMessage" xml:space="preserve">
|
||||
<value>손상된 사용자 데이터: {0}</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="FilePickerImportCommit" xml:space="preserve">
|
||||
<value>가져오기</value>
|
||||
</data>
|
||||
<data name="GuideWindowTitle" xml:space="preserve">
|
||||
<value>欢迎使用胡桃</value>
|
||||
</data>
|
||||
<data name="LaunchGameTitle" xml:space="preserve">
|
||||
<value>계정 선택 및 시작</value>
|
||||
</data>
|
||||
@@ -231,9 +237,24 @@
|
||||
<data name="ModelBindingUserInitializationFailed" xml:space="preserve">
|
||||
<value>네트워크 오류</value>
|
||||
</data>
|
||||
<data name="ModelEntityDailyNoteNotRefreshed" xml:space="preserve">
|
||||
<value>尚未刷新</value>
|
||||
</data>
|
||||
<data name="ModelEntityDailyNoteRefreshTimeFormat" xml:space="preserve">
|
||||
<value>刷新于 {0:yyyy/MM/dd HH:mm:ss}</value>
|
||||
</data>
|
||||
<data name="ModelEntitySpiralAbyssScheduleFormat" xml:space="preserve">
|
||||
<value>제 {0} 호</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeAvatar" xml:space="preserve">
|
||||
<value>角色</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeUnknown" xml:space="preserve">
|
||||
<value>未知</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeWeapon" xml:space="preserve">
|
||||
<value>武器</value>
|
||||
</data>
|
||||
<data name="ModelIntrinsicAssociationTypeFatui" xml:space="preserve">
|
||||
<value>우인단</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
@@ -351,6 +372,9 @@
|
||||
<value>한손검</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataAvatarPlayerName" xml:space="preserve">
|
||||
<value>旅行者</value>
|
||||
</data>
|
||||
<data name="ModelMetadataFetterInfoBirthdayFormat" xml:space="preserve">
|
||||
<value>{0}월 {1}일</value>
|
||||
</data>
|
||||
@@ -506,6 +530,24 @@
|
||||
<value>바람 원소 저항</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryCalculatorNotRefreshed" xml:space="preserve">
|
||||
<value>养成计算:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryCalculatorRefreshTimeFormat" xml:space="preserve">
|
||||
<value>养成计算:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryGameRecordNotRefreshed" xml:space="preserve">
|
||||
<value>我的角色:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryGameRecordRefreshTimeFormat" xml:space="preserve">
|
||||
<value>我的角色:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryShowcaseNotRefreshed" xml:space="preserve">
|
||||
<value>角色橱窗:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryShowcaseRefreshTimeFormat" xml:space="preserve">
|
||||
<value>角色橱窗:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceCultivationProjectCurrentUserdataCourrpted" xml:space="preserve">
|
||||
<value>육성 계획 상태를 저장하지 못했습니다</value>
|
||||
</data>
|
||||
@@ -584,6 +626,9 @@
|
||||
<data name="ServiceGachaLogHutaoCloudServiceNotAllowed" xml:space="preserve">
|
||||
<value>기원 기록 업로드 불가능</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUIGFImportItemInvalidFormat" xml:space="preserve">
|
||||
<value>数据包含异常物品, Id:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUrlProviderAuthkeyRequestFailed" xml:space="preserve">
|
||||
<value>인증키 요청 실패</value>
|
||||
</data>
|
||||
@@ -602,9 +647,15 @@
|
||||
<data name="ServiceGachaLogUrlProviderStokenUnsupported" xml:space="preserve">
|
||||
<value>HoYoLab 계정은 SToken을 이용한 기원 기록 동기화를 지원하지 않습니다.</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUrlProviderUrlLanguageNotMatchCurrentLocale" xml:space="preserve">
|
||||
<value>Url 中的语言:{0} 与胡桃的语言:{1} 不匹配,请切换到对应语言重试</value>
|
||||
</data>
|
||||
<data name="ServiceGachaStatisticsFactoryItemIdInvalid" xml:space="preserve">
|
||||
<value>지원되지 않는 Item Id:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGachaUIGFImportLanguageNotMatch" xml:space="preserve">
|
||||
<value>UIGF 文件的语言:{0} 与胡桃的语言:{1} 不匹配,请切换到对应语言重试</value>
|
||||
</data>
|
||||
<data name="ServiceGameDetectGameAccountMultiMatched" xml:space="preserve">
|
||||
<value>동일한 계정이 다수 있습니다. 중복된 계정을 삭제하세요</value>
|
||||
</data>
|
||||
@@ -614,6 +665,27 @@
|
||||
<data name="ServiceGameFileOperationExceptionMessage" xml:space="preserve">
|
||||
<value>게임 파일 작업 실패:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessExited" xml:space="preserve">
|
||||
<value>游戏进程已退出</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessInitializing" xml:space="preserve">
|
||||
<value>正在初始化游戏进程</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessStarted" xml:space="preserve">
|
||||
<value>游戏进程已启动</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsFailed" xml:space="preserve">
|
||||
<value>解锁帧率上限失败,正在结束游戏进程</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsSucceed" xml:space="preserve">
|
||||
<value>解锁帧率上限成功</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockingFps" xml:space="preserve">
|
||||
<value>正在尝试解锁帧率上限</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
|
||||
<value>等待游戏进程退出</value>
|
||||
</data>
|
||||
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
|
||||
<value>게임 파일 선택</value>
|
||||
</data>
|
||||
@@ -623,6 +695,15 @@
|
||||
<data name="ServiceGameLocatorUnityLogGamePathNotFound" xml:space="preserve">
|
||||
<value>Unity 로그 파일에서 게임 경로를 찾을 수 없습니다</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileBackupFormat" xml:space="preserve">
|
||||
<value>备份:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileRenameFormat" xml:space="preserve">
|
||||
<value>重命名:{0} 到:{1}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileRestoreFormat" xml:space="preserve">
|
||||
<value>替换:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageRenameDataFolderFailed" xml:space="preserve">
|
||||
<value>데이터 폴더 이름을 변경하지 못했습니다</value>
|
||||
</data>
|
||||
@@ -632,6 +713,9 @@
|
||||
<data name="ServiceGamePackageRequestPackageVerionFailed" xml:space="preserve">
|
||||
<value>Package Version을 가져오지 못했습니다</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageRequestScatteredFileFailed" xml:space="preserve">
|
||||
<value>下载客户端文件失败:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePathLocateFailed" xml:space="preserve">
|
||||
<value>게임 경로를 찾을 수 없습니다. 설정에서 수정하세요</value>
|
||||
</data>
|
||||
@@ -680,6 +764,15 @@
|
||||
<data name="ServiceMetadataVersionNotSupported" xml:space="preserve">
|
||||
<value>호두 버전이 낮습니다. 업데이트 해주세요</value>
|
||||
</data>
|
||||
<data name="ServiceSignInClaimRewardFailedFormat" xml:space="preserve">
|
||||
<value>签到失败,{0}</value>
|
||||
</data>
|
||||
<data name="ServiceSignInRewardListRequestFailed" xml:space="preserve">
|
||||
<value>获取奖励列表失败</value>
|
||||
</data>
|
||||
<data name="ServiceSignInSuccessRewardFormat" xml:space="preserve">
|
||||
<value>签到成功,{0}×{1}</value>
|
||||
</data>
|
||||
<data name="ServiceUserCurrentMultiMatched" xml:space="preserve">
|
||||
<value>여러 사용자가 선택되었습니다</value>
|
||||
</data>
|
||||
@@ -746,12 +839,27 @@
|
||||
<data name="ViewControlStatisticsCardPurpleText" xml:space="preserve">
|
||||
<value>4성</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardToLastOrangeText" xml:space="preserve">
|
||||
<value>距上个五星</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardToLastPurpleText" xml:space="preserve">
|
||||
<value>距上个四星</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardUpAveragePullText" xml:space="preserve">
|
||||
<value>UP 평균 획득</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardUpText" xml:space="preserve">
|
||||
<value>UP</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentPrediction" xml:space="preserve">
|
||||
<value>预测</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentProportion" xml:space="preserve">
|
||||
<value>比例</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
|
||||
<value>统计</value>
|
||||
</data>
|
||||
<data name="ViewCultivationHeader" xml:space="preserve">
|
||||
<value>육성 계획</value>
|
||||
</data>
|
||||
@@ -800,6 +908,9 @@
|
||||
<data name="ViewDialogDailyNoteNotificationExpeditionNotify" xml:space="preserve">
|
||||
<value>탐색 파견 완료 알림</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationHomeCoinNotifyThreshold" xml:space="preserve">
|
||||
<value>洞天宝钱提醒阈值</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationResinNotifyThreshold" xml:space="preserve">
|
||||
<value>선계 화폐 한도 알림</value>
|
||||
</data>
|
||||
@@ -830,6 +941,33 @@
|
||||
<data name="ViewDialogGachaLogUrlTitle" xml:space="preserve">
|
||||
<value>수동 기원 기록 입력 Url</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlCompositInputHint" xml:space="preserve">
|
||||
<value>请输入请求接口的 Url 复合模板</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription1" xml:space="preserve">
|
||||
<value>接口需要返回形如上方所示的 Json 数据,多余的数据会被忽略</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription2" xml:space="preserve">
|
||||
<value>"code" 为 0 时,指示验证成功,其他的值均视为验证失败</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataHeader" xml:space="preserve">
|
||||
<value>返回数据</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription1" xml:space="preserve">
|
||||
<value>{0} 将在实际请求时替换为 gt</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription2" xml:space="preserve">
|
||||
<value>{1} 将在实际请求时替换为 challenge</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription3" xml:space="preserve">
|
||||
<value>将会通过 GET 方式对接口发送请求</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleHeader" xml:space="preserve">
|
||||
<value>示例</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlTitle" xml:space="preserve">
|
||||
<value>配置无感验证接口</value>
|
||||
</data>
|
||||
<data name="ViewDialogImportExportApp" xml:space="preserve">
|
||||
<value>앱 내보내기</value>
|
||||
</data>
|
||||
@@ -890,6 +1028,48 @@
|
||||
<data name="ViewGachaLogHeader" xml:space="preserve">
|
||||
<value>기원 기록</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIHaveReadText" xml:space="preserve">
|
||||
<value>我已阅读并同意</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIssueReport" xml:space="preserve">
|
||||
<value>问题报告方式与流程</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementOpenSourceLicense" xml:space="preserve">
|
||||
<value>Snap Hutao 开源许可</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementPrivacyPolicy" xml:space="preserve">
|
||||
<value>用户数据与隐私权益</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementTermOfService" xml:space="preserve">
|
||||
<value>用户使用协议与法律声明</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepDocument" xml:space="preserve">
|
||||
<value>文档</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironment" xml:space="preserve">
|
||||
<value>环境</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentAfterInstallDescription" xml:space="preserve">
|
||||
<value>安装完成后重启胡桃以查看是否正常生效</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription1" xml:space="preserve">
|
||||
<value>如果上方的图标中存在乱码,请前往</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription2" xml:space="preserve">
|
||||
<value>下载并自行安装图标字体</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description1" xml:space="preserve">
|
||||
<value>若未检测到 WebView2 运行时信息,可以前往</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description2" xml:space="preserve">
|
||||
<value>下载并自行安装运行时</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepLanguage" xml:space="preserve">
|
||||
<value>语言</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepStaticResource" xml:space="preserve">
|
||||
<value>资源</value>
|
||||
</data>
|
||||
<data name="ViewHutaoDatabaseHeader" xml:space="preserve">
|
||||
<value>나선 비경 통계</value>
|
||||
</data>
|
||||
@@ -983,6 +1163,9 @@
|
||||
<data name="ViewModelDailyNoteRegisterTaskFail" xml:space="preserve">
|
||||
<value>작업 등록에 실패했습니다. 관리자 모드로 실행하세요</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRequestProgressTitle" xml:space="preserve">
|
||||
<value>正在获取实时便笺信息,请稍候</value>
|
||||
</data>
|
||||
<data name="ViewModelExportSuccessMessage" xml:space="preserve">
|
||||
<value>성공적으로 저장되었습니다</value>
|
||||
</data>
|
||||
@@ -1014,10 +1197,10 @@
|
||||
<value>가져오기 실패</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogPredictedPullLeftToOrange" xml:space="preserve">
|
||||
<value>{1:00.000%} 概率 {0} 抽后获得五星物品</value>
|
||||
<value>{1:P3} 概率 {0} 抽后获得五星物品</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogProbabilityOfNextPullIsOrange" xml:space="preserve">
|
||||
<value>{0:00.000%} 概率下一抽获得五星物品</value>
|
||||
<value>{0:P3} 概率下一抽获得五星物品</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRefreshFail" xml:space="preserve">
|
||||
<value>기원 기록 동기화를 실패했습니다</value>
|
||||
@@ -1037,6 +1220,21 @@
|
||||
<data name="ViewModelGachaLogUploadToHutaoCloudProgress" xml:space="preserve">
|
||||
<value>클라우드에 업로드</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionAgreement" xml:space="preserve">
|
||||
<value>我已阅读并同意上方的条款</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionComplete" xml:space="preserve">
|
||||
<value>完成</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionNext" xml:space="preserve">
|
||||
<value>下一步</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionStaticResourceBegin" xml:space="preserve">
|
||||
<value>下载资源文件中,请稍候</value>
|
||||
</data>
|
||||
<data name="ViewModelHutaoPassportEmailNotValidHint" xml:space="preserve">
|
||||
<value>请输入正确的邮箱</value>
|
||||
</data>
|
||||
<data name="ViewModelImportFromClipboardErrorTitle" xml:space="preserve">
|
||||
<value>클립보드의 텍스트 형식이 올바르지 않습니다</value>
|
||||
</data>
|
||||
@@ -1187,6 +1385,9 @@
|
||||
<data name="ViewPageAvatarPropertyRefreshFromHoyolabGameRecordDescription" xml:space="preserve">
|
||||
<value>캐릭터 특성을 제외한 대부분의 정보 동기화</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyRefreshTimeToggle" xml:space="preserve">
|
||||
<value>刷新时间</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyScore" xml:space="preserve">
|
||||
<value>점수</value>
|
||||
</data>
|
||||
@@ -1271,6 +1472,18 @@
|
||||
<data name="ViewPageDailyNoteResinDiscountUsed" xml:space="preserve">
|
||||
<value>이번 주는 이미 50% 차감 횟수를 소모했습니다</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingAutoRefresh" xml:space="preserve">
|
||||
<value>自动刷新</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingAutoRefreshDescription" xml:space="preserve">
|
||||
<value>间隔选定的时间后刷新添加的实时便笺</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingRefreshElevatedHint" xml:space="preserve">
|
||||
<value>这些选项仅允许在非管理员模式下更改</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingRefreshHeader" xml:space="preserve">
|
||||
<value>刷新</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSlientModeDescription" xml:space="preserve">
|
||||
<value>원신을 플레이 할 때 알리지 않음</value>
|
||||
</data>
|
||||
@@ -1311,7 +1524,7 @@
|
||||
<value>이 UID 클라우드 아카이브 다운로드</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityDescription" xml:space="preserve">
|
||||
<value>每期深渊首次上传可免费获得5天时长</value>
|
||||
<value>每期深渊首次上传可免费获得 3 天时长</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityHeader" xml:space="preserve">
|
||||
<value>上传深渊记录</value>
|
||||
@@ -1337,6 +1550,12 @@
|
||||
<data name="ViewPageGachaLogRefreshAction" xml:space="preserve">
|
||||
<value>가져오기</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByManualInput" xml:space="preserve">
|
||||
<value>手动输入 Url</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByManualInputDescription" xml:space="preserve">
|
||||
<value>使用由你提供的 Url 刷新祈愿记录</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshBySToken" xml:space="preserve">
|
||||
<value>SToken 동기화</value>
|
||||
</data>
|
||||
@@ -1685,6 +1904,18 @@
|
||||
<data name="ViewPageSettingGameHeader" xml:space="preserve">
|
||||
<value>게임</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlAction" xml:space="preserve">
|
||||
<value>配置</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlDescription" xml:space="preserve">
|
||||
<value>配置当请求触发人机验证时使用的验证接口</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlHeader" xml:space="preserve">
|
||||
<value>配置验证请求接口</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestVerificationHeader" xml:space="preserve">
|
||||
<value>无感验证</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingHutaoPassportHeader" xml:space="preserve">
|
||||
<value>호두 계정</value>
|
||||
</data>
|
||||
@@ -1884,7 +2115,10 @@
|
||||
<value>호요버스</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperation2" xml:space="preserve">
|
||||
<value>HoYoLab</value>
|
||||
<value>HoYoLAB</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperation3" xml:space="preserve">
|
||||
<value>当前用户</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationLoginMihoyoUserAction" xml:space="preserve">
|
||||
<value>웹 로그인</value>
|
||||
@@ -1895,6 +2129,9 @@
|
||||
<data name="ViewUserCookieOperationRefreshCookieAction" xml:space="preserve">
|
||||
<value>Cookie 동기화</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationSignInRewardAction" xml:space="preserve">
|
||||
<value>领取签到奖励</value>
|
||||
</data>
|
||||
<data name="ViewUserCopyCookieAction" xml:space="preserve">
|
||||
<value>Cookie 복사</value>
|
||||
</data>
|
||||
@@ -1937,6 +2174,21 @@
|
||||
<data name="ViewWikiWeaponHeader" xml:space="preserve">
|
||||
<value>무기 자료</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchPermanentActivityTime" xml:space="preserve">
|
||||
<value>(?:〓活动时间〓|〓任务开放时间〓).*?\d\.\d版本更新(?:完成|)后永久开放</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchPersistentActivityTime" xml:space="preserve">
|
||||
<value>〓活动时间〓.*?\d\.\d版本期间持续开放</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchTransientActivityTime" xml:space="preserve">
|
||||
<value>(?:〓活动时间〓|祈愿时间|【上架时间】).*?(\d\.\d版本更新后|\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}).*?~.*?&lt;t class="t_(?:gl|lc)".*?&gt;(.*?)&lt;/t&gt;</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchVersionUpdateTime" xml:space="preserve">
|
||||
<value>〓更新时间〓.+?&lt;t class=\"t_(?:gl|lc)\".*?&gt;(.*?)&lt;/t&gt;</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchVersionUpdateTitle" xml:space="preserve">
|
||||
<value>\d\.\d版本更新说明</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementTimeDaysBeginFormat" xml:space="preserve">
|
||||
<value>{0}일 후 시작</value>
|
||||
</data>
|
||||
@@ -1967,6 +2219,9 @@
|
||||
<data name="WebDailyNoteHomeCoinRecoveryFormat" xml:space="preserve">
|
||||
<value>预计 {0} {1:HH:mm} 达到存储上限</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteHomeLocked" xml:space="preserve">
|
||||
<value>尚未解锁洞天</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteRecoveryTimeDay0" xml:space="preserve">
|
||||
<value>오늘</value>
|
||||
</data>
|
||||
@@ -1997,6 +2252,12 @@
|
||||
<data name="WebDailyNoteTransformerMinutesFormat" xml:space="preserve">
|
||||
<value>{0}분</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotObtained" xml:space="preserve">
|
||||
<value>尚未获得</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotObtainedDetail" xml:space="preserve">
|
||||
<value>尚未获得参量质变仪</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotReached" xml:space="preserve">
|
||||
<value>쿨타임</value>
|
||||
</data>
|
||||
@@ -2051,4 +2312,10 @@
|
||||
<data name="WebResponseFormat" xml:space="preserve">
|
||||
<value>상태:{0} | 정보:{1}</value>
|
||||
</data>
|
||||
<data name="WebResponseRefreshCookieHintFormat" xml:space="preserve">
|
||||
<value>请刷新 Cookie,原始消息:{0}</value>
|
||||
</data>
|
||||
<data name="WebResponseRequestExceptionFormat" xml:space="preserve">
|
||||
<value>[{0}] 中的 [{1}] 网络请求异常,请稍后再试</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -665,6 +665,27 @@
|
||||
<data name="ServiceGameFileOperationExceptionMessage" xml:space="preserve">
|
||||
<value>游戏文件操作失败:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessExited" xml:space="preserve">
|
||||
<value>游戏进程已退出</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessInitializing" xml:space="preserve">
|
||||
<value>正在初始化游戏进程</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessStarted" xml:space="preserve">
|
||||
<value>游戏进程已启动</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsFailed" xml:space="preserve">
|
||||
<value>解锁帧率上限失败,正在结束游戏进程</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsSucceed" xml:space="preserve">
|
||||
<value>解锁帧率上限成功</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockingFps" xml:space="preserve">
|
||||
<value>正在尝试解锁帧率上限</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
|
||||
<value>等待游戏进程退出</value>
|
||||
</data>
|
||||
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
|
||||
<value>选择游戏本体</value>
|
||||
</data>
|
||||
@@ -830,6 +851,15 @@
|
||||
<data name="ViewControlStatisticsCardUpText" xml:space="preserve">
|
||||
<value>UP</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentPrediction" xml:space="preserve">
|
||||
<value>预测</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentProportion" xml:space="preserve">
|
||||
<value>比例</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
|
||||
<value>统计</value>
|
||||
</data>
|
||||
<data name="ViewCultivationHeader" xml:space="preserve">
|
||||
<value>养成计划</value>
|
||||
</data>
|
||||
@@ -911,6 +941,33 @@
|
||||
<data name="ViewDialogGachaLogUrlTitle" xml:space="preserve">
|
||||
<value>手动输入祈愿记录 Url</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlCompositInputHint" xml:space="preserve">
|
||||
<value>请输入请求接口的 Url 复合模板</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription1" xml:space="preserve">
|
||||
<value>接口需要返回形如上方所示的 Json 数据,多余的数据会被忽略</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription2" xml:space="preserve">
|
||||
<value>"code" 为 0 时,指示验证成功,其他的值均视为验证失败</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataHeader" xml:space="preserve">
|
||||
<value>返回数据</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription1" xml:space="preserve">
|
||||
<value>{0} 将在实际请求时替换为 gt</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription2" xml:space="preserve">
|
||||
<value>{1} 将在实际请求时替换为 challenge</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription3" xml:space="preserve">
|
||||
<value>将会通过 GET 方式对接口发送请求</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleHeader" xml:space="preserve">
|
||||
<value>示例</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlTitle" xml:space="preserve">
|
||||
<value>配置无感验证接口</value>
|
||||
</data>
|
||||
<data name="ViewDialogImportExportApp" xml:space="preserve">
|
||||
<value>导出 App</value>
|
||||
</data>
|
||||
@@ -971,6 +1028,48 @@
|
||||
<data name="ViewGachaLogHeader" xml:space="preserve">
|
||||
<value>祈愿记录</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIHaveReadText" xml:space="preserve">
|
||||
<value>我已阅读并同意</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIssueReport" xml:space="preserve">
|
||||
<value>问题报告方式与流程</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementOpenSourceLicense" xml:space="preserve">
|
||||
<value>Snap Hutao 开源许可</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementPrivacyPolicy" xml:space="preserve">
|
||||
<value>用户数据与隐私权益</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementTermOfService" xml:space="preserve">
|
||||
<value>用户使用协议与法律声明</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepDocument" xml:space="preserve">
|
||||
<value>文档</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironment" xml:space="preserve">
|
||||
<value>环境</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentAfterInstallDescription" xml:space="preserve">
|
||||
<value>安装完成后重启胡桃以查看是否正常生效</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription1" xml:space="preserve">
|
||||
<value>如果上方的图标中存在乱码,请前往</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription2" xml:space="preserve">
|
||||
<value>下载并自行安装图标字体</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description1" xml:space="preserve">
|
||||
<value>若未检测到 WebView2 运行时信息,可以前往</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description2" xml:space="preserve">
|
||||
<value>下载并自行安装运行时</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepLanguage" xml:space="preserve">
|
||||
<value>语言</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepStaticResource" xml:space="preserve">
|
||||
<value>资源</value>
|
||||
</data>
|
||||
<data name="ViewHutaoDatabaseHeader" xml:space="preserve">
|
||||
<value>深渊统计</value>
|
||||
</data>
|
||||
@@ -1098,10 +1197,10 @@
|
||||
<value>导入失败</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogPredictedPullLeftToOrange" xml:space="preserve">
|
||||
<value>{1:00.000%} 概率 {0} 抽后获得五星物品</value>
|
||||
<value>{1:P3} 概率 {0} 抽后获得五星物品</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogProbabilityOfNextPullIsOrange" xml:space="preserve">
|
||||
<value>{0:00.000%} 概率下一抽获得五星物品</value>
|
||||
<value>{0:P3} 概率下一抽获得五星物品</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRefreshFail" xml:space="preserve">
|
||||
<value>获取祈愿记录失败</value>
|
||||
@@ -1121,6 +1220,18 @@
|
||||
<data name="ViewModelGachaLogUploadToHutaoCloudProgress" xml:space="preserve">
|
||||
<value>正在上传到胡桃云服务</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionAgreement" xml:space="preserve">
|
||||
<value>我已阅读并同意上方的条款</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionComplete" xml:space="preserve">
|
||||
<value>完成</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionNext" xml:space="preserve">
|
||||
<value>下一步</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionStaticResourceBegin" xml:space="preserve">
|
||||
<value>下载资源文件中,请稍候</value>
|
||||
</data>
|
||||
<data name="ViewModelHutaoPassportEmailNotValidHint" xml:space="preserve">
|
||||
<value>请输入正确的邮箱</value>
|
||||
</data>
|
||||
@@ -1274,6 +1385,9 @@
|
||||
<data name="ViewPageAvatarPropertyRefreshFromHoyolabGameRecordDescription" xml:space="preserve">
|
||||
<value>同步角色天赋外的大部分信息</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyRefreshTimeToggle" xml:space="preserve">
|
||||
<value>刷新时间</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyScore" xml:space="preserve">
|
||||
<value>评分</value>
|
||||
</data>
|
||||
@@ -1410,7 +1524,7 @@
|
||||
<value>下载此 Uid 的云端存档</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityDescription" xml:space="preserve">
|
||||
<value>每期深渊首次上传可免费获得5天时长</value>
|
||||
<value>每期深渊首次上传可免费获得 3 天时长</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityHeader" xml:space="preserve">
|
||||
<value>上传深渊记录</value>
|
||||
@@ -1790,6 +1904,18 @@
|
||||
<data name="ViewPageSettingGameHeader" xml:space="preserve">
|
||||
<value>游戏</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlAction" xml:space="preserve">
|
||||
<value>配置</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlDescription" xml:space="preserve">
|
||||
<value>配置当请求触发人机验证时使用的验证接口</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlHeader" xml:space="preserve">
|
||||
<value>配置验证请求接口</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestVerificationHeader" xml:space="preserve">
|
||||
<value>无感验证</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingHutaoPassportHeader" xml:space="preserve">
|
||||
<value>胡桃账号</value>
|
||||
</data>
|
||||
|
||||
@@ -60,45 +60,45 @@
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
||||
<xsd:attribute name="type" type="xsd:string"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="alias" type="xsd:string"/>
|
||||
<xsd:attribute name="name" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
@@ -153,6 +153,9 @@
|
||||
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
|
||||
<value>列表</value>
|
||||
</data>
|
||||
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
|
||||
<value>資料庫已損壞:{0}</value>
|
||||
</data>
|
||||
<data name="CoreExceptionServiceUserdataCorruptedMessage" xml:space="preserve">
|
||||
<value>用户數據已損壞:{0}</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="FilePickerImportCommit" xml:space="preserve">
|
||||
<value>匯入</value>
|
||||
</data>
|
||||
<data name="GuideWindowTitle" xml:space="preserve">
|
||||
<value>歡迎使用胡桃</value>
|
||||
</data>
|
||||
<data name="LaunchGameTitle" xml:space="preserve">
|
||||
<value>選擇賬號並啓動</value>
|
||||
</data>
|
||||
@@ -231,9 +237,24 @@
|
||||
<data name="ModelBindingUserInitializationFailed" xml:space="preserve">
|
||||
<value>網路連線錯誤</value>
|
||||
</data>
|
||||
<data name="ModelEntityDailyNoteNotRefreshed" xml:space="preserve">
|
||||
<value>尚未刷新</value>
|
||||
</data>
|
||||
<data name="ModelEntityDailyNoteRefreshTimeFormat" xml:space="preserve">
|
||||
<value>刷新於 {0:yyyy/MM/dd HH:mm:ss}</value>
|
||||
</data>
|
||||
<data name="ModelEntitySpiralAbyssScheduleFormat" xml:space="preserve">
|
||||
<value>第 {0} 期</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeAvatar" xml:space="preserve">
|
||||
<value>角色</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeUnknown" xml:space="preserve">
|
||||
<value>未知</value>
|
||||
</data>
|
||||
<data name="ModelInterchangeUIGFItemTypeWeapon" xml:space="preserve">
|
||||
<value>武器</value>
|
||||
</data>
|
||||
<data name="ModelIntrinsicAssociationTypeFatui" xml:space="preserve">
|
||||
<value>愚人眾</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
@@ -351,6 +372,9 @@
|
||||
<value>單手劍</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataAvatarPlayerName" xml:space="preserve">
|
||||
<value>旅行者</value>
|
||||
</data>
|
||||
<data name="ModelMetadataFetterInfoBirthdayFormat" xml:space="preserve">
|
||||
<value>{0} 月 {1} 日</value>
|
||||
</data>
|
||||
@@ -375,7 +399,7 @@
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataMaterialLocalSpecialtyRegex" xml:space="preserve">
|
||||
<value>^[\u4e00-\u9fa5]{2}区域特产$</value>
|
||||
<value>^[\u4e00-\u9fa5]{2}區域特產$</value>
|
||||
<comment>If you don't know what is regex, DO NOT TRANSLATE THIS!</comment>
|
||||
</data>
|
||||
<data name="ModelMetadataMaterialWeaponAscensionMaterial" xml:space="preserve">
|
||||
@@ -506,6 +530,24 @@
|
||||
<value>風元素抗性</value>
|
||||
<comment>Need EXACT same string in game</comment>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryCalculatorNotRefreshed" xml:space="preserve">
|
||||
<value>養成計算:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryCalculatorRefreshTimeFormat" xml:space="preserve">
|
||||
<value>養成計算:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryGameRecordNotRefreshed" xml:space="preserve">
|
||||
<value>我的角色:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryGameRecordRefreshTimeFormat" xml:space="preserve">
|
||||
<value>我的角色:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryShowcaseNotRefreshed" xml:space="preserve">
|
||||
<value>角色櫥窗:尚未刷新</value>
|
||||
</data>
|
||||
<data name="ServiceAvatarInfoSummaryShowcaseRefreshTimeFormat" xml:space="preserve">
|
||||
<value>角色櫥窗:{0:MM-dd HH:mm}</value>
|
||||
</data>
|
||||
<data name="ServiceCultivationProjectCurrentUserdataCourrpted" xml:space="preserve">
|
||||
<value>保存養成計劃狀態失敗</value>
|
||||
</data>
|
||||
@@ -584,6 +626,9 @@
|
||||
<data name="ServiceGachaLogHutaoCloudServiceNotAllowed" xml:space="preserve">
|
||||
<value>祈願記錄上傳服務不可用</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUIGFImportItemInvalidFormat" xml:space="preserve">
|
||||
<value>數據包含異常物品, Id:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUrlProviderAuthkeyRequestFailed" xml:space="preserve">
|
||||
<value>請求驗證密鑰失敗</value>
|
||||
</data>
|
||||
@@ -602,9 +647,15 @@
|
||||
<data name="ServiceGachaLogUrlProviderStokenUnsupported" xml:space="preserve">
|
||||
<value>HoYoLAB 賬號不支持使用 SToken 刷新祈願記錄</value>
|
||||
</data>
|
||||
<data name="ServiceGachaLogUrlProviderUrlLanguageNotMatchCurrentLocale" xml:space="preserve">
|
||||
<value>Url 中的語言:{0} 與胡桃的語言:{1} 不對應,請切換到對應語言重試</value>
|
||||
</data>
|
||||
<data name="ServiceGachaStatisticsFactoryItemIdInvalid" xml:space="preserve">
|
||||
<value>不支持的 Item Id: {0}</value>
|
||||
</data>
|
||||
<data name="ServiceGachaUIGFImportLanguageNotMatch" xml:space="preserve">
|
||||
<value>UIGF 文件的語言:{0} 與胡桃的語言:{1} 不對應,請切換到對應語言重試</value>
|
||||
</data>
|
||||
<data name="ServiceGameDetectGameAccountMultiMatched" xml:space="preserve">
|
||||
<value>存在多個匹配賬號,請刪除重複的賬號</value>
|
||||
</data>
|
||||
@@ -614,15 +665,45 @@
|
||||
<data name="ServiceGameFileOperationExceptionMessage" xml:space="preserve">
|
||||
<value>遊戲檔案操作失敗:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessExited" xml:space="preserve">
|
||||
<value>遊戲進程已退出</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessInitializing" xml:space="preserve">
|
||||
<value>正在初始化遊戲進程</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseProcessStarted" xml:space="preserve">
|
||||
<value>遊戲進程已啟動</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsFailed" xml:space="preserve">
|
||||
<value>解鎖幀率上限失敗,正在結束遊戲進程</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockFpsSucceed" xml:space="preserve">
|
||||
<value>解鎖幀率上限成功</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseUnlockingFps" xml:space="preserve">
|
||||
<value>正在嘗試解鎖幀率上限</value>
|
||||
</data>
|
||||
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
|
||||
<value>等待遊戲進程退出</value>
|
||||
</data>
|
||||
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
|
||||
<value>請選擇遊戲本體</value>
|
||||
</data>
|
||||
<data name="ServiceGameLocatorUnityLogFileNotFound" xml:space="preserve">
|
||||
<value>找不到 Unity 日志文件</value>
|
||||
<value>找不到 Unity 日誌文件</value>
|
||||
</data>
|
||||
<data name="ServiceGameLocatorUnityLogGamePathNotFound" xml:space="preserve">
|
||||
<value>在 Unity 日誌文件中無法找到遊戲路徑</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileBackupFormat" xml:space="preserve">
|
||||
<value>備份:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileRenameFormat" xml:space="preserve">
|
||||
<value>重命名:{0} 到:{1}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageConvertMoveFileRestoreFormat" xml:space="preserve">
|
||||
<value>替換:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageRenameDataFolderFailed" xml:space="preserve">
|
||||
<value>重新命名資料文件夾名稱失敗</value>
|
||||
</data>
|
||||
@@ -632,6 +713,9 @@
|
||||
<data name="ServiceGamePackageRequestPackageVerionFailed" xml:space="preserve">
|
||||
<value>獲取 Package Version 失敗</value>
|
||||
</data>
|
||||
<data name="ServiceGamePackageRequestScatteredFileFailed" xml:space="preserve">
|
||||
<value>下載客戶端文件失敗:{0}</value>
|
||||
</data>
|
||||
<data name="ServiceGamePathLocateFailed" xml:space="preserve">
|
||||
<value>無法找到遊戲本體路徑,請前往設定修改</value>
|
||||
</data>
|
||||
@@ -680,6 +764,15 @@
|
||||
<data name="ServiceMetadataVersionNotSupported" xml:space="preserve">
|
||||
<value>你的胡桃版本過低,請盡快升級</value>
|
||||
</data>
|
||||
<data name="ServiceSignInClaimRewardFailedFormat" xml:space="preserve">
|
||||
<value>簽到失敗,{0}</value>
|
||||
</data>
|
||||
<data name="ServiceSignInRewardListRequestFailed" xml:space="preserve">
|
||||
<value>獲取獎勵列表失敗</value>
|
||||
</data>
|
||||
<data name="ServiceSignInSuccessRewardFormat" xml:space="preserve">
|
||||
<value>遷到成功,{0}×{1}</value>
|
||||
</data>
|
||||
<data name="ServiceUserCurrentMultiMatched" xml:space="preserve">
|
||||
<value>已选中多条用户记录</value>
|
||||
</data>
|
||||
@@ -746,12 +839,27 @@
|
||||
<data name="ViewControlStatisticsCardPurpleText" xml:space="preserve">
|
||||
<value>四星</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardToLastOrangeText" xml:space="preserve">
|
||||
<value>距上個五星</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardToLastPurpleText" xml:space="preserve">
|
||||
<value>距上個四星</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardUpAveragePullText" xml:space="preserve">
|
||||
<value>UP 平均抽數</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsCardUpText" xml:space="preserve">
|
||||
<value>UP</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentPrediction" xml:space="preserve">
|
||||
<value>預測</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentProportion" xml:space="preserve">
|
||||
<value>比例</value>
|
||||
</data>
|
||||
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
|
||||
<value>統計</value>
|
||||
</data>
|
||||
<data name="ViewCultivationHeader" xml:space="preserve">
|
||||
<value>養成計劃</value>
|
||||
</data>
|
||||
@@ -800,6 +908,9 @@
|
||||
<data name="ViewDialogDailyNoteNotificationExpeditionNotify" xml:space="preserve">
|
||||
<value>探索派遣完成提醒</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationHomeCoinNotifyThreshold" xml:space="preserve">
|
||||
<value>洞天寶錢提醒閥值</value>
|
||||
</data>
|
||||
<data name="ViewDialogDailyNoteNotificationResinNotifyThreshold" xml:space="preserve">
|
||||
<value>洞天寶錢提醒閾值</value>
|
||||
</data>
|
||||
@@ -830,6 +941,33 @@
|
||||
<data name="ViewDialogGachaLogUrlTitle" xml:space="preserve">
|
||||
<value>手動輸入祈願記錄 Url</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlCompositInputHint" xml:space="preserve">
|
||||
<value>請輸入請求接口的 Url 複合模板</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription1" xml:space="preserve">
|
||||
<value>接口需要返回形如上方所示的 Json 數據,多餘的數據會被忽略</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataDescription2" xml:space="preserve">
|
||||
<value>"code" 為 0 時,指示驗證成功,其他的值均視為驗證失敗</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlReturnDataHeader" xml:space="preserve">
|
||||
<value>返回數據</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription1" xml:space="preserve">
|
||||
<value>{0} 將在實際請求時替換為 gt</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription2" xml:space="preserve">
|
||||
<value>{1} 將在實際請求時替換為 challenge</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleDescription3" xml:space="preserve">
|
||||
<value>將會通過 GET 方式對接口發送請求</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlSampleHeader" xml:space="preserve">
|
||||
<value>示例</value>
|
||||
</data>
|
||||
<data name="ViewDialogGeetestCustomUrlTitle" xml:space="preserve">
|
||||
<value>配置無感驗證接口</value>
|
||||
</data>
|
||||
<data name="ViewDialogImportExportApp" xml:space="preserve">
|
||||
<value>匯出 App</value>
|
||||
</data>
|
||||
@@ -890,6 +1028,48 @@
|
||||
<data name="ViewGachaLogHeader" xml:space="preserve">
|
||||
<value>祈願記錄</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIHaveReadText" xml:space="preserve">
|
||||
<value>我已閱讀並同意</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementIssueReport" xml:space="preserve">
|
||||
<value>問題報告方式與流程</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementOpenSourceLicense" xml:space="preserve">
|
||||
<value>Snap Hutao 開源許可</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementPrivacyPolicy" xml:space="preserve">
|
||||
<value>用戶數據與隱私權益</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepAgreementTermOfService" xml:space="preserve">
|
||||
<value>用戶使用協議與法律聲明</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepDocument" xml:space="preserve">
|
||||
<value>文檔</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironment" xml:space="preserve">
|
||||
<value>環境</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentAfterInstallDescription" xml:space="preserve">
|
||||
<value>安裝完成後重啟胡桃以查看是否正常生效</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription1" xml:space="preserve">
|
||||
<value>如果上方的圖標中存在亂碼,請前往</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentFontDescription2" xml:space="preserve">
|
||||
<value>下載並自行安裝圖標字體</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description1" xml:space="preserve">
|
||||
<value>若未檢測到 WebView2 Runtime信息,可以前往</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepEnvironmentWebView2Description2" xml:space="preserve">
|
||||
<value>下載並自行安裝Runtime</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepLanguage" xml:space="preserve">
|
||||
<value>語言</value>
|
||||
</data>
|
||||
<data name="ViewGuideStepStaticResource" xml:space="preserve">
|
||||
<value>資源</value>
|
||||
</data>
|
||||
<data name="ViewHutaoDatabaseHeader" xml:space="preserve">
|
||||
<value>深淵統計</value>
|
||||
</data>
|
||||
@@ -983,6 +1163,9 @@
|
||||
<data name="ViewModelDailyNoteRegisterTaskFail" xml:space="preserve">
|
||||
<value>注冊計劃任務失敗,請以管理員模式重試</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRequestProgressTitle" xml:space="preserve">
|
||||
<value>正在獲取實時便箋信息,請稍候</value>
|
||||
</data>
|
||||
<data name="ViewModelExportSuccessMessage" xml:space="preserve">
|
||||
<value>成功保存到指定位置</value>
|
||||
</data>
|
||||
@@ -1014,10 +1197,10 @@
|
||||
<value>匯入失敗</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogPredictedPullLeftToOrange" xml:space="preserve">
|
||||
<value>{1:00.000%} 概率 {0} 抽后获得五星物品</value>
|
||||
<value>{1:P3} 概率 {0} 抽後獲得五星物品</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogProbabilityOfNextPullIsOrange" xml:space="preserve">
|
||||
<value>{0:00.000%} 概率下一抽获得五星物品</value>
|
||||
<value>{0:P3} 概率下一抽獲得五星物品</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRefreshFail" xml:space="preserve">
|
||||
<value>獲取祈願紀錄失敗</value>
|
||||
@@ -1037,6 +1220,21 @@
|
||||
<data name="ViewModelGachaLogUploadToHutaoCloudProgress" xml:space="preserve">
|
||||
<value>正在上傳到胡桃雲服務</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionAgreement" xml:space="preserve">
|
||||
<value>我已閱讀並同意上方的條款</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionComplete" xml:space="preserve">
|
||||
<value>完成</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionNext" xml:space="preserve">
|
||||
<value>下一步</value>
|
||||
</data>
|
||||
<data name="ViewModelGuideActionStaticResourceBegin" xml:space="preserve">
|
||||
<value>下載資源文件中,請稍候</value>
|
||||
</data>
|
||||
<data name="ViewModelHutaoPassportEmailNotValidHint" xml:space="preserve">
|
||||
<value>請輸入正確的郵箱</value>
|
||||
</data>
|
||||
<data name="ViewModelImportFromClipboardErrorTitle" xml:space="preserve">
|
||||
<value>剪貼板中的文本格式不正塙</value>
|
||||
</data>
|
||||
@@ -1187,6 +1385,9 @@
|
||||
<data name="ViewPageAvatarPropertyRefreshFromHoyolabGameRecordDescription" xml:space="preserve">
|
||||
<value>同步角色天賦外的大部分信息</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyRefreshTimeToggle" xml:space="preserve">
|
||||
<value>刷新時間</value>
|
||||
</data>
|
||||
<data name="ViewPageAvatarPropertyScore" xml:space="preserve">
|
||||
<value>評分</value>
|
||||
</data>
|
||||
@@ -1271,6 +1472,18 @@
|
||||
<data name="ViewPageDailyNoteResinDiscountUsed" xml:space="preserve">
|
||||
<value>本周已消耗減半次數</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingAutoRefresh" xml:space="preserve">
|
||||
<value>自動刷新</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingAutoRefreshDescription" xml:space="preserve">
|
||||
<value>間隔選定的時間後刷新添加的實時便箋</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingRefreshElevatedHint" xml:space="preserve">
|
||||
<value>這些選項僅允許在非管理員模式下更改</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSettingRefreshHeader" xml:space="preserve">
|
||||
<value>刷新</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteSlientModeDescription" xml:space="preserve">
|
||||
<value>在我游玩原神時不通知我</value>
|
||||
</data>
|
||||
@@ -1311,7 +1524,7 @@
|
||||
<value>下載此UID的雲端存檔</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityDescription" xml:space="preserve">
|
||||
<value>每期深淵首次上傳可免費獲得五天時長</value>
|
||||
<value>每期深淵首次上傳可免費獲得 3 天時長</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogHutaoCloudSpiralAbyssActivityHeader" xml:space="preserve">
|
||||
<value>上傳深淵紀錄</value>
|
||||
@@ -1337,6 +1550,12 @@
|
||||
<data name="ViewPageGachaLogRefreshAction" xml:space="preserve">
|
||||
<value>獲取</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByManualInput" xml:space="preserve">
|
||||
<value>手動輸入 Url</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByManualInputDescription" xml:space="preserve">
|
||||
<value>使用由你提供的 Url 刷新祈願記錄</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshBySToken" xml:space="preserve">
|
||||
<value>SToken 刷新</value>
|
||||
</data>
|
||||
@@ -1356,7 +1575,7 @@
|
||||
<value>角色</value>
|
||||
</data>
|
||||
<data name="ViewPageGahcaLogPivotHistory" xml:space="preserve">
|
||||
<value>历史</value>
|
||||
<value>歷史</value>
|
||||
</data>
|
||||
<data name="ViewPageGahcaLogPivotOverview" xml:space="preserve">
|
||||
<value>總覽</value>
|
||||
@@ -1656,7 +1875,7 @@
|
||||
<value>直接刪除用戶表的所有記錄,用於修復特定的賬號衝突問題</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeleteUserHeader" xml:space="preserve">
|
||||
<value>删除所有用户</value>
|
||||
<value>刪除所有用戶</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeviceIdHeader" xml:space="preserve">
|
||||
<value>裝置 ID</value>
|
||||
@@ -1685,6 +1904,18 @@
|
||||
<data name="ViewPageSettingGameHeader" xml:space="preserve">
|
||||
<value>游戲</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlAction" xml:space="preserve">
|
||||
<value>配置</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlDescription" xml:space="preserve">
|
||||
<value>配置當請求觸發人機驗證時使用的驗證接口</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestCustomUrlHeader" xml:space="preserve">
|
||||
<value>配置驗證請求接口</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGeetestVerificationHeader" xml:space="preserve">
|
||||
<value>無感驗證</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingHutaoPassportHeader" xml:space="preserve">
|
||||
<value>Snap Hutao 賬號</value>
|
||||
</data>
|
||||
@@ -1776,7 +2007,7 @@
|
||||
<value>韓語 CV</value>
|
||||
</data>
|
||||
<data name="ViewPageWiKiAvatarMiscHeader" xml:space="preserve">
|
||||
<value>其它</value>
|
||||
<value>其他</value>
|
||||
</data>
|
||||
<data name="ViewPageWiKiAvatarOccupationNameTitle" xml:space="preserve">
|
||||
<value>所屬</value>
|
||||
@@ -1886,6 +2117,9 @@
|
||||
<data name="ViewUserCookieOperation2" xml:space="preserve">
|
||||
<value>HoYoLAB</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperation3" xml:space="preserve">
|
||||
<value>當前用戶</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationLoginMihoyoUserAction" xml:space="preserve">
|
||||
<value>網頁登陸</value>
|
||||
</data>
|
||||
@@ -1895,6 +2129,9 @@
|
||||
<data name="ViewUserCookieOperationRefreshCookieAction" xml:space="preserve">
|
||||
<value>刷新 Cookie</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationSignInRewardAction" xml:space="preserve">
|
||||
<value>領取簽到獎勵</value>
|
||||
</data>
|
||||
<data name="ViewUserCopyCookieAction" xml:space="preserve">
|
||||
<value>拷貝 Cookie</value>
|
||||
</data>
|
||||
@@ -1937,6 +2174,21 @@
|
||||
<data name="ViewWikiWeaponHeader" xml:space="preserve">
|
||||
<value>武器資料</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchPermanentActivityTime" xml:space="preserve">
|
||||
<value>(?:〓活動時間〓|〓任務開放時間〓).*?\d\.\d版本更新(?:完成|)後永久開放</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchPersistentActivityTime" xml:space="preserve">
|
||||
<value>〓活動時間〓.*?\d\.\d版本期間持續開放</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchTransientActivityTime" xml:space="preserve">
|
||||
<value>(?:〓活動時間〓|祈願時間|【上架時間】).*?(\d\.\d版本更新後|\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}).*?~.*?&lt;t class="t_(?:gl|lc)".*?&gt;(.*?)&lt;/t&gt;</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchVersionUpdateTime" xml:space="preserve">
|
||||
<value>〓更新時間〓.+?&lt;t class=\"t_(?:gl|lc)\".*?&gt;(.*?)&lt;/t&gt;</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementMatchVersionUpdateTitle" xml:space="preserve">
|
||||
<value>\d\.\d版本更新說明</value>
|
||||
</data>
|
||||
<data name="WebAnnouncementTimeDaysBeginFormat" xml:space="preserve">
|
||||
<value>{0} 天後開始</value>
|
||||
</data>
|
||||
@@ -1967,6 +2219,9 @@
|
||||
<data name="WebDailyNoteHomeCoinRecoveryFormat" xml:space="preserve">
|
||||
<value>預計 {0} {1:HH:mm} 達到存儲上限</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteHomeLocked" xml:space="preserve">
|
||||
<value>尚未解鎖洞天</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteRecoveryTimeDay0" xml:space="preserve">
|
||||
<value>今天</value>
|
||||
</data>
|
||||
@@ -1997,6 +2252,12 @@
|
||||
<data name="WebDailyNoteTransformerMinutesFormat" xml:space="preserve">
|
||||
<value>{0} 分</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotObtained" xml:space="preserve">
|
||||
<value>尚未獲得</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotObtainedDetail" xml:space="preserve">
|
||||
<value>尚未獲得參量質變儀</value>
|
||||
</data>
|
||||
<data name="WebDailyNoteTransformerNotReached" xml:space="preserve">
|
||||
<value>冷卻中</value>
|
||||
</data>
|
||||
@@ -2051,4 +2312,10 @@
|
||||
<data name="WebResponseFormat" xml:space="preserve">
|
||||
<value>狀態:{0} | 信息:{1}</value>
|
||||
</data>
|
||||
<data name="WebResponseRefreshCookieHintFormat" xml:space="preserve">
|
||||
<value>請刷新 Cookie,原始消息:{0}</value>
|
||||
</data>
|
||||
<data name="WebResponseRequestExceptionFormat" xml:space="preserve">
|
||||
<value>[{0}] 中的 [{1}] 網路請求異常,請稍後再試</value>
|
||||
</data>
|
||||
</root>
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 196 KiB |
@@ -16,5 +16,5 @@ internal interface IAnnouncementService
|
||||
/// </summary>
|
||||
/// <param name="cancellationToken">取消令牌</param>
|
||||
/// <returns>公告包装器</returns>
|
||||
ValueTask<AnnouncementWrapper> GetAnnouncementsAsync(CancellationToken cancellationToken = default);
|
||||
ValueTask<AnnouncementWrapper> GetAnnouncementWrapperAsync(CancellationToken cancellationToken = default);
|
||||
}
|
||||
@@ -24,7 +24,7 @@ internal sealed partial class AnnouncementService : IAnnouncementService
|
||||
private readonly IMemoryCache memoryCache;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public async ValueTask<AnnouncementWrapper> GetAnnouncementsAsync(CancellationToken cancellationToken = default)
|
||||
public async ValueTask<AnnouncementWrapper> GetAnnouncementWrapperAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
// 缓存中存在记录,直接返回
|
||||
if (memoryCache.TryGetValue(CacheKey, out object? cache))
|
||||
|
||||
@@ -38,6 +38,7 @@ internal sealed partial class AppOptions : DbStoreOptions
|
||||
private BackdropType? backdropType;
|
||||
private CultureInfo? currentCulture;
|
||||
private bool? isAdvancedLaunchOptionsEnabled;
|
||||
private string? geetestCustomCompositeUrl;
|
||||
|
||||
/// <summary>
|
||||
/// 游戏路径
|
||||
@@ -100,6 +101,12 @@ internal sealed partial class AppOptions : DbStoreOptions
|
||||
set => SetOption(ref isAdvancedLaunchOptionsEnabled, SettingEntry.IsAdvancedLaunchOptionsEnabled, value);
|
||||
}
|
||||
|
||||
public string GeetestCustomCompositeUrl
|
||||
{
|
||||
get => GetOption(ref geetestCustomCompositeUrl, SettingEntry.GeetestCustomCompositeUrl);
|
||||
set => SetOption(ref geetestCustomCompositeUrl, SettingEntry.GeetestCustomCompositeUrl, value);
|
||||
}
|
||||
|
||||
private static NameValue<string> ToNameValue(CultureInfo info)
|
||||
{
|
||||
return new(info.NativeName, info.Name);
|
||||
|
||||
@@ -22,8 +22,6 @@ namespace Snap.Hutao.Service.AvatarInfo.Factory;
|
||||
[HighQuality]
|
||||
internal sealed class SummaryAvatarFactory
|
||||
{
|
||||
private static readonly DateTimeOffset DefaultRefreshTime = new(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0));
|
||||
|
||||
private readonly ModelAvatarInfo avatarInfo;
|
||||
private readonly DateTimeOffset showcaseRefreshTime;
|
||||
private readonly DateTimeOffset gameRecordRefreshTime;
|
||||
|
||||
@@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
|
||||
using Snap.Hutao.Core.Database;
|
||||
using Snap.Hutao.Model.Entity;
|
||||
using Snap.Hutao.Model.Entity.Database;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace Snap.Hutao.Service.Cultivation;
|
||||
|
||||
@@ -153,4 +154,13 @@ internal sealed partial class CultivationDbService : ICultivationDbService
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
public ObservableCollection<CultivateProject> GetCultivateProjectCollection()
|
||||
{
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
AppDbContext appDbContext = scope.ServiceProvider.GetRequiredService<AppDbContext>();
|
||||
return appDbContext.CultivateProjects.AsNoTracking().ToObservableCollection();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,12 +29,7 @@ internal sealed partial class CultivationService
|
||||
{
|
||||
if (projects is null)
|
||||
{
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
AppDbContext appDbContext = scope.ServiceProvider.GetRequiredService<AppDbContext>();
|
||||
projects = appDbContext.CultivateProjects.ToObservableCollection();
|
||||
}
|
||||
|
||||
projects = cultivationDbService.GetCultivateProjectCollection();
|
||||
Current ??= projects.SelectedOrDefault();
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Snap.Hutao.Model.Entity;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace Snap.Hutao.Service.Cultivation;
|
||||
|
||||
@@ -21,6 +22,8 @@ internal interface ICultivationDbService
|
||||
|
||||
ValueTask<List<CultivateItem>> GetCultivateItemListByEntryIdAsync(Guid entryId);
|
||||
|
||||
ObservableCollection<CultivateProject> GetCultivateProjectCollection();
|
||||
|
||||
List<InventoryItem> GetInventoryItemListByProjectId(Guid projectId);
|
||||
|
||||
ValueTask<List<InventoryItem>> GetInventoryItemListByProjectIdAsync(Guid projectId);
|
||||
|
||||
@@ -1,23 +1,27 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Snap.Hutao.Core;
|
||||
using Snap.Hutao.Core.Shell;
|
||||
using Snap.Hutao.Model;
|
||||
using Snap.Hutao.Model.Entity;
|
||||
using Snap.Hutao.Service.Abstraction;
|
||||
using Snap.Hutao.Service.Notification;
|
||||
using System.Globalization;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Snap.Hutao.Service.DailyNote;
|
||||
|
||||
/// <summary>
|
||||
/// 实时便笺选项
|
||||
/// </summary>
|
||||
[ConstructorGenerated(CallBaseConstructor = true)]
|
||||
[Injection(InjectAs.Singleton)]
|
||||
internal sealed class DailyNoteOptions : DbStoreOptions
|
||||
internal sealed partial class DailyNoteOptions : DbStoreOptions
|
||||
{
|
||||
private const int OneMinute = 60;
|
||||
|
||||
private readonly RuntimeOptions runtimeOptions;
|
||||
private readonly IServiceProvider serviceProvider;
|
||||
private readonly IScheduleTaskInterop scheduleTaskInterop;
|
||||
|
||||
@@ -25,17 +29,6 @@ internal sealed class DailyNoteOptions : DbStoreOptions
|
||||
private bool? isReminderNotification;
|
||||
private bool? isSilentWhenPlayingGame;
|
||||
|
||||
/// <summary>
|
||||
/// 构造一个新的实时便笺选项
|
||||
/// </summary>
|
||||
/// <param name="serviceProvider">服务提供器</param>
|
||||
public DailyNoteOptions(IServiceProvider serviceProvider)
|
||||
: base(serviceProvider)
|
||||
{
|
||||
scheduleTaskInterop = serviceProvider.GetRequiredService<IScheduleTaskInterop>();
|
||||
this.serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刷新时间
|
||||
/// </summary>
|
||||
@@ -53,6 +46,12 @@ internal sealed class DailyNoteOptions : DbStoreOptions
|
||||
get => scheduleTaskInterop.IsDailyNoteRefreshEnabled();
|
||||
set
|
||||
{
|
||||
if (runtimeOptions.IsElevated)
|
||||
{
|
||||
// leave below untouched if we are running in elevated privilege
|
||||
return;
|
||||
}
|
||||
|
||||
if (value)
|
||||
{
|
||||
if (SelectedRefreshTime is not null)
|
||||
@@ -74,9 +73,25 @@ internal sealed class DailyNoteOptions : DbStoreOptions
|
||||
/// </summary>
|
||||
public NameValue<int>? SelectedRefreshTime
|
||||
{
|
||||
get => GetOption(ref selectedRefreshTime, SettingEntry.DailyNoteRefreshSeconds, time => RefreshTimes.Single(t => t.Value == int.Parse(time, CultureInfo.InvariantCulture)), RefreshTimes[1]);
|
||||
get
|
||||
{
|
||||
if (runtimeOptions.IsElevated)
|
||||
{
|
||||
// leave below untouched if we are running in elevated privilege
|
||||
return null;
|
||||
}
|
||||
|
||||
return GetOption(ref selectedRefreshTime, SettingEntry.DailyNoteRefreshSeconds, time => RefreshTimes.Single(t => t.Value == int.Parse(time, CultureInfo.InvariantCulture)), RefreshTimes[1]);
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (runtimeOptions.IsElevated)
|
||||
{
|
||||
// leave below untouched if we are running in elevated privilege
|
||||
return;
|
||||
}
|
||||
|
||||
if (value is not null)
|
||||
{
|
||||
if (scheduleTaskInterop.RegisterForDailyNoteRefresh(value.Value))
|
||||
|
||||
@@ -125,13 +125,21 @@ internal sealed partial class DailyNoteService : IDailyNoteService, IRecipient<U
|
||||
{
|
||||
WebDailyNote dailyNote = dailyNoteResponse.Data;
|
||||
|
||||
// 发送通知
|
||||
await dailyNoteNotificationOperation.SendAsync(entry).ConfigureAwait(false);
|
||||
|
||||
// 集合内的实时便笺与数据库取出的非同一个对象,需要分别更新
|
||||
// cache
|
||||
await taskContext.SwitchToMainThreadAsync();
|
||||
entries?.SingleOrDefault(e => e.UserId == entry.UserId && e.Uid == entry.Uid)?.UpdateDailyNote(dailyNote);
|
||||
|
||||
// 发送通知
|
||||
await dailyNoteNotificationOperation.SendAsync(entry).ConfigureAwait(false);
|
||||
if (entries?.SingleOrDefault(e => e.UserId == entry.UserId && e.Uid == entry.Uid) is { } cachedEntry)
|
||||
{
|
||||
cachedEntry.UpdateDailyNote(dailyNote);
|
||||
cachedEntry.ResinNotifySuppressed = entry.ResinNotifySuppressed;
|
||||
cachedEntry.HomeCoinNotifySuppressed = entry.HomeCoinNotifySuppressed;
|
||||
cachedEntry.TransformerNotifySuppressed = entry.TransformerNotifySuppressed;
|
||||
cachedEntry.DailyTaskNotifySuppressed = entry.DailyTaskNotifySuppressed;
|
||||
cachedEntry.ExpeditionNotifySuppressed = entry.ExpeditionNotifySuppressed;
|
||||
}
|
||||
|
||||
// database
|
||||
entry.UpdateDailyNote(dailyNote);
|
||||
|
||||
@@ -230,7 +230,7 @@ internal sealed partial class GameService : IGameService
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public async ValueTask LaunchAsync()
|
||||
public async ValueTask LaunchAsync(IProgress<LaunchStatus> progress)
|
||||
{
|
||||
if (IsGameRunning())
|
||||
{
|
||||
@@ -240,21 +240,37 @@ internal sealed partial class GameService : IGameService
|
||||
string gamePath = appOptions.GamePath;
|
||||
ArgumentException.ThrowIfNullOrEmpty(gamePath);
|
||||
|
||||
progress.Report(new(LaunchPhase.ProcessInitializing, SH.ServiceGameLaunchPhaseProcessInitializing));
|
||||
using (Process game = ProcessInterop.InitializeGameProcess(launchOptions, gamePath))
|
||||
{
|
||||
try
|
||||
{
|
||||
bool isFirstInstance = Interlocked.Increment(ref runningGamesCounter) == 1;
|
||||
|
||||
game.Start();
|
||||
progress.Report(new(LaunchPhase.ProcessStarted, SH.ServiceGameLaunchPhaseProcessStarted));
|
||||
|
||||
if (runtimeOptions.IsElevated && appOptions.IsAdvancedLaunchOptionsEnabled && launchOptions.UnlockFps)
|
||||
{
|
||||
await ProcessInterop.UnlockFpsAsync(serviceProvider, game, default).ConfigureAwait(false);
|
||||
progress.Report(new(LaunchPhase.UnlockingFps, SH.ServiceGameLaunchPhaseUnlockingFps));
|
||||
try
|
||||
{
|
||||
await ProcessInterop.UnlockFpsAsync(serviceProvider, game, progress).ConfigureAwait(false);
|
||||
}
|
||||
catch (InvalidOperationException)
|
||||
{
|
||||
// The Unlocker can't unlock the process
|
||||
game.Kill();
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
progress.Report(new(LaunchPhase.ProcessExited, SH.ServiceGameLaunchPhaseProcessExited));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
progress.Report(new(LaunchPhase.WaitingForExit, SH.ServiceGameLaunchPhaseWaitingProcessExit));
|
||||
await game.WaitForExitAsync().ConfigureAwait(false);
|
||||
progress.Report(new(LaunchPhase.ProcessExited, SH.ServiceGameLaunchPhaseProcessExited));
|
||||
}
|
||||
}
|
||||
finally
|
||||
|
||||
@@ -50,11 +50,7 @@ internal interface IGameService
|
||||
/// <returns>是否正在运行</returns>
|
||||
bool IsGameRunning();
|
||||
|
||||
/// <summary>
|
||||
/// 异步启动
|
||||
/// </summary>
|
||||
/// <returns>任务</returns>
|
||||
ValueTask LaunchAsync();
|
||||
ValueTask LaunchAsync(IProgress<LaunchStatus> progress);
|
||||
|
||||
/// <summary>
|
||||
/// 异步修改游戏账号名称
|
||||
|
||||
15
src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchPhase.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
namespace Snap.Hutao.Service.Game;
|
||||
|
||||
internal enum LaunchPhase
|
||||
{
|
||||
ProcessInitializing,
|
||||
ProcessStarted,
|
||||
UnlockingFps,
|
||||
UnlockFpsSucceed,
|
||||
UnlockFpsFailed,
|
||||
WaitingForExit,
|
||||
ProcessExited,
|
||||
}
|
||||
31
src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchStatus.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Snap.Hutao.Core;
|
||||
using Snap.Hutao.Core.ExceptionService;
|
||||
using Snap.Hutao.Core.IO.Ini;
|
||||
using Snap.Hutao.Model.Entity;
|
||||
using Snap.Hutao.Service.Game.Locator;
|
||||
using Snap.Hutao.Service.Game.Package;
|
||||
using Snap.Hutao.View.Dialog;
|
||||
using Snap.Hutao.Web.Hoyolab.SdkStatic.Hk4e.Launcher;
|
||||
using Snap.Hutao.Web.Response;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using static Snap.Hutao.Service.Game.GameConstants;
|
||||
|
||||
namespace Snap.Hutao.Service.Game;
|
||||
|
||||
internal sealed class LaunchStatus
|
||||
{
|
||||
public LaunchStatus(LaunchPhase phase, string description)
|
||||
{
|
||||
Phase = phase;
|
||||
Description = description;
|
||||
}
|
||||
|
||||
public LaunchPhase Phase { get; set; }
|
||||
|
||||
public string Description { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Snap.Hutao.Service.Game;
|
||||
|
||||
[Injection(InjectAs.Singleton)]
|
||||
internal sealed class LaunchStatusOptions : ObservableObject
|
||||
{
|
||||
private LaunchStatus? launchStatus;
|
||||
|
||||
public LaunchStatus? LaunchStatus { get => launchStatus; set => SetProperty(ref launchStatus, value); }
|
||||
}
|
||||
@@ -49,19 +49,12 @@ internal static class ProcessInterop
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解锁帧率
|
||||
/// </summary>
|
||||
/// <param name="serviceProvider">服务提供器</param>
|
||||
/// <param name="game">游戏进程</param>
|
||||
/// <param name="token">取消令牌</param>
|
||||
/// <returns>任务</returns>
|
||||
public static ValueTask UnlockFpsAsync(IServiceProvider serviceProvider, Process game, CancellationToken token)
|
||||
public static ValueTask UnlockFpsAsync(IServiceProvider serviceProvider, Process game, IProgress<LaunchStatus> progress, CancellationToken token = default)
|
||||
{
|
||||
IGameFpsUnlocker unlocker = serviceProvider.CreateInstance<GameFpsUnlocker>(game);
|
||||
UnlockTimingOptions options = new(100, 20000, 3000);
|
||||
Progress<UnlockerStatus> progress = new(); // TODO: do something.
|
||||
return unlocker.UnlockAsync(options, progress, token);
|
||||
Progress<UnlockerStatus> lockerProgress = new(unlockStatus => progress.Report(FromUnlockStatus(unlockStatus)));
|
||||
return unlocker.UnlockAsync(options, lockerProgress, token);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -92,8 +85,7 @@ internal static class ProcessInterop
|
||||
/// </summary>
|
||||
/// <param name="hProcess">进程句柄</param>
|
||||
/// <param name="libraryPathu8">库的路径,不包含'\0'</param>
|
||||
[SuppressMessage("", "SH002")]
|
||||
public static unsafe void LoadLibraryAndInject(HANDLE hProcess, ReadOnlySpan<byte> libraryPathu8)
|
||||
public static unsafe void LoadLibraryAndInject(in HANDLE hProcess, in ReadOnlySpan<byte> libraryPathu8)
|
||||
{
|
||||
HINSTANCE hKernelDll = GetModuleHandle("kernel32.dll");
|
||||
Marshal.ThrowExceptionForHR(Marshal.GetLastPInvokeError());
|
||||
@@ -132,8 +124,7 @@ internal static class ProcessInterop
|
||||
}
|
||||
}
|
||||
|
||||
[SuppressMessage("", "SH002")]
|
||||
private static unsafe FARPROC GetProcAddress(HINSTANCE hModule, ReadOnlySpan<byte> lpProcName)
|
||||
private static unsafe FARPROC GetProcAddress(in HINSTANCE hModule, in ReadOnlySpan<byte> lpProcName)
|
||||
{
|
||||
fixed (byte* lpProcNameLocal = lpProcName)
|
||||
{
|
||||
@@ -141,12 +132,23 @@ internal static class ProcessInterop
|
||||
}
|
||||
}
|
||||
|
||||
[SuppressMessage("", "SH002")]
|
||||
private static unsafe BOOL WriteProcessMemory(HANDLE hProcess, void* lpBaseAddress, ReadOnlySpan<byte> buffer)
|
||||
private static unsafe BOOL WriteProcessMemory(in HANDLE hProcess, void* lpBaseAddress, in ReadOnlySpan<byte> buffer)
|
||||
{
|
||||
fixed (void* lpBuffer = buffer)
|
||||
{
|
||||
return Windows.Win32.PInvoke.WriteProcessMemory(hProcess, lpBaseAddress, lpBuffer, unchecked((uint)buffer.Length));
|
||||
}
|
||||
}
|
||||
|
||||
private static LaunchStatus FromUnlockStatus(UnlockerStatus unlockerStatus)
|
||||
{
|
||||
if (unlockerStatus.FindModuleState == FindModuleResult.Ok)
|
||||
{
|
||||
return new(LaunchPhase.UnlockFpsSucceed, SH.ServiceGameLaunchPhaseUnlockFpsSucceed);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new(LaunchPhase.UnlockFpsFailed, SH.ServiceGameLaunchPhaseUnlockFpsFailed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ internal sealed class GameFpsUnlocker : IGameFpsUnlocker
|
||||
|
||||
// Read UnityPlayer.dll
|
||||
UnsafeFindFpsAddress(moduleEntryInfo);
|
||||
progress.Report(status);
|
||||
|
||||
// When player switch between scenes, we have to re adjust the fps
|
||||
// So we keep a loop here
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Snap.Hutao.Service.Game.Unlocker;
|
||||
/// <summary>
|
||||
/// 解锁状态
|
||||
/// </summary>
|
||||
internal sealed class UnlockerStatus : ICloneable<UnlockerStatus>
|
||||
internal sealed class UnlockerStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 状态描述
|
||||
@@ -29,9 +29,4 @@ internal sealed class UnlockerStatus : ICloneable<UnlockerStatus>
|
||||
/// FPS 字节地址
|
||||
/// </summary>
|
||||
public nuint FpsAddress { get; set; }
|
||||
|
||||
public UnlockerStatus Clone()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
69
src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoAsAService.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using Snap.Hutao.Core.Setting;
|
||||
using Snap.Hutao.Web.Hutao.HutaoAsAService;
|
||||
using Snap.Hutao.Web.Response;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Globalization;
|
||||
using Windows.Storage;
|
||||
using HutaoAnnouncement = Snap.Hutao.Web.Hutao.HutaoAsAService.Announcement;
|
||||
|
||||
namespace Snap.Hutao.Service.Hutao;
|
||||
|
||||
[ConstructorGenerated]
|
||||
[Injection(InjectAs.Scoped, typeof(IHutaoAsAService))]
|
||||
internal sealed partial class HutaoAsAService : IHutaoAsAService
|
||||
{
|
||||
private const int AnnouncementDuration = 30;
|
||||
private readonly HutaoAsAServiceClient hutaoAsServiceClient;
|
||||
|
||||
private ObservableCollection<HutaoAnnouncement>? announcements;
|
||||
|
||||
public async ValueTask<ObservableCollection<HutaoAnnouncement>> GetHutaoAnnouncementCollectionAsync(CancellationToken token = default)
|
||||
{
|
||||
if (announcements is null)
|
||||
{
|
||||
RelayCommand<HutaoAnnouncement> dismissCommand = new(DismissAnnouncement);
|
||||
|
||||
ApplicationDataCompositeValue excludedIds = LocalSetting.Get(SettingKeys.ExcludedAnnouncementIds, new ApplicationDataCompositeValue());
|
||||
List<long> data = excludedIds.Select(kvp => long.Parse(kvp.Key, CultureInfo.InvariantCulture)).ToList();
|
||||
Response<List<HutaoAnnouncement>> respose = await hutaoAsServiceClient.GetAnnouncementListAsync(data, token).ConfigureAwait(false);
|
||||
|
||||
if (respose.IsOk())
|
||||
{
|
||||
List<HutaoAnnouncement> list = respose.Data;
|
||||
list.ForEach(item => item.DismissCommand = dismissCommand);
|
||||
announcements = list.ToObservableCollection();
|
||||
}
|
||||
else
|
||||
{
|
||||
return new();
|
||||
}
|
||||
}
|
||||
|
||||
return announcements;
|
||||
}
|
||||
|
||||
private void DismissAnnouncement(HutaoAnnouncement? announcement)
|
||||
{
|
||||
if (announcement is not null && announcements is not null)
|
||||
{
|
||||
ApplicationDataCompositeValue excludedIds = LocalSetting.Get(SettingKeys.ExcludedAnnouncementIds, new ApplicationDataCompositeValue());
|
||||
|
||||
foreach ((string key, object value) in excludedIds)
|
||||
{
|
||||
if (value is DateTimeOffset time && time < DateTimeOffset.Now - TimeSpan.FromDays(AnnouncementDuration))
|
||||
{
|
||||
excludedIds.Remove(key);
|
||||
}
|
||||
}
|
||||
|
||||
excludedIds.TryAdd($"{announcement.Id}", DateTimeOffset.Now + TimeSpan.FromDays(AnnouncementDuration));
|
||||
LocalSetting.Set(SettingKeys.ExcludedAnnouncementIds, excludedIds);
|
||||
|
||||
announcements.Remove(announcement);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -143,7 +143,7 @@ internal sealed partial class HutaoCache : IHutaoCache
|
||||
List<AvatarCollocation> avatarCollocationsRaw;
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
IHutaoService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoService>();
|
||||
IHutaoSpiralAbyssService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoSpiralAbyssService>();
|
||||
avatarCollocationsRaw = await hutaoService.GetAvatarCollocationsAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ internal sealed partial class HutaoCache : IHutaoCache
|
||||
List<WeaponCollocation> weaponCollocationsRaw;
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
IHutaoService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoService>();
|
||||
IHutaoSpiralAbyssService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoSpiralAbyssService>();
|
||||
weaponCollocationsRaw = await hutaoService.GetWeaponCollocationsAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -178,7 +178,7 @@ internal sealed partial class HutaoCache : IHutaoCache
|
||||
List<AvatarAppearanceRank> avatarAppearanceRanksRaw;
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
IHutaoService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoService>();
|
||||
IHutaoSpiralAbyssService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoSpiralAbyssService>();
|
||||
avatarAppearanceRanksRaw = await hutaoService.GetAvatarAppearanceRanksAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ internal sealed partial class HutaoCache : IHutaoCache
|
||||
List<AvatarUsageRank> avatarUsageRanksRaw;
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
IHutaoService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoService>();
|
||||
IHutaoSpiralAbyssService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoSpiralAbyssService>();
|
||||
avatarUsageRanksRaw = await hutaoService.GetAvatarUsageRanksAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ internal sealed partial class HutaoCache : IHutaoCache
|
||||
List<AvatarConstellationInfo> avatarConstellationInfosRaw;
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
IHutaoService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoService>();
|
||||
IHutaoSpiralAbyssService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoSpiralAbyssService>();
|
||||
avatarConstellationInfosRaw = await hutaoService.GetAvatarConstellationInfosAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -228,7 +228,7 @@ internal sealed partial class HutaoCache : IHutaoCache
|
||||
List<TeamAppearance> teamAppearancesRaw;
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
IHutaoService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoService>();
|
||||
IHutaoSpiralAbyssService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoSpiralAbyssService>();
|
||||
teamAppearancesRaw = await hutaoService.GetTeamAppearancesAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -240,7 +240,7 @@ internal sealed partial class HutaoCache : IHutaoCache
|
||||
{
|
||||
using (IServiceScope scope = serviceProvider.CreateScope())
|
||||
{
|
||||
IHutaoService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoService>();
|
||||
IHutaoSpiralAbyssService hutaoService = scope.ServiceProvider.GetRequiredService<IHutaoSpiralAbyssService>();
|
||||
Overview = await hutaoService.GetOverviewAsync().ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,8 +12,8 @@ namespace Snap.Hutao.Service.Hutao;
|
||||
/// </summary>
|
||||
[HighQuality]
|
||||
[ConstructorGenerated]
|
||||
[Injection(InjectAs.Scoped, typeof(IHutaoService))]
|
||||
internal sealed partial class HutaoService : IHutaoService
|
||||
[Injection(InjectAs.Scoped, typeof(IHutaoSpiralAbyssService))]
|
||||
internal sealed partial class HutaoSpiralAbyssService : IHutaoSpiralAbyssService
|
||||
{
|
||||
private readonly TimeSpan cacheExpireTime = TimeSpan.FromHours(4);
|
||||
|
||||
@@ -67,7 +67,7 @@ internal sealed partial class HutaoService : IHutaoService
|
||||
private async ValueTask<T> FromCacheOrWebAsync<T>(string typeName, Func<CancellationToken, ValueTask<Response<T>>> taskFunc)
|
||||
where T : class, new()
|
||||
{
|
||||
string key = $"{nameof(HutaoService)}.Cache.{typeName}";
|
||||
string key = $"{nameof(HutaoSpiralAbyssService)}.Cache.{typeName}";
|
||||
if (memoryCache.TryGetValue(key, out object? cache))
|
||||
{
|
||||
T? t = cache as T;
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Snap.Hutao.Web.Hutao.SpiralAbyss;
|
||||
using Snap.Hutao.Web.Hutao;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Snap.Hutao.Service.Hutao;
|
||||
@@ -21,6 +21,7 @@ internal sealed class HutaoUserOptions : ObservableObject, IOptions<HutaoUserOpt
|
||||
private bool isHutaoCloudServiceAllowed;
|
||||
private bool isLicensedDeveloper;
|
||||
private string? gachaLogExpireAt;
|
||||
private bool isMaintainer;
|
||||
|
||||
/// <summary>
|
||||
/// 用户名
|
||||
@@ -47,6 +48,8 @@ internal sealed class HutaoUserOptions : ObservableObject, IOptions<HutaoUserOpt
|
||||
/// </summary>
|
||||
public bool IsLicensedDeveloper { get => isLicensedDeveloper; set => SetProperty(ref isLicensedDeveloper, value); }
|
||||
|
||||
public bool IsMaintainer { get => isMaintainer; set => SetProperty(ref isMaintainer, value); }
|
||||
|
||||
/// <summary>
|
||||
/// 祈愿记录服务到期时间
|
||||
/// </summary>
|
||||
@@ -89,6 +92,7 @@ internal sealed class HutaoUserOptions : ObservableObject, IOptions<HutaoUserOpt
|
||||
public void UpdateUserInfo(UserInfo userInfo)
|
||||
{
|
||||
IsLicensedDeveloper = userInfo.IsLicensedDeveloper;
|
||||
IsMaintainer = userInfo.IsMaintainer;
|
||||
GachaLogExpireAt = Regex.Unescape(SH.ServiceHutaoUserGachaLogExpiredAt).Format(userInfo.GachaLogExpireAt);
|
||||
IsCloudServiceAllowed = IsLicensedDeveloper || userInfo.GachaLogExpireAt > DateTimeOffset.Now;
|
||||
}
|
||||
|
||||
12
src/Snap.Hutao/Snap.Hutao/Service/Hutao/IHutaoAsAService.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Snap.Hutao.Web.Hutao.HutaoAsAService;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace Snap.Hutao.Service.Hutao;
|
||||
|
||||
internal interface IHutaoAsAService
|
||||
{
|
||||
ValueTask<ObservableCollection<Announcement>> GetHutaoAnnouncementCollectionAsync(CancellationToken token = default);
|
||||
}
|
||||
@@ -9,7 +9,7 @@ namespace Snap.Hutao.Service.Hutao;
|
||||
/// 胡桃 API 服务
|
||||
/// </summary>
|
||||
[HighQuality]
|
||||
internal interface IHutaoService
|
||||
internal interface IHutaoSpiralAbyssService
|
||||
{
|
||||
/// <summary>
|
||||
/// 异步获取角色上场率
|
||||
@@ -83,25 +83,11 @@
|
||||
<None Remove="Resource\Font\MiSans-Regular.ttf" />
|
||||
<None Remove="Resource\HutaoIconSourceTransparentBackgroundGradient1.png" />
|
||||
<None Remove="Resource\Icon\UI_AchievementIcon_3_3.png" />
|
||||
<None Remove="Resource\Icon\UI_BagTabIcon_Avatar.png" />
|
||||
<None Remove="Resource\Icon\UI_BagTabIcon_Weapon.png" />
|
||||
<None Remove="Resource\Icon\UI_BtnIcon_ActivityEntry.png" />
|
||||
<None Remove="Resource\Icon\UI_BtnIcon_Gacha.png" />
|
||||
<None Remove="Resource\Icon\UI_ChapterIcon_Hutao.png" />
|
||||
<None Remove="Resource\Icon\UI_GachaShowPanel_Bg_Weapon.png" />
|
||||
<None Remove="Resource\Icon\UI_GuideIcon_PlayMethod.png" />
|
||||
<None Remove="Resource\Icon\UI_HomeWorldTabIcon_2_Team.png" />
|
||||
<None Remove="Resource\Icon\UI_Icon_Achievement.png" />
|
||||
<None Remove="Resource\Icon\UI_Icon_BoostUp.png" />
|
||||
<None Remove="Resource\Icon\UI_Icon_Fetter.png" />
|
||||
<None Remove="Resource\Icon\UI_Icon_Locked.png" />
|
||||
<None Remove="Resource\Icon\UI_Icon_None.png" />
|
||||
<None Remove="Resource\Icon\UI_Icon_Tower_Star.png" />
|
||||
<None Remove="Resource\Icon\UI_ItemIcon_201.png" />
|
||||
<None Remove="Resource\Icon\UI_ItemIcon_210.png" />
|
||||
<None Remove="Resource\Icon\UI_MarkCustom_TagMonster.png" />
|
||||
<None Remove="Resource\Icon\UI_MarkTower.png" />
|
||||
<None Remove="Resource\Icon\UI_MarkTower_Tower.png" />
|
||||
<None Remove="Resource\Navigation\Achievement.png" />
|
||||
<None Remove="Resource\Navigation\Announcement.png" />
|
||||
<None Remove="Resource\Navigation\AvatarProperty.png" />
|
||||
@@ -133,6 +119,7 @@
|
||||
<None Remove="View\Control\LoadingViewSlim.xaml" />
|
||||
<None Remove="View\Control\SkillPivot.xaml" />
|
||||
<None Remove="View\Control\StatisticsCard.xaml" />
|
||||
<None Remove="View\Control\StatisticsSegmented.xaml" />
|
||||
<None Remove="View\Control\Webview2Viewer.xaml" />
|
||||
<None Remove="View\Dialog\AchievementArchiveCreateDialog.xaml" />
|
||||
<None Remove="View\Dialog\AchievementImportDialog.xaml" />
|
||||
@@ -142,6 +129,7 @@
|
||||
<None Remove="View\Dialog\GachaLogImportDialog.xaml" />
|
||||
<None Remove="View\Dialog\GachaLogRefreshProgressDialog.xaml" />
|
||||
<None Remove="View\Dialog\GachaLogUrlDialog.xaml" />
|
||||
<None Remove="View\Dialog\GeetestCustomUrlDialog.xaml" />
|
||||
<None Remove="View\Dialog\LaunchGameAccountNameDialog.xaml" />
|
||||
<None Remove="View\Dialog\LaunchGamePackageConvertDialog.xaml" />
|
||||
<None Remove="View\Dialog\SignInWebViewDialog.xaml" />
|
||||
@@ -168,7 +156,6 @@
|
||||
<None Remove="View\Page\WikiWeaponPage.xaml" />
|
||||
<None Remove="View\TitleView.xaml" />
|
||||
<None Remove="View\UserView.xaml" />
|
||||
<None Remove="View\WelcomeView.xaml" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Analyzer Files -->
|
||||
@@ -222,25 +209,11 @@
|
||||
<Content Include="Resource\Font\MiSans-Regular.ttf" />
|
||||
<Content Include="Resource\HutaoIconSourceTransparentBackgroundGradient1.png" />
|
||||
<Content Include="Resource\Icon\UI_AchievementIcon_3_3.png" />
|
||||
<Content Include="Resource\Icon\UI_BagTabIcon_Avatar.png" />
|
||||
<Content Include="Resource\Icon\UI_BagTabIcon_Weapon.png" />
|
||||
<Content Include="Resource\Icon\UI_BtnIcon_ActivityEntry.png" />
|
||||
<Content Include="Resource\Icon\UI_BtnIcon_Gacha.png" />
|
||||
<Content Include="Resource\Icon\UI_ChapterIcon_Hutao.png" />
|
||||
<Content Include="Resource\Icon\UI_GachaShowPanel_Bg_Weapon.png" />
|
||||
<Content Include="Resource\Icon\UI_GuideIcon_PlayMethod.png" />
|
||||
<Content Include="Resource\Icon\UI_HomeWorldTabIcon_2_Team.png" />
|
||||
<Content Include="Resource\Icon\UI_Icon_Achievement.png" />
|
||||
<Content Include="Resource\Icon\UI_Icon_BoostUp.png" />
|
||||
<Content Include="Resource\Icon\UI_Icon_Fetter.png" />
|
||||
<Content Include="Resource\Icon\UI_Icon_Locked.png" />
|
||||
<Content Include="Resource\Icon\UI_Icon_None.png" />
|
||||
<Content Include="Resource\Icon\UI_Icon_Tower_Star.png" />
|
||||
<Content Include="Resource\Icon\UI_ItemIcon_201.png" />
|
||||
<Content Include="Resource\Icon\UI_ItemIcon_210.png" />
|
||||
<Content Include="Resource\Icon\UI_MarkCustom_TagMonster.png" />
|
||||
<Content Include="Resource\Icon\UI_MarkTower.png" />
|
||||
<Content Include="Resource\Icon\UI_MarkTower_Tower.png" />
|
||||
<Content Include="Resource\Navigation\Achievement.png" />
|
||||
<Content Include="Resource\Navigation\Announcement.png" />
|
||||
<Content Include="Resource\Navigation\AvatarProperty.png" />
|
||||
@@ -259,17 +232,18 @@
|
||||
<!-- Packages -->
|
||||
<ItemGroup>
|
||||
<!-- https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-Labs/nuget/v3/index.json -->
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.Controls.DataTable" Version="0.1.230802" />
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.Shimmer" Version="0.1.230802" />
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.TokenView" Version="0.1.230802" />
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.TransitionHelper" Version="0.1.230802" />
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.Controls.DataTable" Version="0.1.230809" />
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.MarqueeText" Version="0.1.230809" />
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.Shimmer" Version="0.1.230809" />
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.TokenView" Version="0.1.230809" />
|
||||
<PackageReference Include="CommunityToolkit.Labs.WinUI.TransitionHelper" Version="0.1.230809" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2-build.1" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Behaviors" Version="8.0.230809-preview" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Controls.HeaderedControls" Version="8.0.230809-preview" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Controls.Primitives" Version="8.0.230809-preview" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Controls.Segmented" Version="8.0.230809-preview" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Controls.SettingsControls" Version="8.0.230809-preview" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Media" Version="8.0.230809-preview" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Behaviors" Version="8.0.230828-rc" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Controls.HeaderedControls" Version="8.0.230828-rc" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Controls.Primitives" Version="8.0.230828-rc" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Controls.Segmented" Version="8.0.230828-rc" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Controls.SettingsControls" Version="8.0.230828-rc" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Media" Version="8.0.230828-rc" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.Notifications" Version="7.1.2" />
|
||||
<PackageReference Include="CommunityToolkit.WinUI.UI.Controls.Core" Version="7.1.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.10" />
|
||||
@@ -325,6 +299,18 @@
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Page Update="View\Control\StatisticsSegmented.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Page Update="View\Dialog\GeetestCustomUrlDialog.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Page Update="View\Control\Webview2Viewer.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@@ -397,11 +383,6 @@
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Update="View\WelcomeView.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Update="View\Page\TestPage.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
|
||||
@@ -21,60 +21,74 @@
|
||||
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<Grid>
|
||||
<FlipView
|
||||
x:Name="RootFlipView"
|
||||
Background="{x:Null}"
|
||||
ItemsSource="{Binding StatisticsList}"
|
||||
Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<FlipView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Margin="12">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Grid.Row="0" Text="{shcm:ResourceString Name=ViewCardAchievementStatisticsTitle}"/>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Right"
|
||||
Text="{Binding DisplayName}"/>
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Margin="0,4,0,0"
|
||||
Style="{StaticResource TitleTextBlockStyle}"
|
||||
Text="{Binding FinishDescription}"/>
|
||||
<ItemsControl Grid.Row="2" ItemsSource="{Binding Achievements}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Margin="0,4,0,0">
|
||||
<TextBlock
|
||||
Opacity="0.8"
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{Binding Inner.Title}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding Time}"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</FlipView.ItemTemplate>
|
||||
</FlipView>
|
||||
<Grid Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<Grid Visibility="{Binding StatisticsList.Count, Converter={StaticResource Int32ToVisibilityConverter}}">
|
||||
<FlipView
|
||||
x:Name="RootFlipView"
|
||||
Background="{x:Null}"
|
||||
ItemsSource="{Binding StatisticsList}">
|
||||
<FlipView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Margin="12">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Grid.Row="0" Text="{shcm:ResourceString Name=ViewCardAchievementStatisticsTitle}"/>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Right"
|
||||
Text="{Binding DisplayName}"/>
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Margin="0,4,0,0"
|
||||
Style="{StaticResource TitleTextBlockStyle}"
|
||||
Text="{Binding FinishDescription}"/>
|
||||
<ItemsControl Grid.Row="2" ItemsSource="{Binding Achievements}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Margin="0,4,0,0">
|
||||
<TextBlock
|
||||
Opacity="0.8"
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{Binding Inner.Title}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding Time}"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</FlipView.ItemTemplate>
|
||||
</FlipView>
|
||||
|
||||
<PipsPager
|
||||
Height="16"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
NumberOfPages="{Binding StatisticsList.Count}"
|
||||
SelectedPageIndex="{x:Bind Path=RootFlipView.SelectedIndex, Mode=TwoWay}"/>
|
||||
</Grid>
|
||||
|
||||
<StackPanel
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Visibility="{Binding StatisticsList.Count, Converter={StaticResource Int32ToVisibilityRevertConverter}}">
|
||||
<Image
|
||||
Width="80"
|
||||
Height="80"
|
||||
Source="ms-appx:///Resource/Navigation/Achievement.png"/>
|
||||
<TextBlock HorizontalAlignment="Center" Text="{shcm:ResourceString Name=ViewAchievementHeader}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<PipsPager
|
||||
Height="16"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
NumberOfPages="{Binding StatisticsList.Count}"
|
||||
SelectedPageIndex="{x:Bind Path=RootFlipView.SelectedIndex, Mode=TwoWay}"
|
||||
Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
<shvc:LoadingViewSlim IsLoading="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}"/>
|
||||
</Grid>
|
||||
</Button>
|
||||
@@ -6,10 +6,11 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mxi="using:Microsoft.Xaml.Interactivity"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shch="using:Snap.Hutao.Control.Helper"
|
||||
xmlns:shci="using:Snap.Hutao.Control.Image"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shvc="using:Snap.Hutao.View.Control"
|
||||
xmlns:shvd="using:Snap.Hutao.ViewModel.DailyNote"
|
||||
xmlns:shvh="using:Snap.Hutao.View.Helper"
|
||||
Padding="0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
@@ -23,161 +24,175 @@
|
||||
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<Grid>
|
||||
<FlipView
|
||||
x:Name="RootFlipView"
|
||||
Background="{x:Null}"
|
||||
ItemsSource="{Binding DailyNoteEntries}"
|
||||
Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<FlipView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid
|
||||
Margin="12"
|
||||
ColumnSpacing="6"
|
||||
RowSpacing="6">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<Grid Visibility="{Binding DailyNoteEntries.Count, Converter={StaticResource Int32ToVisibilityConverter}}">
|
||||
<FlipView
|
||||
x:Name="RootFlipView"
|
||||
Background="{x:Null}"
|
||||
ItemsSource="{Binding DailyNoteEntries}">
|
||||
<FlipView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid
|
||||
Margin="12"
|
||||
ColumnSpacing="6"
|
||||
RowSpacing="6">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding Uid}"/>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding RefreshTimeFormatted}"/>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding Uid}"/>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding RefreshTimeFormatted}"/>
|
||||
|
||||
<Grid
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
RowSpacing="6">
|
||||
<Grid
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
RowSpacing="6">
|
||||
|
||||
<Grid Grid.Row="1" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shvh:FrameworkElementHelper.SquareLength="64" Source="{StaticResource UI_ItemIcon_210}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.ResinFormatted}"/>
|
||||
</StackPanel>
|
||||
<InfoBadge
|
||||
Margin="8"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
shvh:FrameworkElementHelper.SquareLength="8"
|
||||
Style="{ThemeResource AttentionDotInfoBadgeStyle}"
|
||||
Visibility="{Binding ResinNotifySuppressed, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
<Grid Grid.Row="1" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shch:FrameworkElementHelper.SquareLength="64" Source="{StaticResource UI_ItemIcon_210}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.ResinFormatted}"/>
|
||||
</StackPanel>
|
||||
<InfoBadge
|
||||
Margin="8"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
shch:FrameworkElementHelper.SquareLength="8"
|
||||
Style="{ThemeResource AttentionDotInfoBadgeStyle}"
|
||||
Visibility="{Binding ResinNotifySuppressed, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Grid
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
RowSpacing="6">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Grid.Row="0" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shch:FrameworkElementHelper.SquareLength="32" Source="{StaticResource UI_ItemIcon_204}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.HomeCoinFormatted}"/>
|
||||
</StackPanel>
|
||||
<InfoBadge
|
||||
Margin="8"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
shch:FrameworkElementHelper.SquareLength="8"
|
||||
Style="{ThemeResource AttentionDotInfoBadgeStyle}"
|
||||
Visibility="{Binding HomeCoinNotifySuppressed, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shch:FrameworkElementHelper.SquareLength="32" Source="{StaticResource UI_MarkQuest_Events_Proce}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.TaskFormatted}"/>
|
||||
</StackPanel>
|
||||
<InfoBadge
|
||||
Margin="8"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
shch:FrameworkElementHelper.SquareLength="8"
|
||||
Style="{ThemeResource AttentionDotInfoBadgeStyle}"
|
||||
Visibility="{Binding DailyTaskNotifySuppressed, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
<Grid
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
RowSpacing="6">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Grid.Row="0" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shch:FrameworkElementHelper.SquareLength="32" Source="{StaticResource UI_MarkTower}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.ResinDiscountFormatted}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shch:FrameworkElementHelper.SquareLength="32" Source="{StaticResource UI_ItemIcon_220021}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.Transformer.RecoveryTime.TimeLeftFormatted}"/>
|
||||
</StackPanel>
|
||||
<InfoBadge
|
||||
Margin="8"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
shch:FrameworkElementHelper.SquareLength="8"
|
||||
Style="{ThemeResource AttentionDotInfoBadgeStyle}"
|
||||
Visibility="{Binding TransformerNotifySuppressed, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</FlipView.ItemTemplate>
|
||||
</FlipView>
|
||||
|
||||
<Grid
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
RowSpacing="6">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<PipsPager
|
||||
Height="16"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
NumberOfPages="{Binding DailyNoteEntries.Count}"
|
||||
SelectedPageIndex="{x:Bind Path=RootFlipView.SelectedIndex, Mode=TwoWay}"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="0" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shvh:FrameworkElementHelper.SquareLength="32" Source="{StaticResource UI_ItemIcon_204}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.HomeCoinFormatted}"/>
|
||||
</StackPanel>
|
||||
<InfoBadge
|
||||
Margin="8"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
shvh:FrameworkElementHelper.SquareLength="8"
|
||||
Style="{ThemeResource AttentionDotInfoBadgeStyle}"
|
||||
Visibility="{Binding HomeCoinNotifySuppressed, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
</Grid>
|
||||
<StackPanel
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Visibility="{Binding DailyNoteEntries.Count, Converter={StaticResource Int32ToVisibilityRevertConverter}}">
|
||||
<Image
|
||||
Width="80"
|
||||
Height="80"
|
||||
Source="ms-appx:///Resource/Navigation/DailyNote.png"/>
|
||||
<TextBlock HorizontalAlignment="Center" Text="{shcm:ResourceString Name=ViewDailyNoteHeader}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shvh:FrameworkElementHelper.SquareLength="32" Source="{StaticResource UI_MarkQuest_Events_Proce}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.TaskFormatted}"/>
|
||||
</StackPanel>
|
||||
<InfoBadge
|
||||
Margin="8"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
shvh:FrameworkElementHelper.SquareLength="8"
|
||||
Style="{ThemeResource AttentionDotInfoBadgeStyle}"
|
||||
Visibility="{Binding DailyTaskNotifySuppressed, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
<Grid
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
RowSpacing="6">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Grid.Row="0" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shvh:FrameworkElementHelper.SquareLength="32" Source="{StaticResource UI_MarkTower}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.ResinDiscountFormatted}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" Style="{StaticResource BorderGridStyle}">
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<shci:CachedImage shvh:FrameworkElementHelper.SquareLength="32" Source="{StaticResource UI_ItemIcon_220021}"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.Transformer.RecoveryTime.TimeLeftFormatted}"/>
|
||||
</StackPanel>
|
||||
<InfoBadge
|
||||
Margin="8"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
shvh:FrameworkElementHelper.SquareLength="8"
|
||||
Style="{ThemeResource AttentionDotInfoBadgeStyle}"
|
||||
Visibility="{Binding TransformerNotifySuppressed, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</FlipView.ItemTemplate>
|
||||
</FlipView>
|
||||
|
||||
<PipsPager
|
||||
Height="16"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
NumberOfPages="{Binding DailyNoteEntries.Count}"
|
||||
SelectedPageIndex="{x:Bind Path=RootFlipView.SelectedIndex, Mode=TwoWay}"
|
||||
Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
<shvc:LoadingViewSlim IsLoading="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}"/>
|
||||
</Grid>
|
||||
</Button>
|
||||
@@ -26,283 +26,298 @@
|
||||
<x:Double x:Key="GachaStatisticsCardPullProgressBarMinHeight">40</x:Double>
|
||||
<Thickness x:Key="GachaStatisticsCardPullProgressHeaderTextMargin">6,0</Thickness>
|
||||
</Grid.Resources>
|
||||
<FlipView
|
||||
x:Name="RootFlipView"
|
||||
Background="{x:Null}"
|
||||
ItemsSource="{Binding StatisticsList}"
|
||||
Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<FlipView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Margin="12" ColumnSpacing="6">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.ColumnSpan="3"
|
||||
Text="{shcm:ResourceString Name=ViewCardGachaStatisticsTitle}"/>
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.ColumnSpan="3"
|
||||
HorizontalAlignment="Right"
|
||||
Text="{Binding Uid}"/>
|
||||
|
||||
<StackPanel
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
DataContext="{Binding AvatarWish}"
|
||||
Spacing="6">
|
||||
|
||||
<TextBlock
|
||||
Margin="0,0,0,6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{Binding Name}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
|
||||
<Grid Grid.Column="0" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<Grid Visibility="{Binding StatisticsList.Count, Converter={StaticResource Int32ToVisibilityConverter}}">
|
||||
<FlipView
|
||||
x:Name="RootFlipView"
|
||||
Background="{x:Null}"
|
||||
ItemsSource="{Binding StatisticsList}">
|
||||
<FlipView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Margin="12" ColumnSpacing="6">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Maximum="{Binding GuaranteeOrangeThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastOrangePull}"/>
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.ColumnSpan="3"
|
||||
Text="{shcm:ResourceString Name=ViewCardGachaStatisticsTitle}"/>
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.ColumnSpan="3"
|
||||
HorizontalAlignment="Right"
|
||||
Text="{Binding Uid}"/>
|
||||
|
||||
<StackPanel
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<TextBlock
|
||||
DataContext="{Binding AvatarWish}"
|
||||
Spacing="6">
|
||||
|
||||
<TextBlock
|
||||
Margin="0,0,0,6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{Binding Name}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
|
||||
<Grid Grid.Column="0" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Maximum="{Binding GuaranteeOrangeThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastOrangePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastOrangePull}"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="1" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Maximum="{Binding GuaranteePurpleThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastPurplePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastPurplePull}"/>
|
||||
</Grid>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastOrangePull}"/>
|
||||
DataContext="{Binding WeaponWish}"
|
||||
Spacing="6">
|
||||
|
||||
<TextBlock
|
||||
Margin="0,0,0,6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{Binding Name}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
|
||||
<Grid Grid.Column="0" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Maximum="{Binding GuaranteeOrangeThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastOrangePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastOrangePull}"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="1" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Maximum="{Binding GuaranteePurpleThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastPurplePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastPurplePull}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
DataContext="{Binding StandardWish}"
|
||||
Spacing="6">
|
||||
<TextBlock
|
||||
Margin="0,0,0,6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{Binding Name}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<Grid Grid.Column="0" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Maximum="{Binding GuaranteeOrangeThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastOrangePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastOrangePull}"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="1" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Maximum="{Binding GuaranteePurpleThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastPurplePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastPurplePull}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</FlipView.ItemTemplate>
|
||||
</FlipView>
|
||||
|
||||
<Grid Grid.Column="1" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Maximum="{Binding GuaranteePurpleThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastPurplePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastPurplePull}"/>
|
||||
</Grid>
|
||||
<PipsPager
|
||||
Height="16"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
NumberOfPages="{Binding StatisticsList.Count}"
|
||||
SelectedPageIndex="{x:Bind Path=RootFlipView.SelectedIndex, Mode=TwoWay}"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
DataContext="{Binding WeaponWish}"
|
||||
Spacing="6">
|
||||
|
||||
<TextBlock
|
||||
Margin="0,0,0,6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{Binding Name}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
|
||||
<Grid Grid.Column="0" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Maximum="{Binding GuaranteeOrangeThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastOrangePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastOrangePull}"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="1" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Maximum="{Binding GuaranteePurpleThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastPurplePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastPurplePull}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
DataContext="{Binding StandardWish}"
|
||||
Spacing="6">
|
||||
<TextBlock
|
||||
Margin="0,0,0,6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{Binding Name}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<Grid Grid.Column="0" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Maximum="{Binding GuaranteeOrangeThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastOrangePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastOrangePull}"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="1" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar
|
||||
Grid.ColumnSpan="2"
|
||||
MinHeight="{StaticResource GachaStatisticsCardPullProgressBarMinHeight}"
|
||||
Background="Transparent"
|
||||
CornerRadius="{StaticResource CompatCornerRadius}"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Maximum="{Binding GuaranteePurpleThreshold}"
|
||||
Opacity="{StaticResource LargeBackgroundProgressBarOpacity}"
|
||||
Style="{StaticResource DefaultProgressBarStyle}"
|
||||
Value="{Binding LastPurplePull}"/>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource GachaStatisticsCardPullProgressHeaderTextMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource PurpleBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding LastPurplePull}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</FlipView.ItemTemplate>
|
||||
</FlipView>
|
||||
|
||||
<PipsPager
|
||||
Height="16"
|
||||
<StackPanel
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
NumberOfPages="{Binding StatisticsList.Count}"
|
||||
SelectedPageIndex="{x:Bind Path=RootFlipView.SelectedIndex, Mode=TwoWay}"
|
||||
Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
VerticalAlignment="Center"
|
||||
Visibility="{Binding StatisticsList.Count, Converter={StaticResource Int32ToVisibilityRevertConverter}}">
|
||||
<Image
|
||||
Width="80"
|
||||
Height="80"
|
||||
Source="ms-appx:///Resource/Navigation/GachaLog.png"/>
|
||||
<TextBlock HorizontalAlignment="Center" Text="{shcm:ResourceString Name=ViewGachaLogHeader}"/>
|
||||
</StackPanel>
|
||||
|
||||
<shvc:LoadingViewSlim IsLoading="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}"/>
|
||||
</Grid>
|
||||
</Button>
|
||||
</Button>
|
||||
@@ -116,7 +116,7 @@ internal sealed partial class AnnouncementContentViewer : UserControl
|
||||
|
||||
<body style="{{(isDarkMode ? LightColor1 : DarkColor1)}}; background-color: transparent;">
|
||||
<h3>{{announcement.Title}}</h3>
|
||||
<img src="{{announcement.Banner}}" />
|
||||
<img src="{{announcement.Banner}}"/>
|
||||
<br>
|
||||
{{content}}
|
||||
</body>
|
||||
|
||||
@@ -2,15 +2,14 @@
|
||||
x:Class="Snap.Hutao.View.Control.HutaoStatisticsCard"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:cwucont="using:CommunityToolkit.WinUI.UI.Controls"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:shch="using:Snap.Hutao.Control.Helper"
|
||||
xmlns:shci="using:Snap.Hutao.Control.Image"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shcp="using:Snap.Hutao.Control.Panel"
|
||||
xmlns:shvcont="using:Snap.Hutao.View.Control"
|
||||
xmlns:shvg="using:Snap.Hutao.ViewModel.GachaLog"
|
||||
xmlns:shvh="using:Snap.Hutao.View.Helper"
|
||||
d:DataContext="{d:DesignInstance shvg:HutaoWishSummary}"
|
||||
mc:Ignorable="d">
|
||||
|
||||
@@ -22,7 +21,7 @@
|
||||
Style="{StaticResource BorderCardStyle}">
|
||||
<StackPanel>
|
||||
<shvcont:ItemIcon
|
||||
shvh:FrameworkElementHelper.SquareLength="40"
|
||||
shch:FrameworkElementHelper.SquareLength="40"
|
||||
Icon="{Binding Icon}"
|
||||
Quality="{Binding Quality}"/>
|
||||
<TextBlock
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
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:shch="using:Snap.Hutao.Control.Helper"
|
||||
xmlns:shci="using:Snap.Hutao.Control.Image"
|
||||
xmlns:shmmc="using:Snap.Hutao.Model.Metadata.Converter"
|
||||
xmlns:shvh="using:Snap.Hutao.View.Helper"
|
||||
shvh:FrameworkElementHelper.SquareLength="80"
|
||||
shch:FrameworkElementHelper.SquareLength="80"
|
||||
mc:Ignorable="d">
|
||||
<UserControl.Resources>
|
||||
<shmmc:QualityConverter x:Key="QualityConverter"/>
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
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:shch="using:Snap.Hutao.Control.Helper"
|
||||
xmlns:shci="using:Snap.Hutao.Control.Image"
|
||||
xmlns:shmmc="using:Snap.Hutao.Model.Metadata.Converter"
|
||||
xmlns:shvh="using:Snap.Hutao.View.Helper"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<UserControl.Resources>
|
||||
@@ -26,7 +26,7 @@
|
||||
<Pivot.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel>
|
||||
<shci:MonoChrome shvh:FrameworkElementHelper.SquareLength="36" Source="{Binding Icon, Converter={StaticResource SkillIconConverter}}"/>
|
||||
<shci:MonoChrome shch:FrameworkElementHelper.SquareLength="36" Source="{Binding Icon, Converter={StaticResource SkillIconConverter}}"/>
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
|
||||
@@ -2,19 +2,17 @@
|
||||
x:Class="Snap.Hutao.View.Control.StatisticsCard"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:clws="using:CommunityToolkit.Labs.WinUI"
|
||||
xmlns:cwc="using:CommunityToolkit.WinUI.Controls"
|
||||
xmlns:cwuc="using:CommunityToolkit.WinUI.UI.Converters"
|
||||
xmlns:cwucont="using:CommunityToolkit.WinUI.UI.Controls"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:shc="using:Snap.Hutao.Control"
|
||||
xmlns:shch="using:Snap.Hutao.Control.Helper"
|
||||
xmlns:shci="using:Snap.Hutao.Control.Image"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shcp="using:Snap.Hutao.Control.Panel"
|
||||
xmlns:shvcont="using:Snap.Hutao.View.Control"
|
||||
xmlns:shvconv="using:Snap.Hutao.View.Converter"
|
||||
xmlns:shvg="using:Snap.Hutao.ViewModel.GachaLog"
|
||||
xmlns:shvh="using:Snap.Hutao.View.Helper"
|
||||
d:DataContext="{d:DesignInstance shvg:TypedWishSummary}"
|
||||
mc:Ignorable="d">
|
||||
|
||||
@@ -22,7 +20,7 @@
|
||||
<shvconv:Int32ToGradientColorConverter x:Key="Int32ToGradientColorConverter" MaximumValue="{Binding GuaranteeOrangeThreshold}"/>
|
||||
|
||||
<DataTemplate x:Key="OrangeListTemplate" d:DataType="shvg:SummaryItem">
|
||||
<Grid Margin="0,4,0,0" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid Margin="0" Style="{StaticResource BorderGridStyle}">
|
||||
<ToolTipService.ToolTip>
|
||||
<TextBlock Text="{Binding TimeFormatted}"/>
|
||||
</ToolTipService.ToolTip>
|
||||
@@ -41,7 +39,7 @@
|
||||
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<shci:CachedImage
|
||||
shvh:FrameworkElementHelper.SquareLength="40"
|
||||
shch:FrameworkElementHelper.SquareLength="40"
|
||||
CornerRadius="{ThemeResource ControlCornerRadius}"
|
||||
Source="{Binding Icon}"/>
|
||||
<TextBlock
|
||||
@@ -86,21 +84,18 @@
|
||||
TrueValue="{ThemeResource CardBackgroundFillColorDefaultBrush}"/>
|
||||
|
||||
<DataTemplate x:Key="OrangeGridTemplate" d:DataType="shvg:SummaryItem">
|
||||
<Border
|
||||
Margin="0,4,4,0"
|
||||
<shvcont:BottomTextSmallControl
|
||||
Background="{Binding IsUp, Converter={StaticResource BoolToBrushConverter}}"
|
||||
Style="{StaticResource BorderCardStyle}"
|
||||
Text="{Binding LastPull}"
|
||||
ToolTipService.ToolTip="{Binding TimeFormatted}">
|
||||
<shvcont:BottomTextSmallControl Text="{Binding LastPull}">
|
||||
<shvcont:BottomTextSmallControl.Foreground>
|
||||
<SolidColorBrush Color="{Binding Color}"/>
|
||||
</shvcont:BottomTextSmallControl.Foreground>
|
||||
<shvcont:ItemIcon
|
||||
shvh:FrameworkElementHelper.SquareLength="40"
|
||||
Icon="{Binding Icon}"
|
||||
Quality="{Binding Quality}"/>
|
||||
</shvcont:BottomTextSmallControl>
|
||||
</Border>
|
||||
<shvcont:BottomTextSmallControl.Foreground>
|
||||
<SolidColorBrush Color="{Binding Color}"/>
|
||||
</shvcont:BottomTextSmallControl.Foreground>
|
||||
<shvcont:ItemIcon
|
||||
shch:FrameworkElementHelper.SquareLength="40"
|
||||
Icon="{Binding Icon}"
|
||||
Quality="{Binding Quality}"/>
|
||||
</shvcont:BottomTextSmallControl>
|
||||
</DataTemplate>
|
||||
</UserControl.Resources>
|
||||
|
||||
@@ -237,15 +232,18 @@
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
<MenuFlyoutSeparator Margin="-12,0"/>
|
||||
<FlipView
|
||||
Name="StatisticsFilpView"
|
||||
Height="74"
|
||||
Margin="-16,0"
|
||||
VerticalAlignment="Top"
|
||||
Background="Transparent">
|
||||
|
||||
<FlipViewItem>
|
||||
<StackPanel Padding="16,12" Spacing="2">
|
||||
<shvcont:StatisticsSegmented
|
||||
x:Name="StatisticsSegmented"
|
||||
Margin="0,12,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
IsPredictPullAvailable="{Binding IsPredictPullAvailable}"
|
||||
SelectedIndex="0"/>
|
||||
<cwc:SwitchPresenter
|
||||
Height="85"
|
||||
Padding="0,12"
|
||||
Value="{x:Bind StatisticsSegmented.SelectedIndex, Mode=OneWay}">
|
||||
<cwc:Case Value="{shcm:Int32 Value=0}">
|
||||
<StackPanel Spacing="2">
|
||||
<Grid>
|
||||
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeAveragePullText}"/>
|
||||
<TextBlock
|
||||
@@ -276,18 +274,9 @@
|
||||
Text="{Binding MinOrangePullFormatted}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</FlipViewItem>
|
||||
<FlipViewItem>
|
||||
<StackPanel
|
||||
Margin="16,12"
|
||||
Spacing="2"
|
||||
Visibility="{Binding IsPredictPullAvailable, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="{Binding PredictedPullLeftToOrangeFormatted}"/>
|
||||
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="{Binding ProbabilityOfNextPullIsOrangeFormatted}"/>
|
||||
</StackPanel>
|
||||
</FlipViewItem>
|
||||
<FlipViewItem>
|
||||
<StackPanel Padding="16,12" Spacing="2">
|
||||
</cwc:Case>
|
||||
<cwc:Case Value="{shcm:Int32 Value=1}">
|
||||
<StackPanel Spacing="2">
|
||||
<Grid>
|
||||
<TextBlock
|
||||
Foreground="{StaticResource OrangeBrush}"
|
||||
@@ -325,40 +314,57 @@
|
||||
Text="{Binding TotalBlueFormatted}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</FlipViewItem>
|
||||
</FlipView>
|
||||
<PipsPager
|
||||
Height="16"
|
||||
Margin="0,-4,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
NumberOfPages="{x:Bind StatisticsFilpView.Items.Count}"
|
||||
SelectedPageIndex="{x:Bind StatisticsFilpView.SelectedIndex, Mode=TwoWay}"/>
|
||||
</cwc:Case>
|
||||
<cwc:Case Value="{shcm:Int32 Value=2}">
|
||||
<StackPanel Spacing="2">
|
||||
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="{Binding PredictedPullLeftToOrangeFormatted}"/>
|
||||
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="{Binding ProbabilityOfNextPullIsOrangeFormatted}"/>
|
||||
</StackPanel>
|
||||
</cwc:Case>
|
||||
</cwc:SwitchPresenter>
|
||||
<MenuFlyoutSeparator Margin="-12,0,-12,0"/>
|
||||
</StackPanel>
|
||||
|
||||
</Expander>
|
||||
<ScrollViewer
|
||||
<cwc:SwitchPresenter
|
||||
Grid.Row="2"
|
||||
Margin="12,6,12,12"
|
||||
VerticalScrollBarVisibility="Hidden">
|
||||
<cwucont:SwitchPresenter Value="{Binding ElementName=ItemsPanelSelector, Path=Current}">
|
||||
<cwucont:SwitchPresenter.ContentTransitions>
|
||||
<TransitionCollection>
|
||||
<ContentThemeTransition/>
|
||||
</TransitionCollection>
|
||||
</cwucont:SwitchPresenter.ContentTransitions>
|
||||
<cwucont:Case Value="List">
|
||||
<ItemsControl ItemTemplate="{StaticResource OrangeListTemplate}" ItemsSource="{Binding OrangeList}"/>
|
||||
</cwucont:Case>
|
||||
<cwucont:Case Value="Grid">
|
||||
<ItemsControl
|
||||
Margin="0,0,-4,0"
|
||||
ItemTemplate="{StaticResource OrangeGridTemplate}"
|
||||
ItemsPanel="{StaticResource WrapPanelTemplate}"
|
||||
ItemsSource="{Binding OrangeList}"/>
|
||||
</cwucont:Case>
|
||||
</cwucont:SwitchPresenter>
|
||||
</ScrollViewer>
|
||||
Value="{Binding ElementName=ItemsPanelSelector, Path=Current}">
|
||||
<cwc:SwitchPresenter.ContentTransitions>
|
||||
<TransitionCollection>
|
||||
<ContentThemeTransition/>
|
||||
</TransitionCollection>
|
||||
</cwc:SwitchPresenter.ContentTransitions>
|
||||
<cwc:Case Value="List">
|
||||
<ListView
|
||||
ItemTemplate="{StaticResource OrangeListTemplate}"
|
||||
ItemsSource="{Binding OrangeList}"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Hidden"
|
||||
SelectionMode="None">
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Margin" Value="0,4,0,0"/>
|
||||
</Style>
|
||||
</ListView.ItemContainerStyle>
|
||||
</ListView>
|
||||
</cwc:Case>
|
||||
<cwc:Case Value="Grid">
|
||||
<GridView
|
||||
Margin="0,0,-4,0"
|
||||
ItemTemplate="{StaticResource OrangeGridTemplate}"
|
||||
ItemsSource="{Binding OrangeList}"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Hidden"
|
||||
SelectionMode="None">
|
||||
<GridView.ItemContainerStyle>
|
||||
<Style BasedOn="{StaticResource DefaultGridViewItemStyle}" TargetType="GridViewItem">
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Margin" Value="0,0,2,4"/>
|
||||
</Style>
|
||||
</GridView.ItemContainerStyle>
|
||||
</GridView>
|
||||
</cwc:Case>
|
||||
</cwc:SwitchPresenter>
|
||||
</Grid>
|
||||
</Border>
|
||||
</UserControl>
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<cwc:Segmented
|
||||
x:Class="Snap.Hutao.View.Control.StatisticsSegmented"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:cwc="using:CommunityToolkit.WinUI.Controls"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
mc:Ignorable="d">
|
||||
<cwc:SegmentedItem Content="{shcm:ResourceString Name=ViewControlStatisticsSegmentedItemContentStatistics}" Icon="{shcm:FontIcon Glyph=}"/>
|
||||
<cwc:SegmentedItem Content="{shcm:ResourceString Name=ViewControlStatisticsSegmentedItemContentProportion}" Icon="{shcm:FontIcon Glyph=}"/>
|
||||
</cwc:Segmented>
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using CommunityToolkit.WinUI.Controls;
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Snap.Hutao.View.Control;
|
||||
|
||||
[DependencyProperty("IsPredictPullAvailable", typeof(bool), false, nameof(OnIsPredictPullAvailableChanged))]
|
||||
internal sealed partial class StatisticsSegmented : Segmented
|
||||
{
|
||||
private readonly SegmentedItem predictPullItem = new()
|
||||
{
|
||||
Content = SH.ViewControlStatisticsSegmentedItemContentPrediction,
|
||||
Icon = new FontIcon() { Glyph = "\uEA80" },
|
||||
};
|
||||
|
||||
public StatisticsSegmented()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private static void OnIsPredictPullAvailableChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
StatisticsSegmented segmented = (StatisticsSegmented)obj;
|
||||
if (args.NewValue is true)
|
||||
{
|
||||
segmented.Items.Add(segmented.predictPullItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
segmented.Items.RemoveLast();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,9 +14,9 @@
|
||||
|
||||
<Grid>
|
||||
<TextBox
|
||||
x:Name="InputText"
|
||||
Margin="0,0,0,8"
|
||||
VerticalAlignment="Top"
|
||||
PlaceholderText="{shcm:ResourceString Name=ViewDialogAchievementArchiveCreateInputPlaceholder}"/>
|
||||
PlaceholderText="{shcm:ResourceString Name=ViewDialogAchievementArchiveCreateInputPlaceholder}"
|
||||
Text="{x:Bind Text, Mode=TwoWay}"/>
|
||||
</Grid>
|
||||
</ContentDialog>
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace Snap.Hutao.View.Dialog;
|
||||
/// 成就存档创建对话框
|
||||
/// </summary>
|
||||
[HighQuality]
|
||||
[DependencyProperty("Text", typeof(string))]
|
||||
internal sealed partial class AchievementArchiveCreateDialog : ContentDialog
|
||||
{
|
||||
private readonly ITaskContext taskContext;
|
||||
@@ -33,8 +34,6 @@ internal sealed partial class AchievementArchiveCreateDialog : ContentDialog
|
||||
{
|
||||
await taskContext.SwitchToMainThreadAsync();
|
||||
ContentDialogResult result = await ShowAsync();
|
||||
string text = InputText.Text ?? string.Empty;
|
||||
|
||||
return new(result == ContentDialogResult.Primary, text);
|
||||
return new(result == ContentDialogResult.Primary, Text ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<TextBox
|
||||
VerticalAlignment="Top"
|
||||
PlaceholderText="{shcm:ResourceString Name=ViewDialogCultivateProjectInputPlaceholder}"
|
||||
Text="{x:Bind Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
Text="{x:Bind Text, Mode=TwoWay}"/>
|
||||
<CheckBox
|
||||
Margin="0,8,0,0"
|
||||
Content="{shcm:ResourceString Name=ViewDialogCultivateProjectAttachUid}"
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
xmlns:cwc="using:CommunityToolkit.WinUI.Controls"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:shch="using:Snap.Hutao.Control.Helper"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shvc="using:Snap.Hutao.View.Control"
|
||||
xmlns:shvh="using:Snap.Hutao.View.Helper"
|
||||
Title="{shcm:ResourceString Name=ViewDialogGachaLogRefreshProgressTitle}"
|
||||
Style="{StaticResource DefaultContentDialogStyle}"
|
||||
mc:Ignorable="d">
|
||||
@@ -15,7 +15,7 @@
|
||||
<ContentDialog.Resources>
|
||||
<DataTemplate x:Key="GachaItemDataTemplate">
|
||||
<shvc:ItemIcon
|
||||
shvh:FrameworkElementHelper.SquareLength="60"
|
||||
shch:FrameworkElementHelper.SquareLength="60"
|
||||
Badge="{Binding Badge}"
|
||||
Icon="{Binding Icon}"
|
||||
Quality="{Binding Quality}"/>
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
<ContentDialog
|
||||
x:Class="Snap.Hutao.View.Dialog.GeetestCustomUrlDialog"
|
||||
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:shcm="using:Snap.Hutao.Control.Markup"
|
||||
Title="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlTitle}"
|
||||
CloseButtonText="{shcm:ResourceString Name=ContentDialogCancelCloseButtonText}"
|
||||
DefaultButton="Primary"
|
||||
PrimaryButtonText="{shcm:ResourceString Name=ContentDialogConfirmPrimaryButtonText}"
|
||||
Style="{StaticResource DefaultContentDialogStyle}"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<StackPanel>
|
||||
<TextBlock
|
||||
Margin="1,0,0,5"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlReturnDataHeader}"/>
|
||||
<Border
|
||||
Margin="0,4,0,0"
|
||||
Padding="0,8,8,8"
|
||||
Style="{ThemeResource BorderCardStyle}">
|
||||
<TextBlock FontFamily="{StaticResource CascadiaMonoAndMiSans}" Style="{StaticResource CaptionTextBlockStyle}">
|
||||
<TextBlock.Inlines>
|
||||
<Run Text="{} {"/>
|
||||
<LineBreak/>
|
||||
<Run Text=" "code": 0,"/>
|
||||
<LineBreak/>
|
||||
<Run Text=" "data": {"/>
|
||||
<LineBreak/>
|
||||
<Run Text=" "gt": "same gt below","/>
|
||||
<LineBreak/>
|
||||
<Run Text=" "challenge": "same challenge below","/>
|
||||
<LineBreak/>
|
||||
<Run Text=" "validate": "validation result""/>
|
||||
<LineBreak/>
|
||||
<Run Text=" }"/>
|
||||
<LineBreak/>
|
||||
<Run Text="{}}"/>
|
||||
</TextBlock.Inlines>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
<TextBlock
|
||||
Margin="0,4,0,0"
|
||||
FontFamily="{StaticResource CascadiaMonoAndMiSans}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlReturnDataDescription1}"/>
|
||||
<TextBlock
|
||||
Margin="0,4,0,0"
|
||||
FontFamily="{StaticResource CascadiaMonoAndMiSans}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlReturnDataDescription2}"/>
|
||||
|
||||
<TextBlock
|
||||
Margin="1,15,0,5"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlSampleHeader}"/>
|
||||
<Border
|
||||
Margin="0,4,0,0"
|
||||
Padding="8"
|
||||
Style="{ThemeResource BorderCardStyle}">
|
||||
<TextBlock
|
||||
FontFamily="{StaticResource CascadiaMonoAndMiSans}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="https://my.api.com/geetest?gt={0}&challenge={1}"/>
|
||||
</Border>
|
||||
<TextBlock
|
||||
Margin="0,4,0,0"
|
||||
FontFamily="{StaticResource CascadiaMonoAndMiSans}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlSampleDescription1}"/>
|
||||
<TextBlock
|
||||
Margin="0,2,0,0"
|
||||
FontFamily="{StaticResource CascadiaMonoAndMiSans}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlSampleDescription2}"/>
|
||||
<TextBlock
|
||||
Margin="0,2,0,0"
|
||||
FontFamily="{StaticResource CascadiaMonoAndMiSans}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlSampleDescription3}"/>
|
||||
<TextBox
|
||||
Margin="0,16,0,0"
|
||||
PlaceholderText="{shcm:ResourceString Name=ViewDialogGeetestCustomUrlCompositInputHint}"
|
||||
Text="{x:Bind Text, Mode=TwoWay}"/>
|
||||
</StackPanel>
|
||||
|
||||
</ContentDialog>
|
||||
@@ -0,0 +1,28 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Snap.Hutao.Service;
|
||||
|
||||
namespace Snap.Hutao.View.Dialog;
|
||||
|
||||
[DependencyProperty("Text", typeof(string))]
|
||||
internal sealed partial class GeetestCustomUrlDialog : ContentDialog
|
||||
{
|
||||
private readonly ITaskContext taskContext;
|
||||
|
||||
public GeetestCustomUrlDialog(IServiceProvider serviceProvider)
|
||||
{
|
||||
InitializeComponent();
|
||||
XamlRoot = serviceProvider.GetRequiredService<MainWindow>().Content.XamlRoot;
|
||||
Text = serviceProvider.GetRequiredService<AppOptions>().GeetestCustomCompositeUrl;
|
||||
taskContext = serviceProvider.GetRequiredService<ITaskContext>();
|
||||
}
|
||||
|
||||
public async ValueTask<ValueResult<bool, string>> GetUrlAsync()
|
||||
{
|
||||
await taskContext.SwitchToMainThreadAsync();
|
||||
ContentDialogResult result = await ShowAsync();
|
||||
return new(result == ContentDialogResult.Primary, Text ?? string.Empty);
|
||||
}
|
||||
}
|
||||
@@ -2,27 +2,212 @@
|
||||
x:Class="Snap.Hutao.View.Guide.GuideView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:cwuc="using:CommunityToolkit.WinUI.UI.Controls"
|
||||
xmlns:cwc="using:CommunityToolkit.WinUI.Controls"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mxi="using:Microsoft.Xaml.Interactivity"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shvg="using:Snap.Hutao.ViewModel.Guide"
|
||||
d:DataContext="{d:DesignInstance shvg:GuideViewModel}"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
|
||||
<Grid Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<cwuc:SwitchPresenter/>
|
||||
<cwc:SwitchPresenter Value="{Binding State, Mode=OneWay}">
|
||||
<cwc:Case Value="{shcm:UInt32 Value=0}">
|
||||
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<GridView
|
||||
Grid.Row="0"
|
||||
ItemsSource="{Binding AppOptions.Cultures}"
|
||||
SelectedItem="{Binding SelectedCulture, Mode=TwoWay}"
|
||||
SelectionMode="Single">
|
||||
<GridView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border MinWidth="240" Margin="16">
|
||||
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding Name}"/>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</GridView.ItemTemplate>
|
||||
</GridView>
|
||||
</Grid>
|
||||
</cwc:Case>
|
||||
<cwc:Case Value="{shcm:UInt32 Value=1}">
|
||||
<Grid
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
ColumnSpacing="16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image
|
||||
Grid.Column="0"
|
||||
Height="152"
|
||||
Source="ms-appx:///Assets/Square44x44Logo.targetsize-256.png"/>
|
||||
<StackPanel
|
||||
Grid.Column="2"
|
||||
VerticalAlignment="Center"
|
||||
Spacing="8">
|
||||
<CheckBox IsChecked="{Binding IsTermOfServiceAgreed, Mode=TwoWay}">
|
||||
<TextBlock>
|
||||
<TextBlock.Inlines>
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepAgreementIHaveReadText}"/>
|
||||
<Hyperlink NavigateUri="https://hut.ao/statements/tos.html">
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepAgreementTermOfService}"/>
|
||||
</Hyperlink>
|
||||
</TextBlock.Inlines>
|
||||
</TextBlock>
|
||||
</CheckBox>
|
||||
<CheckBox IsChecked="{Binding IsPrivacyPolicyAgreed, Mode=TwoWay}">
|
||||
<TextBlock>
|
||||
<TextBlock.Inlines>
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepAgreementIHaveReadText}"/>
|
||||
<Hyperlink NavigateUri="https://hut.ao/statements/privacy-notice.html">
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepAgreementPrivacyPolicy}"/>
|
||||
</Hyperlink>
|
||||
</TextBlock.Inlines>
|
||||
</TextBlock>
|
||||
</CheckBox>
|
||||
<CheckBox IsChecked="{Binding IsIssueReportAgreed, Mode=TwoWay}">
|
||||
<TextBlock>
|
||||
<TextBlock.Inlines>
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepAgreementIHaveReadText}"/>
|
||||
<Hyperlink NavigateUri="https://hut.ao/statements/bug-report.html">
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepAgreementIssueReport}"/>
|
||||
</Hyperlink>
|
||||
</TextBlock.Inlines>
|
||||
</TextBlock>
|
||||
</CheckBox>
|
||||
<CheckBox IsChecked="{Binding IsOpenSourceLicenseAgreed, Mode=TwoWay}">
|
||||
<TextBlock>
|
||||
<TextBlock.Inlines>
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepAgreementIHaveReadText}"/>
|
||||
<Hyperlink NavigateUri="https://github.com/DGP-Studio/Snap.Hutao/blob/main/LICENSE">
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepAgreementOpenSourceLicense}"/>
|
||||
</Hyperlink>
|
||||
</TextBlock.Inlines>
|
||||
</TextBlock>
|
||||
</CheckBox>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</cwc:Case>
|
||||
<cwc:Case Value="{shcm:UInt32 Value=2}">
|
||||
<Grid>
|
||||
<StackPanel
|
||||
Margin="16"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock
|
||||
Margin="1,0,0,5"
|
||||
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
|
||||
Text="Segoe Fluent Icons"/>
|
||||
<StackPanel
|
||||
Margin="0,8"
|
||||
Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<!-- PUA E700-E900 -->
|
||||
<FontIcon FontSize="{StaticResource SubtitleTextBlockFontSize}" Glyph=""/>
|
||||
<!-- PUA EA00-EC00 -->
|
||||
<FontIcon FontSize="{StaticResource SubtitleTextBlockFontSize}" Glyph=""/>
|
||||
<!-- PUA ED00-EF00 -->
|
||||
<FontIcon FontSize="{StaticResource SubtitleTextBlockFontSize}" Glyph=""/>
|
||||
<!-- PUA F000-F200 -->
|
||||
<FontIcon FontSize="{StaticResource SubtitleTextBlockFontSize}" Glyph=""/>
|
||||
<!-- PUA F300-F500 -->
|
||||
<FontIcon FontSize="{StaticResource SubtitleTextBlockFontSize}" Glyph=""/>
|
||||
<!-- PUA F600-F800 -->
|
||||
<FontIcon FontSize="{StaticResource SubtitleTextBlockFontSize}" Glyph=""/>
|
||||
</StackPanel>
|
||||
<TextBlock>
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepEnvironmentFontDescription1}"/>
|
||||
<Hyperlink NavigateUri="https://aka.ms/SegoeFluentIcons">
|
||||
<Run Text="Microsoft"/>
|
||||
</Hyperlink>
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepEnvironmentFontDescription2}"/>
|
||||
</TextBlock>
|
||||
<TextBlock Text="{shcm:ResourceString Name=ViewGuideStepEnvironmentAfterInstallDescription}"/>
|
||||
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingWebview2Header}"/>
|
||||
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding RuntimeOptions.WebView2Version}"/>
|
||||
<TextBlock>
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepEnvironmentWebView2Description1}"/>
|
||||
<Hyperlink NavigateUri="https://go.microsoft.com/fwlink/p/?LinkId=2124703">
|
||||
<Run Text="Microsoft"/>
|
||||
</Hyperlink>
|
||||
<Run Text="{shcm:ResourceString Name=ViewGuideStepEnvironmentWebView2Description2}"/>
|
||||
</TextBlock>
|
||||
<TextBlock Text="{shcm:ResourceString Name=ViewGuideStepEnvironmentAfterInstallDescription}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</cwc:Case>
|
||||
<cwc:Case Value="{shcm:UInt32 Value=3}">
|
||||
<StackPanel Margin="32,0" HorizontalAlignment="Left">
|
||||
<TextBlock
|
||||
Margin="1,16,0,5"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewWelcomeBase}"/>
|
||||
<ScrollViewer>
|
||||
<ItemsControl
|
||||
Margin="0,0,-4,0"
|
||||
HorizontalAlignment="Center"
|
||||
ItemsPanel="{StaticResource WrapPanelTemplate}"
|
||||
ItemsSource="{Binding DownloadSummaries}">
|
||||
<ItemsControl.ItemContainerTransitions>
|
||||
<TransitionCollection>
|
||||
<AddDeleteThemeTransition/>
|
||||
<ContentThemeTransition/>
|
||||
<ReorderThemeTransition/>
|
||||
<EntranceThemeTransition IsStaggeringEnabled="False"/>
|
||||
</TransitionCollection>
|
||||
</ItemsControl.ItemContainerTransitions>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border
|
||||
Width="180"
|
||||
Margin="0,0,4,4"
|
||||
Style="{StaticResource BorderCardStyle}">
|
||||
<StackPanel Margin="8">
|
||||
<TextBlock Text="{Binding DisplayName}"/>
|
||||
<ProgressBar
|
||||
Margin="0,4,0,0"
|
||||
Maximum="1"
|
||||
Value="{Binding ProgressValue}"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding Description}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</ScrollViewer>
|
||||
</StackPanel>
|
||||
</cwc:Case>
|
||||
</cwc:SwitchPresenter>
|
||||
<Grid Grid.Row="1">
|
||||
<PipsPager
|
||||
HorizontalAlignment="Center"
|
||||
CanBeScrollAnchor="False"
|
||||
IsEnabled="False"
|
||||
NumberOfPages="5"
|
||||
SelectedPageIndex="0"/>
|
||||
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
|
||||
<cwc:Segmented
|
||||
Margin="16"
|
||||
IsHitTestVisible="False"
|
||||
SelectedIndex="{Binding State, Mode=TwoWay}">
|
||||
<cwc:SegmentedItem Content="{shcm:ResourceString Name=ViewGuideStepLanguage}" Icon="{shcm:FontIcon Glyph=}"/>
|
||||
<cwc:SegmentedItem Content="{shcm:ResourceString Name=ViewGuideStepDocument}" Icon="{shcm:FontIcon Glyph=}"/>
|
||||
<cwc:SegmentedItem Content="{shcm:ResourceString Name=ViewGuideStepEnvironment}" Icon="{shcm:FontIcon Glyph=}"/>
|
||||
<cwc:SegmentedItem Content="{shcm:ResourceString Name=ViewGuideStepStaticResource}" Icon="{shcm:FontIcon Glyph=}"/>
|
||||
</cwc:Segmented>
|
||||
<Button
|
||||
Command="{Binding NextOrCompleteCommand}"
|
||||
Content="{Binding NextOrCompleteButtonText}"
|
||||
IsEnabled="{Binding IsNextOrCompleteButtonEnabled}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
xmlns:mxic="using:Microsoft.Xaml.Interactions.Core"
|
||||
xmlns:shc="using:Snap.Hutao.Control"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shch="using:Snap.Hutao.Control.Helper"
|
||||
xmlns:shci="using:Snap.Hutao.Control.Image"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shcp="using:Snap.Hutao.Control.Panel"
|
||||
@@ -130,12 +131,15 @@
|
||||
DisplayMode="Inline"
|
||||
IsPaneOpen="True"
|
||||
OpenPaneLength="{StaticResource CompatSplitViewOpenPaneLength2}"
|
||||
PaneBackground="Transparent">
|
||||
PaneBackground="{x:Null}">
|
||||
<SplitView.Pane>
|
||||
<ListView
|
||||
ItemsSource="{Binding AchievementGoals}"
|
||||
SelectedItem="{Binding SelectedAchievementGoal, Mode=TwoWay}"
|
||||
SelectionMode="Single">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:SelectedItemInViewBehavior/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
|
||||
<Setter Property="Margin" Value="0,0,6,0"/>
|
||||
@@ -173,79 +177,79 @@
|
||||
</SplitView.Pane>
|
||||
|
||||
<SplitView.Content>
|
||||
<ScrollViewer Padding="0,0,8,0">
|
||||
<ItemsControl
|
||||
Margin="8,0,0,16"
|
||||
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
|
||||
ItemsSource="{Binding Achievements}">
|
||||
<ItemsControl.ItemContainerTransitions>
|
||||
<TransitionCollection>
|
||||
<ContentThemeTransition/>
|
||||
</TransitionCollection>
|
||||
</ItemsControl.ItemContainerTransitions>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border
|
||||
Margin="0,8,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource BorderCardStyle}">
|
||||
<Grid MinHeight="48" Padding="8">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ListView
|
||||
Margin="8,0,0,0"
|
||||
Padding="0,0,0,8"
|
||||
ItemsSource="{Binding Achievements}"
|
||||
SelectionMode="None">
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Margin" Value="0,4,8,0"/>
|
||||
</Style>
|
||||
</ListView.ItemContainerStyle>
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border
|
||||
Margin="0,4,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource BorderCardStyle}">
|
||||
<Grid MinHeight="48" Padding="8">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<CheckBox
|
||||
Grid.Column="0"
|
||||
MinWidth="0"
|
||||
MinHeight="0"
|
||||
Margin="8,0"
|
||||
Padding="0,0,0,0"
|
||||
Command="{Binding Path=DataContext.SaveAchievementCommand, Source={StaticResource BindingProxy}}"
|
||||
CommandParameter="{Binding}"
|
||||
IsChecked="{Binding IsChecked, Mode=TwoWay}"/>
|
||||
<Grid Grid.Column="1" Margin="8,0,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<!-- text -->
|
||||
<ColumnDefinition/>
|
||||
<!-- time -->
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<!-- pic -->
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<!-- count -->
|
||||
<ColumnDefinition Width="32"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{Binding Inner.Title}"/>
|
||||
<TextBlock
|
||||
Margin="0,2,0,0"
|
||||
Style="{StaticResource SecondaryTextStyle}"
|
||||
Text="{Binding Inner.Description}"
|
||||
TextTrimming="CharacterEllipsis"/>
|
||||
</StackPanel>
|
||||
<CheckBox
|
||||
Grid.Column="0"
|
||||
MinWidth="0"
|
||||
MinHeight="0"
|
||||
Margin="8,0"
|
||||
Padding="0,0,0,0"
|
||||
Command="{Binding Path=DataContext.SaveAchievementCommand, Source={StaticResource BindingProxy}}"
|
||||
CommandParameter="{Binding}"
|
||||
IsChecked="{Binding IsChecked, Mode=TwoWay}"/>
|
||||
<Grid Grid.Column="1" Margin="8,0,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<!-- text -->
|
||||
<ColumnDefinition/>
|
||||
<!-- time -->
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<!-- pic -->
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<!-- count -->
|
||||
<ColumnDefinition Width="32"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{Binding Inner.Title}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
Margin="12,0,12,0"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Time}"
|
||||
Visibility="{Binding IsChecked, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
<Image
|
||||
Grid.Column="2"
|
||||
Height="32"
|
||||
Source="ms-appx:///Resource/Icon/UI_ItemIcon_201.png"/>
|
||||
<TextBlock
|
||||
Grid.Column="3"
|
||||
Margin="12,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Inner.FinishReward.Count}"/>
|
||||
</Grid>
|
||||
Margin="0,2,0,0"
|
||||
Style="{StaticResource SecondaryTextStyle}"
|
||||
Text="{Binding Inner.Description}"
|
||||
TextTrimming="CharacterEllipsis"/>
|
||||
</StackPanel>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
Margin="12,0,12,0"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Time}"
|
||||
Visibility="{Binding IsChecked, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||
<shci:CachedImage
|
||||
Grid.Column="2"
|
||||
shch:FrameworkElementHelper.SquareLength="32"
|
||||
Source="{StaticResource UI_ItemIcon_201}"/>
|
||||
<TextBlock
|
||||
Grid.Column="3"
|
||||
Margin="12,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Inner.FinishReward.Count}"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ListView.ItemTemplate>
|
||||
</ListView>
|
||||
</SplitView.Content>
|
||||
</SplitView>
|
||||
</cwuc:Case>
|
||||
@@ -258,6 +262,9 @@
|
||||
ItemsSource="{Binding AchievementGoals}"
|
||||
SelectedItem="{Binding SelectedAchievementGoal, Mode=TwoWay}"
|
||||
SelectionMode="Single">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:SelectedItemInViewBehavior/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<GridView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border MinWidth="180" Style="{StaticResource BorderCardStyle}">
|
||||
@@ -303,7 +310,7 @@
|
||||
<Image
|
||||
Width="120"
|
||||
Height="120"
|
||||
Source="ms-appx:///Resource/Icon/UI_AchievementIcon_3_3.png"/>
|
||||
Source="ms-appx:///Resource/Navigation/Achievement.png"/>
|
||||
<TextBlock
|
||||
Margin="0,16,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
|
||||
@@ -156,12 +156,40 @@
|
||||
<Grid>
|
||||
<ScrollViewer Padding="0,0,4,0">
|
||||
<StackPanel>
|
||||
|
||||
<StackPanel>
|
||||
<TextBlock
|
||||
Margin="16,16,16,0"
|
||||
Style="{StaticResource TitleTextBlockStyle}"
|
||||
Text="{Binding GreetingText}"/>
|
||||
<TextBlock Margin="16,0,16,0" Text="{Binding UserOptions.UserName}"/>
|
||||
|
||||
<ItemsControl
|
||||
Margin="16,16,16,0"
|
||||
ItemsSource="{Binding HutaoAnnouncements}"
|
||||
Visibility="{Binding HutaoAnnouncements.Count, Converter={StaticResource Int32ToVisibilityConverter}}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<InfoBar
|
||||
Title="{Binding Title}"
|
||||
CloseButtonCommand="{Binding DismissCommand}"
|
||||
CloseButtonCommandParameter="{Binding}"
|
||||
IsOpen="True"
|
||||
Message="{Binding Content}"
|
||||
Severity="{Binding Severity}">
|
||||
<StackPanel Margin="0,0,0,8" Orientation="Horizontal">
|
||||
<HyperlinkButton Content="查看详情" NavigateUri="{Binding Link}"/>
|
||||
<TextBlock
|
||||
Margin="8,0,0,2"
|
||||
VerticalAlignment="Center"
|
||||
Opacity="0.7"
|
||||
Text="{Binding UpdateTimeFormatted}"/>
|
||||
</StackPanel>
|
||||
</InfoBar>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
|
||||
<cwucont:AdaptiveGridView
|
||||
Margin="16,16,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
|
||||
@@ -75,7 +75,13 @@
|
||||
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
|
||||
DefaultLabelPosition="Right">
|
||||
<CommandBar.Content>
|
||||
<shcp:PanelSelector x:Name="ItemsPanelSelector" Margin="6,8,0,0"/>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<shcp:PanelSelector x:Name="ItemsPanelSelector" Margin="6,8,0,0"/>
|
||||
<ToggleButton
|
||||
x:Name="RefreshTimeToggle"
|
||||
Margin="8,8,0,0"
|
||||
Content="{shcm:ResourceString Name=ViewPageAvatarPropertyRefreshTimeToggle}"/>
|
||||
</StackPanel>
|
||||
</CommandBar.Content>
|
||||
<AppBarButton
|
||||
Command="{Binding ExportAsImageCommand}"
|
||||
@@ -99,7 +105,7 @@
|
||||
</AppBarButton>
|
||||
</CommandBar>
|
||||
|
||||
<cwucont:SwitchPresenter Grid.Row="1" Value="{Binding ElementName=ItemsPanelSelector, Path=Current}">
|
||||
<cwucont:SwitchPresenter Grid.Row="1" Value="{Binding ElementName=ItemsPanelSelector, Path=Current, Mode=OneWay}">
|
||||
<cwucont:SwitchPresenter.ContentTransitions>
|
||||
<TransitionCollection>
|
||||
<ContentThemeTransition/>
|
||||
@@ -227,7 +233,7 @@
|
||||
Grid.Row="1"
|
||||
DisplayMode="Inline"
|
||||
IsPaneOpen="True"
|
||||
OpenPaneLength="{StaticResource CompatSplitViewOpenPaneLength3}"
|
||||
OpenPaneLength="{StaticResource CompatSplitViewOpenPaneLength2}"
|
||||
PaneBackground="Transparent">
|
||||
<SplitView.Pane>
|
||||
<ListView ItemsSource="{Binding Summary.Avatars}" SelectedItem="{Binding SelectedAvatar, Mode=TwoWay}">
|
||||
@@ -255,24 +261,36 @@
|
||||
Margin="12,0,0,0"
|
||||
Opacity="0.7"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding Level}"/>
|
||||
Text="{Binding Level}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
<StackPanel
|
||||
Grid.Column="2"
|
||||
VerticalAlignment="Center"
|
||||
Opacity="0.7">
|
||||
Opacity="0.7"
|
||||
Visibility="{Binding ElementName=RefreshTimeToggle, Path=IsChecked, Converter={StaticResource BoolToVisibilityConverter}, Mode=OneWay}">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Right"
|
||||
FontSize="11"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding ShowcaseRefreshTimeFormat}"/>
|
||||
Text="{Binding ShowcaseRefreshTimeFormat}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Right"
|
||||
FontSize="11"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding GameRecordRefreshTimeFormat}"/>
|
||||
Text="{Binding GameRecordRefreshTimeFormat}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Right"
|
||||
FontSize="11"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding CalculatorRefreshTimeFormat}"/>
|
||||
Text="{Binding CalculatorRefreshTimeFormat}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
CommandParameter="Snap.Hutao.View.Page.WikiAvatarPage"
|
||||
Description="{shcm:ResourceString Name=ViewPageCultivationWikiAvatarDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewWikiAvatarHeader}"
|
||||
HeaderIcon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_BagTabIcon_Avatar.png}"
|
||||
HeaderIcon="{shcm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiAvatar.png}"
|
||||
IsClickEnabled="True"/>
|
||||
<cwc:SettingsCard
|
||||
ActionIconToolTip="{shcm:ResourceString Name=ViewPageCultivationNavigateAction}"
|
||||
@@ -307,7 +307,7 @@
|
||||
CommandParameter="Snap.Hutao.View.Page.WikiWeaponPage"
|
||||
Description="{shcm:ResourceString Name=ViewPageCultivationWikiWeaponDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewWikiWeaponHeader}"
|
||||
HeaderIcon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_BagTabIcon_Weapon.png}"
|
||||
HeaderIcon="{shcm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiWeapon.png}"
|
||||
IsClickEnabled="True"/>
|
||||
<cwc:SettingsCard
|
||||
ActionIconToolTip="{shcm:ResourceString Name=ViewPageCultivationNavigateAction}"
|
||||
@@ -315,7 +315,7 @@
|
||||
CommandParameter="Snap.Hutao.View.Page.AvatarPropertyPage"
|
||||
Description="{shcm:ResourceString Name=ViewPageCultivationAvatarPropertyDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewAvatarPropertyHeader}"
|
||||
HeaderIcon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_Icon_BoostUp.png}"
|
||||
HeaderIcon="{shcm:BitmapIcon Source=ms-appx:///Resource/Navigation/Cultivation.png}"
|
||||
IsClickEnabled="True"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
xmlns:mxim="using:Microsoft.Xaml.Interactions.Media"
|
||||
xmlns:shc="using:Snap.Hutao.Control"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shch="using:Snap.Hutao.Control.Helper"
|
||||
xmlns:shci="using:Snap.Hutao.Control.Image"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shvc="using:Snap.Hutao.View.Control"
|
||||
xmlns:shvd="using:Snap.Hutao.ViewModel.DailyNote"
|
||||
xmlns:shvh="using:Snap.Hutao.View.Helper"
|
||||
d:DataContext="{d:DesignInstance shvd:DailyNoteViewModel}"
|
||||
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
|
||||
mc:Ignorable="d">
|
||||
@@ -190,7 +190,7 @@
|
||||
ItemsSource="{Binding DailyNoteEntries}"
|
||||
SelectionMode="None"
|
||||
StretchContentForSingleRow="False">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<cwuc:AdaptiveGridView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Padding="8" Style="{StaticResource BorderGridStyle}">
|
||||
<Grid.RowDefinitions>
|
||||
@@ -255,7 +255,7 @@
|
||||
Margin="8,0,0,0"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Stretch"
|
||||
shvh:FrameworkElementHelper.SquareLength="40"
|
||||
shch:FrameworkElementHelper.SquareLength="40"
|
||||
Background="Transparent"
|
||||
BorderBrush="{x:Null}"
|
||||
BorderThickness="0"
|
||||
@@ -267,7 +267,7 @@
|
||||
<Button
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Stretch"
|
||||
shvh:FrameworkElementHelper.SquareLength="40"
|
||||
shch:FrameworkElementHelper.SquareLength="40"
|
||||
Background="Transparent"
|
||||
BorderBrush="{x:Null}"
|
||||
BorderThickness="0"
|
||||
@@ -301,17 +301,23 @@
|
||||
Grid.Column="0"
|
||||
Margin="4"
|
||||
VerticalAlignment="Center"
|
||||
shvh:FrameworkElementHelper.SquareLength="32"
|
||||
shch:FrameworkElementHelper.SquareLength="32"
|
||||
Source="{StaticResource UI_ItemIcon_210}"/>
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding DailyNote.ResinFormatted, Mode=OneWay}"/>
|
||||
<TextBlock
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{Binding DailyNote.ResinFormatted, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.ResinRecoveryTargetTime, Mode=OneWay}"/>
|
||||
Text="{Binding DailyNote.ResinRecoveryTargetTime, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<Grid Style="{ThemeResource BorderGridStyle}">
|
||||
@@ -332,17 +338,23 @@
|
||||
Grid.Column="0"
|
||||
Margin="4"
|
||||
VerticalAlignment="Center"
|
||||
shvh:FrameworkElementHelper.SquareLength="32"
|
||||
shch:FrameworkElementHelper.SquareLength="32"
|
||||
Source="{StaticResource UI_ItemIcon_204}"/>
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding DailyNote.HomeCoinFormatted, Mode=OneWay}"/>
|
||||
<TextBlock
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{Binding DailyNote.HomeCoinFormatted, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.HomeCoinRecoveryTargetTimeFormatted, Mode=OneWay}"/>
|
||||
Text="{Binding DailyNote.HomeCoinRecoveryTargetTimeFormatted, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<Grid Style="{ThemeResource BorderGridStyle}">
|
||||
@@ -363,17 +375,23 @@
|
||||
Grid.Column="0"
|
||||
Margin="4"
|
||||
VerticalAlignment="Center"
|
||||
shvh:FrameworkElementHelper.SquareLength="32"
|
||||
shch:FrameworkElementHelper.SquareLength="32"
|
||||
Source="{StaticResource UI_MarkQuest_Events_Proce}"/>
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding DailyNote.TaskFormatted, Mode=OneWay}"/>
|
||||
<TextBlock
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{Binding DailyNote.TaskFormatted, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.ExtraTaskRewardDescription, Mode=OneWay}"/>
|
||||
Text="{Binding DailyNote.ExtraTaskRewardDescription, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<Grid Style="{ThemeResource BorderGridStyle}">
|
||||
@@ -394,17 +412,23 @@
|
||||
Grid.Column="0"
|
||||
Margin="4"
|
||||
VerticalAlignment="Center"
|
||||
shvh:FrameworkElementHelper.SquareLength="32"
|
||||
shch:FrameworkElementHelper.SquareLength="32"
|
||||
Source="{StaticResource UI_MarkTower}"/>
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding DailyNote.ResinDiscountFormatted, Mode=OneWay}"/>
|
||||
<TextBlock
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{Binding DailyNote.ResinDiscountFormatted, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewPageDailyNoteResinDiscountUsed}"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageDailyNoteResinDiscountUsed}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<Grid Style="{ThemeResource BorderGridStyle}">
|
||||
@@ -425,17 +449,23 @@
|
||||
Grid.Column="0"
|
||||
Margin="4"
|
||||
VerticalAlignment="Center"
|
||||
shvh:FrameworkElementHelper.SquareLength="32"
|
||||
shch:FrameworkElementHelper.SquareLength="32"
|
||||
Source="{StaticResource UI_ItemIcon_220021}"/>
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding DailyNote.Transformer.ObtainedAndReachedFormatted, Mode=OneWay}"/>
|
||||
<TextBlock
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{Binding DailyNote.Transformer.ObtainedAndReachedFormatted, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding DailyNote.Transformer.ObtainedAndTimeFormatted, Mode=OneWay}"/>
|
||||
Text="{Binding DailyNote.Transformer.ObtainedAndTimeFormatted, Mode=OneWay}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
@@ -472,7 +502,7 @@
|
||||
Value="{Binding PassedTime, Mode=OneWay}"/>
|
||||
<shci:CachedImage
|
||||
Margin="0,0,0,8"
|
||||
shvh:FrameworkElementHelper.SquareLength="32"
|
||||
shch:FrameworkElementHelper.SquareLength="32"
|
||||
Source="{Binding AvatarSideIcon, Mode=OneWay}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
@@ -489,10 +519,12 @@
|
||||
Margin="0,6,0,0"
|
||||
Opacity="0.7"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding RefreshTimeFormatted}"/>
|
||||
Text="{Binding RefreshTimeFormatted}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
TextWrapping="NoWrap"/>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</cwuc:AdaptiveGridView.ItemTemplate>
|
||||
</cwuc:AdaptiveGridView>
|
||||
</ScrollViewer>
|
||||
</SplitView>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
<Page.Resources>
|
||||
<DataTemplate x:Key="TeamItemTemplate" d:DataType="shvcom:Team">
|
||||
<Border Margin="12,0,12,12" Style="{StaticResource BorderCardStyle}">
|
||||
<Border Margin="0,0,0,8" Style="{StaticResource BorderCardStyle}">
|
||||
<Grid Margin="6">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
@@ -31,7 +31,7 @@
|
||||
<ItemsControl HorizontalAlignment="Left" ItemsSource="{Binding}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<cwuc:UniformGrid ColumnSpacing="6" Columns="4"/>
|
||||
<StackPanel Orientation="Horizontal" Spacing="6"/>
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
<ItemsControl.ItemTemplate>
|
||||
@@ -113,21 +113,19 @@
|
||||
</Pivot.HeaderTemplate>
|
||||
<Pivot.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<ScrollViewer>
|
||||
<GridView
|
||||
Margin="16,16,6,-6"
|
||||
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
|
||||
ItemsSource="{Binding Avatars}"
|
||||
SelectionMode="None">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<shvcon:BottomTextControl Text="{Binding Rate}">
|
||||
<shvcon:ItemIcon Icon="{Binding Icon}" Quality="{Binding Quality}"/>
|
||||
</shvcon:BottomTextControl>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</GridView>
|
||||
</ScrollViewer>
|
||||
<GridView
|
||||
Padding="16,16,4,0"
|
||||
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
|
||||
ItemsSource="{Binding Avatars}"
|
||||
SelectionMode="None">
|
||||
<GridView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<shvcon:BottomTextControl Text="{Binding Rate}">
|
||||
<shvcon:ItemIcon Icon="{Binding Icon}" Quality="{Binding Quality}"/>
|
||||
</shvcon:BottomTextControl>
|
||||
</DataTemplate>
|
||||
</GridView.ItemTemplate>
|
||||
</GridView>
|
||||
</DataTemplate>
|
||||
</Pivot.ItemTemplate>
|
||||
</Pivot>
|
||||
@@ -141,21 +139,19 @@
|
||||
</Pivot.HeaderTemplate>
|
||||
<Pivot.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<ScrollViewer>
|
||||
<GridView
|
||||
Margin="16,16,6,-6"
|
||||
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
|
||||
ItemsSource="{Binding Avatars}"
|
||||
SelectionMode="None">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<shvcon:BottomTextControl Text="{Binding Rate}">
|
||||
<shvcon:ItemIcon Icon="{Binding Icon}" Quality="{Binding Quality}"/>
|
||||
</shvcon:BottomTextControl>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</GridView>
|
||||
</ScrollViewer>
|
||||
<GridView
|
||||
Padding="16,16,4,0"
|
||||
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
|
||||
ItemsSource="{Binding Avatars}"
|
||||
SelectionMode="None">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<shvcon:BottomTextControl Text="{Binding Rate}">
|
||||
<shvcon:ItemIcon Icon="{Binding Icon}" Quality="{Binding Quality}"/>
|
||||
</shvcon:BottomTextControl>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</GridView>
|
||||
</DataTemplate>
|
||||
</Pivot.ItemTemplate>
|
||||
</Pivot>
|
||||
@@ -175,19 +171,20 @@
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ScrollViewer Grid.Column="0" Margin="0,12,0,0">
|
||||
<ItemsControl
|
||||
ItemTemplate="{StaticResource TeamItemTemplate}"
|
||||
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
|
||||
ItemsSource="{Binding Up}"/>
|
||||
</ScrollViewer>
|
||||
|
||||
<ScrollViewer Grid.Column="1" Margin="0,12,0,0">
|
||||
<ItemsControl
|
||||
ItemTemplate="{StaticResource TeamItemTemplate}"
|
||||
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
|
||||
ItemsSource="{Binding Down}"/>
|
||||
</ScrollViewer>
|
||||
<ListView
|
||||
Grid.Column="0"
|
||||
Margin="0,0,0,0"
|
||||
Padding="0,8,0,0"
|
||||
ItemTemplate="{StaticResource TeamItemTemplate}"
|
||||
ItemsSource="{Binding Up}"
|
||||
SelectionMode="None"/>
|
||||
<ListView
|
||||
Grid.Column="1"
|
||||
Margin="0,0,0,0"
|
||||
Padding="0,8,0,0"
|
||||
ItemTemplate="{StaticResource TeamItemTemplate}"
|
||||
ItemsSource="{Binding Down}"
|
||||
SelectionMode="None"/>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</Pivot.ItemTemplate>
|
||||
@@ -266,58 +263,58 @@
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation6}"/>
|
||||
</Grid>
|
||||
<ScrollViewer Grid.Row="1">
|
||||
<ItemsControl
|
||||
Margin="0,0,0,8"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
|
||||
ItemsSource="{Binding AvatarConstellationInfos}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border Margin="16,0,16,8" Style="{StaticResource BorderCardStyle}">
|
||||
<Grid>
|
||||
<ListView
|
||||
Grid.Row="1"
|
||||
Margin="0,0,4,0"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
|
||||
ItemsSource="{Binding AvatarConstellationInfos}"
|
||||
SelectionMode="None">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border Margin="0,0,0,8" Style="{StaticResource BorderCardStyle}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<shvcon:ItemIcon
|
||||
Width="48"
|
||||
Height="48"
|
||||
Icon="{Binding Icon}"
|
||||
Quality="{Binding Quality}"/>
|
||||
|
||||
<Grid Grid.Column="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="7*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<shvcon:ItemIcon
|
||||
Width="48"
|
||||
Height="48"
|
||||
Icon="{Binding Icon}"
|
||||
Quality="{Binding Quality}"/>
|
||||
|
||||
<Grid Grid.Column="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="7*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Rate}"/>
|
||||
<ItemsControl Grid.Column="1" ItemsSource="{Binding Rates}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<cwuc:UniformGrid Columns="7"/>
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding}"/>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</Grid>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Rate}"/>
|
||||
<ItemsControl Grid.Column="1" ItemsSource="{Binding Rates}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<cwuc:UniformGrid Columns="7"/>
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding}"/>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ListView>
|
||||
</Grid>
|
||||
</PivotItem>
|
||||
</Pivot>
|
||||
|
||||
@@ -34,6 +34,12 @@
|
||||
<Pivot>
|
||||
<Pivot.RightHeader>
|
||||
<CommandBar DefaultLabelPosition="Right">
|
||||
<CommandBar.Content>
|
||||
<TextBlock
|
||||
Margin="12,14,12,0"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding LaunchStatusOptions.LaunchStatus.Description}"/>
|
||||
</CommandBar.Content>
|
||||
<AppBarButton
|
||||
Command="{Binding OpenScreenshotFolderCommand}"
|
||||
Icon="{shcm:FontIcon Glyph=}"
|
||||
|
||||
@@ -112,17 +112,6 @@
|
||||
SelectedItem="{Binding SelectedBackdropType, Mode=TwoWay}"/>
|
||||
</cwc:SettingsCard>
|
||||
|
||||
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingGachaLogHeader}"/>
|
||||
<cwc:SettingsCard
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleHeader}"
|
||||
HeaderIcon="{shcm:FontIcon Glyph=}">
|
||||
<ToggleSwitch
|
||||
IsOn="{Binding Options.IsEmptyHistoryWishVisible, Mode=TwoWay}"
|
||||
OffContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOff}"
|
||||
OnContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOn}"/>
|
||||
</cwc:SettingsCard>
|
||||
|
||||
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingGameHeader}"/>
|
||||
<InfoBar
|
||||
IsClosable="False"
|
||||
@@ -146,6 +135,27 @@
|
||||
HeaderIcon="{shcm:FontIcon Glyph=}"
|
||||
IsClickEnabled="True"/>
|
||||
|
||||
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingGachaLogHeader}"/>
|
||||
<cwc:SettingsCard
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleHeader}"
|
||||
HeaderIcon="{shcm:FontIcon Glyph=}">
|
||||
<ToggleSwitch
|
||||
IsOn="{Binding Options.IsEmptyHistoryWishVisible, Mode=TwoWay}"
|
||||
OffContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOff}"
|
||||
OnContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOn}"/>
|
||||
</cwc:SettingsCard>
|
||||
|
||||
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingGeetestVerificationHeader}"/>
|
||||
<cwc:SettingsCard
|
||||
ActionIcon="{shcm:FontIcon Glyph=}"
|
||||
ActionIconToolTip="{shcm:ResourceString Name=ViewPageSettingGeetestCustomUrlAction}"
|
||||
Command="{Binding ConfigureGeetestUrlCommand}"
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingGeetestCustomUrlDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingGeetestCustomUrlHeader}"
|
||||
HeaderIcon="{shcm:FontIcon Glyph=}"
|
||||
IsClickEnabled="True"/>
|
||||
|
||||
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingStorageHeader}"/>
|
||||
<cwc:SettingsCard
|
||||
ActionIcon="{shcm:FontIcon Glyph=}"
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:cwc="using:CommunityToolkit.WinUI.Controls"
|
||||
xmlns:cwh="using:CommunityToolkit.WinUI"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mxi="using:Microsoft.Xaml.Interactivity"
|
||||
@@ -16,7 +17,7 @@
|
||||
mc:Ignorable="d">
|
||||
<ScrollViewer>
|
||||
<StackPanel Margin="16" Spacing="{StaticResource SettingsCardSpacing}">
|
||||
<cwc:SettingsCard Header="AdoptCalculatorDialogTest" IsClickEnabled="True">
|
||||
<cwc:SettingsCard Header="Adopt Calculator" IsClickEnabled="True">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<mxic:EventTriggerBehavior EventName="Click">
|
||||
<shcb:OpenAttachedFlyoutAction/>
|
||||
@@ -37,7 +38,7 @@
|
||||
</FlyoutBase.AttachedFlyout>
|
||||
</cwc:SettingsCard>
|
||||
|
||||
<cwc:SettingsCard Header="CommunityGameRecordDialogTest" IsClickEnabled="True">
|
||||
<cwc:SettingsCard Header="Community Game Record" IsClickEnabled="True">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<mxic:EventTriggerBehavior EventName="Click">
|
||||
<shcb:OpenAttachedFlyoutAction/>
|
||||
@@ -58,15 +59,37 @@
|
||||
</FlyoutBase.AttachedFlyout>
|
||||
</cwc:SettingsCard>
|
||||
|
||||
<cwc:SettingsCard Header="RestartTest">
|
||||
<cwc:SettingsCard Header="Reset Guide State">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<ToggleSwitch Name="ElevatedSwitch" Style="{StaticResource DefaultToggleSwitchStyle}"/>
|
||||
<Button
|
||||
Command="{Binding RestartAppCommand}"
|
||||
CommandParameter="{Binding ElementName=ElevatedSwitch, Path=IsOn}"
|
||||
Content="Restart"/>
|
||||
<Button Command="{Binding ResetGuideStateCommand}" Content="Reset (No restart)"/>
|
||||
</StackPanel>
|
||||
</cwc:SettingsCard>
|
||||
|
||||
<Expander
|
||||
HorizontalAlignment="Stretch"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
Header="Upload Announcement">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBox
|
||||
Header="Title"
|
||||
PlaceholderText="Please input title"
|
||||
Text="{Binding Announcement.Title, Mode=TwoWay}"/>
|
||||
<TextBox
|
||||
Header="Link"
|
||||
PlaceholderText="Please input link"
|
||||
Text="{Binding Announcement.Link, Mode=TwoWay}"/>
|
||||
<TextBox
|
||||
AcceptsReturn="True"
|
||||
Header="Content"
|
||||
PlaceholderText="Please input content"
|
||||
Text="{Binding Announcement.Content, Mode=TwoWay}"/>
|
||||
<ComboBox
|
||||
Header="Severity"
|
||||
ItemsSource="{cwh:EnumValues Type=InfoBarSeverity}"
|
||||
SelectedItem="{Binding Announcement.Severity, Mode=TwoWay}"/>
|
||||
<Button Command="{Binding UploadAnnouncementCommand}" Content="Upload"/>
|
||||
</StackPanel>
|
||||
</Expander>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</shc:ScopedPage>
|
||||
|
||||
@@ -118,6 +118,9 @@
|
||||
ItemsSource="{Binding Avatars}"
|
||||
SelectedItem="{Binding Selected, Mode=TwoWay}"
|
||||
SelectionMode="Single">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:SelectedItemInViewBehavior/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
@@ -288,13 +291,13 @@
|
||||
Margin="16,16,0,0"
|
||||
ItemsSource="{Binding Selected.CultivationItemsView}"
|
||||
SelectionMode="None">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<GridView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<shvc:BottomTextControl Text="{Binding Name}">
|
||||
<shvc:ItemIcon Icon="{Binding Icon, Converter={StaticResource ItemIconConverter}}" Quality="{Binding RankLevel}"/>
|
||||
</shvc:BottomTextControl>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</GridView.ItemTemplate>
|
||||
</GridView>
|
||||
|
||||
<TextBlock
|
||||
@@ -592,6 +595,9 @@
|
||||
ItemsSource="{Binding Avatars}"
|
||||
SelectedItem="{Binding Selected, Mode=TwoWay}"
|
||||
SelectionMode="Single">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:SelectedItemInViewBehavior/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<GridView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<shvc:BottomTextControl Text="{Binding Name}">
|
||||
|
||||
@@ -87,6 +87,9 @@
|
||||
ItemsSource="{Binding Weapons}"
|
||||
SelectedItem="{Binding Selected, Mode=TwoWay}"
|
||||
SelectionMode="Single">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:SelectedItemInViewBehavior/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
@@ -113,7 +116,6 @@
|
||||
</SplitView.Pane>
|
||||
<SplitView.Content>
|
||||
<ScrollViewer>
|
||||
|
||||
<StackPanel
|
||||
MaxWidth="800"
|
||||
Margin="0,0,16,0"
|
||||
@@ -134,7 +136,10 @@
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:AutoHeightBehavior TargetHeight="1024" TargetWidth="2048"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<ScrollViewer Grid.Column="0" Margin="16">
|
||||
<ScrollViewer
|
||||
Grid.Column="0"
|
||||
Margin="16"
|
||||
VerticalScrollBarVisibility="Hidden">
|
||||
<StackPanel>
|
||||
<shvc:BottomTextControl
|
||||
MaxWidth="80"
|
||||
@@ -189,13 +194,13 @@
|
||||
Margin="16,16,0,0"
|
||||
ItemsSource="{Binding Selected.CultivationItemsView}"
|
||||
SelectionMode="None">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<GridView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<shvc:BottomTextControl Text="{Binding Name}">
|
||||
<shvc:ItemIcon Icon="{Binding Icon, Converter={StaticResource ItemIconConverter}}" Quality="{Binding RankLevel}"/>
|
||||
</shvc:BottomTextControl>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</GridView.ItemTemplate>
|
||||
</GridView>
|
||||
<StackPanel Visibility="{Binding Selected.Affix, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
|
||||
<TextBlock
|
||||
@@ -255,6 +260,9 @@
|
||||
ItemsSource="{Binding Weapons}"
|
||||
SelectedItem="{Binding Selected, Mode=TwoWay}"
|
||||
SelectionMode="Single">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:SelectedItemInViewBehavior/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<GridView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<shvc:BottomTextControl Text="{Binding Name}">
|
||||
|
||||
@@ -8,14 +8,13 @@
|
||||
xmlns:mxic="using:Microsoft.Xaml.Interactions.Core"
|
||||
xmlns:mxim="using:Microsoft.Xaml.Interactions.Media"
|
||||
xmlns:shc="using:Snap.Hutao.Control"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shvu="using:Snap.Hutao.ViewModel.User"
|
||||
d:DataContext="{d:DesignInstance shvu:UserViewModel}"
|
||||
mc:Ignorable="d">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<mxic:EventTriggerBehavior EventName="Loaded">
|
||||
<mxic:InvokeCommandAction Command="{Binding OpenUICommand}"/>
|
||||
</mxic:EventTriggerBehavior>
|
||||
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<StackPanel>
|
||||
<Button
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
<UserControl
|
||||
x:Class="Snap.Hutao.View.WelcomeView"
|
||||
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:mxi="using:Microsoft.Xaml.Interactivity"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shv="using:Snap.Hutao.ViewModel"
|
||||
d:DataContext="{d:DesignInstance shv:WelcomeViewModel}"
|
||||
Unloaded="OnUnloaded"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
|
||||
<Grid Margin="0,44,0,0">
|
||||
<ScrollViewer>
|
||||
<StackPanel Margin="32,0" HorizontalAlignment="Left">
|
||||
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="{shcm:ResourceString Name=ViewWelcomeTitle}"/>
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewWelcomeSubtitle}"/>
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewWelcomeBase}"/>
|
||||
<TextBlock
|
||||
Margin="0,0,0,8"
|
||||
Style="{StaticResource BodyTextBlockStyle}"
|
||||
Text="{shcm:ResourceString Name=ViewWelcomeBody}"/>
|
||||
<ItemsControl
|
||||
Width="256"
|
||||
Margin="0,0,0,32"
|
||||
HorizontalAlignment="Left"
|
||||
ItemsSource="{Binding DownloadSummaries}">
|
||||
<ItemsControl.ItemContainerTransitions>
|
||||
<TransitionCollection>
|
||||
<AddDeleteThemeTransition/>
|
||||
<ContentThemeTransition/>
|
||||
<ReorderThemeTransition/>
|
||||
<EntranceThemeTransition IsStaggeringEnabled="False"/>
|
||||
</TransitionCollection>
|
||||
</ItemsControl.ItemContainerTransitions>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border Margin="0,4,0,0" Style="{StaticResource BorderCardStyle}">
|
||||
<StackPanel Margin="8">
|
||||
<TextBlock Text="{Binding DisplayName}"/>
|
||||
<ProgressBar
|
||||
Margin="0,4,0,0"
|
||||
Maximum="1"
|
||||
Value="{Binding ProgressValue}"/>
|
||||
<TextBlock
|
||||
Opacity="0.6"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding Description}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
<Image
|
||||
MaxWidth="640"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Source="ms-appx:///Resource/WelcomeView_Background.png"/>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -1,32 +0,0 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Snap.Hutao.ViewModel.Guide;
|
||||
|
||||
namespace Snap.Hutao.View;
|
||||
|
||||
/// <summary>
|
||||
/// 欢迎视图
|
||||
/// </summary>
|
||||
[HighQuality]
|
||||
internal sealed partial class WelcomeView : UserControl
|
||||
{
|
||||
private readonly IServiceScope serviceScope;
|
||||
|
||||
/// <summary>
|
||||
/// 构造一个新的欢迎视图
|
||||
/// </summary>
|
||||
public WelcomeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
serviceScope = Ioc.Default.CreateScope();
|
||||
DataContext = serviceScope.ServiceProvider.GetRequiredService<WelcomeViewModel>();
|
||||
}
|
||||
|
||||
private void OnUnloaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
|
||||
{
|
||||
DataContext = null;
|
||||
serviceScope.Dispose();
|
||||
}
|
||||
}
|
||||