This commit is contained in:
Lightczx
2023-11-01 15:26:36 +08:00
parent 5943b1a1fb
commit eec47b72c7
5 changed files with 190 additions and 307 deletions

View File

@@ -14,6 +14,9 @@
<ItemsPanelTemplate x:Key="HorizontalStackPanelTemplate">
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
<ItemsPanelTemplate x:Key="HorizontalStackPanelSpacing2Template">
<StackPanel Orientation="Horizontal" Spacing="2"/>
</ItemsPanelTemplate>
<ItemsPanelTemplate x:Key="UniformGridColumns5Spacing4Template">
<cwcont:UniformGrid
ColumnSpacing="4"

View File

@@ -73,11 +73,15 @@ internal sealed partial class SettingEntry
/// </summary>
public const string LaunchScreenWidth = "Launch.ScreenWidth";
public const string LaunchIsScreenWidthEnabled = "Launch.IsScreenWidthEnabled";
/// <summary>
/// 启动游戏 高度
/// </summary>
public const string LaunchScreenHeight = "Launch.ScreenHeight";
public const string LaunchIsScreenHeightEnabled = "Launch.IsScreenHeightEnabled";
/// <summary>
/// 启动游戏 解锁帧率
/// </summary>
@@ -93,6 +97,8 @@ internal sealed partial class SettingEntry
/// </summary>
public const string LaunchMonitor = "Launch.Monitor";
public const string LaunchIsMonitorEnabled = "Launch.IsMonitorEnabled";
/// <summary>
/// 启动游戏 多倍启动
/// </summary>

View File

@@ -27,10 +27,13 @@ internal sealed class LaunchOptions : DbStoreOptions
private bool? isBorderless;
private bool? isExclusive;
private int? screenWidth;
private bool? isScreenWidthEnabled;
private int? screenHeight;
private bool? isScreenHeightEnabled;
private bool? unlockFps;
private int? targetFps;
private NameValue<int>? monitor;
private bool? isMonitorEnabled;
/// <summary>
/// 构造一个新的启动游戏选项
@@ -83,6 +86,12 @@ internal sealed class LaunchOptions : DbStoreOptions
set => SetOption(ref screenWidth, SettingEntry.LaunchScreenWidth, value);
}
public bool IsScreenWidthEnabled
{
get => GetOption(ref isScreenWidthEnabled, SettingEntry.LaunchIsScreenWidthEnabled, true);
set => SetOption(ref isScreenWidthEnabled, SettingEntry.LaunchIsScreenWidthEnabled, value);
}
/// <summary>
/// 屏幕高度
/// </summary>
@@ -92,6 +101,12 @@ internal sealed class LaunchOptions : DbStoreOptions
set => SetOption(ref screenHeight, SettingEntry.LaunchScreenHeight, value);
}
public bool IsScreenHeightEnabled
{
get => GetOption(ref isScreenHeightEnabled, SettingEntry.LaunchIsScreenHeightEnabled, true);
set => SetOption(ref isScreenHeightEnabled, SettingEntry.LaunchIsScreenHeightEnabled, value);
}
/// <summary>
/// 是否全屏
/// </summary>
@@ -131,6 +146,12 @@ internal sealed class LaunchOptions : DbStoreOptions
}
}
public bool IsMonitorEnabled
{
get => GetOption(ref isMonitorEnabled, SettingEntry.LaunchIsMonitorEnabled, true);
set => SetOption(ref isMonitorEnabled, SettingEntry.LaunchIsMonitorEnabled, value);
}
private static void InitializeMonitors(List<NameValue<int>> monitors)
{
// This list can't use foreach

View File

@@ -137,6 +137,89 @@
IsLoading="{Binding HutaoCloudViewModel.IsInitialized, Converter={StaticResource BoolNegationConverter}}"/>
</Grid>
</Flyout>
<DataTemplate x:Key="HistoryWishItemTemplate">
<Border Width="40" Style="{StaticResource BorderCardStyle}">
<StackPanel>
<shvc:ItemIcon
Width="40"
Height="40"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<TextBlock
HorizontalTextAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Count}"
TextTrimming="None"
TextWrapping="NoWrap"/>
</StackPanel>
</Border>
</DataTemplate>
<DataTemplate x:Key="HistoryWishListTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Margin="0,8,0,0" Orientation="Horizontal">
<TextBlock
Width="32"
Style="{StaticResource BaseTextBlockStyle}"
Text="{Binding Version}"/>
<TextBlock
Margin="0,0,0,0"
Style="{StaticResource BaseTextBlockStyle}"
Text="{Binding Name}"/>
</StackPanel>
<TextBlock
Margin="0,8,0,0"
HorizontalAlignment="Right"
Style="{StaticResource BaseTextBlockStyle}"
Text="{Binding TotalCountFormatted}"/>
<ItemsControl
Grid.Row="1"
Margin="0,6,0,0"
HorizontalAlignment="Left"
ItemTemplate="{StaticResource HistoryWishItemTemplate}"
ItemsPanel="{StaticResource HorizontalStackPanelSpacing2Template}"
ItemsSource="{Binding OrangeUpList}"/>
<ItemsControl
Grid.Row="1"
Margin="0,6,0,0"
HorizontalAlignment="Right"
ItemTemplate="{StaticResource HistoryWishItemTemplate}"
ItemsPanel="{StaticResource HorizontalStackPanelSpacing2Template}"
ItemsSource="{Binding PurpleUpList}"/>
<TextBlock
Grid.Row="2"
Margin="0,6,0,8"
Opacity="0.6"
Text="{Binding TimeSpanFormatted}"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="HistoryWishGridTemplate">
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</Page.Resources>
<Grid Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
@@ -232,100 +315,10 @@
OpenPaneLength="323"
PaneBackground="Transparent">
<SplitView.Pane>
<ListView ItemsSource="{Binding Statistics.HistoryWishes}" SelectedItem="{Binding SelectedHistoryWish, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Margin="0,8,0,0" Orientation="Horizontal">
<TextBlock
Width="32"
Style="{StaticResource BaseTextBlockStyle}"
Text="{Binding Version}"/>
<TextBlock
Margin="0,0,0,0"
Style="{StaticResource BaseTextBlockStyle}"
Text="{Binding Name}"/>
</StackPanel>
<TextBlock
Margin="0,8,0,0"
HorizontalAlignment="Right"
Style="{StaticResource BaseTextBlockStyle}"
Text="{Binding TotalCountFormatted}"/>
<ItemsControl
Grid.Row="1"
Margin="0,6,0,0"
HorizontalAlignment="Left"
ItemsSource="{Binding OrangeUpList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Spacing="2"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Width="40" Style="{StaticResource BorderCardStyle}">
<StackPanel>
<shvc:ItemIcon
Width="40"
Height="40"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<TextBlock
HorizontalTextAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Count}"
TextTrimming="None"
TextWrapping="NoWrap"/>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl
Grid.Row="1"
Margin="0,6,0,0"
HorizontalAlignment="Right"
ItemsSource="{Binding PurpleUpList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Spacing="2"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Width="40" Style="{StaticResource BorderCardStyle}">
<StackPanel>
<shvc:ItemIcon
Width="40"
Height="40"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<TextBlock
HorizontalTextAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Count}"
TextTrimming="None"
TextWrapping="NoWrap"/>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<TextBlock
Grid.Row="2"
Margin="0,6,0,8"
Opacity="0.6"
Text="{Binding TimeSpanFormatted}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView
ItemTemplate="{StaticResource HistoryWishListTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes}"
SelectedItem="{Binding SelectedHistoryWish, Mode=TwoWay}"/>
</SplitView.Pane>
<SplitView.Content>
<ScrollViewer>
@@ -347,91 +340,35 @@
</Border>
</Border>
<TextBlock
Margin="0,16,0,8"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"
Visibility="{Binding SelectedHistoryWish.OrangeList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView ItemsSource="{Binding SelectedHistoryWish.OrangeList}" SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding SelectedHistoryWish.OrangeList}"
SelectionMode="None"/>
<TextBlock
Margin="0,0,0,8"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"
Visibility="{Binding SelectedHistoryWish.PurpleList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView ItemsSource="{Binding SelectedHistoryWish.PurpleList}" SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding SelectedHistoryWish.PurpleList}"
SelectionMode="None"/>
<TextBlock
Margin="0,0,0,8"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewControlStatisticsCardBlueText}"
Visibility="{Binding SelectedHistoryWish.BlueList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView ItemsSource="{Binding SelectedHistoryWish.BlueList}" SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding SelectedHistoryWish.BlueList}"
SelectionMode="None"/>
</StackPanel>
</ScrollViewer>
</SplitView.Content>
@@ -444,55 +381,19 @@
Margin="0,16,0,8"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
<GridView ItemsSource="{Binding Statistics.OrangeAvatars}" SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView
ItemTemplate="{StaticResource HistoryWishItemTemplate}"
ItemsSource="{Binding Statistics.OrangeAvatars}"
SelectionMode="None"/>
<TextBlock
Margin="0,0,0,8"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
<GridView ItemsSource="{Binding Statistics.PurpleAvatars}" SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView
ItemTemplate="{StaticResource HistoryWishItemTemplate}"
ItemsSource="{Binding Statistics.PurpleAvatars}"
SelectionMode="None"/>
</StackPanel>
</ScrollViewer>
</PivotItem>
@@ -503,82 +404,28 @@
Margin="0,16,0,8"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
<GridView ItemsSource="{Binding Statistics.OrangeWeapons}" SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView
ItemTemplate="{StaticResource HistoryWishItemTemplate}"
ItemsSource="{Binding Statistics.OrangeWeapons}"
SelectionMode="None"/>
<TextBlock
Margin="0,0,0,8"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
<GridView ItemsSource="{Binding Statistics.PurpleWeapons}" SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView
ItemTemplate="{StaticResource HistoryWishItemTemplate}"
ItemsSource="{Binding Statistics.PurpleWeapons}"
SelectionMode="None"/>
<TextBlock
Margin="0,0,0,8"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewControlStatisticsCardBlueText}"/>
<GridView ItemsSource="{Binding Statistics.BlueWeapons}" SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<shvc:ItemIcon
Badge="{Binding Badge}"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Border
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#80000000"
CornerRadius="0,6,0,6">
<TextBlock
Margin="6,0,6,2"
Foreground="#FFFFFFFF"
Text="{Binding Count}"/>
</Border>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView
ItemTemplate="{StaticResource HistoryWishItemTemplate}"
ItemsSource="{Binding Statistics.BlueWeapons}"
SelectionMode="None"/>
</StackPanel>
</ScrollViewer>
</PivotItem>

View File

@@ -26,6 +26,14 @@
<Page.Resources>
<shc:BindingProxy x:Key="BindingProxy" DataContext="{Binding}"/>
<Visibility x:Key="VisibilityCollapsed">Collapsed</Visibility>
<DataTemplate x:Key="GameResourceTemplate">
<shvc:LaunchGameResourceExpander
Margin="16,16,16,0"
cw:Effects.Shadow="{ThemeResource CompatCardShadow}"
DataContext="{Binding Mode=OneWay}"
Header="{shcm:ResourceString Name=ViewPageLaunchGameResourceDiffHeader}"/>
</DataTemplate>
</Page.Resources>
<Grid>
<Grid
@@ -202,23 +210,35 @@
<ToggleSwitch Width="156" IsOn="{Binding Options.IsBorderless, Mode=TwoWay}"/>
</cwc:SettingsCard>
<cwc:SettingsCard Description="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceScreenWidthDescription}" Header="-screen-width">
<NumberBox
Width="156"
Padding="10,6,0,0"
Value="{Binding Options.ScreenWidth, Mode=TwoWay}"/>
<StackPanel Orientation="Horizontal" Spacing="16">
<NumberBox
Width="156"
Padding="10,6,0,0"
IsEnabled="{Binding Options.IsScreenWidthEnabled}"
Value="{Binding Options.ScreenWidth, Mode=TwoWay}"/>
<ToggleSwitch Width="156" IsOn="{Binding Options.IsScreenWidthEnabled, Mode=TwoWay}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Description="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceScreenHeightDescription}" Header="-screen-height">
<NumberBox
Width="156"
Padding="10,6,0,0"
Value="{Binding Options.ScreenHeight, Mode=TwoWay}"/>
<StackPanel Orientation="Horizontal" Spacing="16">
<NumberBox
Width="156"
Padding="10,6,0,0"
IsEnabled="{Binding Options.IsScreenHeightEnabled}"
Value="{Binding Options.ScreenHeight, Mode=TwoWay}"/>
<ToggleSwitch Width="156" IsOn="{Binding Options.IsScreenHeightEnabled, Mode=TwoWay}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Description="{shcm:ResourceString Name=ViewPageLaunchGameMonitorsDescription}" Header="-monitor">
<ComboBox
Width="156"
DisplayMemberPath="Name"
ItemsSource="{Binding Options.Monitors}"
SelectedItem="{Binding Options.Monitor, Mode=TwoWay}"/>
<StackPanel Orientation="Horizontal" Spacing="16">
<ComboBox
Width="156"
DisplayMemberPath="Name"
IsEnabled="{Binding Options.IsMonitorEnabled}"
ItemsSource="{Binding Options.Monitors}"
SelectedItem="{Binding Options.Monitor, Mode=TwoWay}"/>
<ToggleSwitch Width="156" IsOn="{Binding Options.IsMonitorEnabled, Mode=TwoWay}"/>
</StackPanel>
</cwc:SettingsCard>
</cwc:SettingsExpander.Items>
</cwc:SettingsExpander>
@@ -266,33 +286,19 @@
DataContext="{Binding GameResource.PreDownloadGame.Latest, Mode=OneWay}"
Header="{shcm:ResourceString Name=ViewPageLaunchGameResourcePreDownloadHeader}"
Visibility="{Binding FallbackValue={StaticResource VisibilityCollapsed}, Converter={StaticResource EmptyObjectToVisibilityConverter}}"/>
<ItemsControl Margin="0,0,0,0" ItemsSource="{Binding GameResource.PreDownloadGame.Diffs, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvc:LaunchGameResourceExpander
Margin="16,16,16,0"
cw:Effects.Shadow="{ThemeResource CompatCardShadow}"
DataContext="{Binding Mode=OneWay}"
Header="{shcm:ResourceString Name=ViewPageLaunchGameResourceDiffHeader}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl
Margin="0,0,0,0"
ItemTemplate="{StaticResource GameResourceTemplate}"
ItemsSource="{Binding GameResource.PreDownloadGame.Diffs, Mode=OneWay}"/>
<shvc:LaunchGameResourceExpander
Margin="16,16,16,0"
cw:Effects.Shadow="{ThemeResource CompatCardShadow}"
DataContext="{Binding GameResource.Game.Latest, Mode=OneWay}"
Header="{shcm:ResourceString Name=ViewPageLaunchGameResourceLatestHeader}"/>
<ItemsControl Margin="0,0,0,16" ItemsSource="{Binding GameResource.Game.Diffs, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvc:LaunchGameResourceExpander
Margin="16,16,16,0"
cw:Effects.Shadow="{ThemeResource CompatCardShadow}"
DataContext="{Binding Mode=OneWay}"
Header="{shcm:ResourceString Name=ViewPageLaunchGameResourceDiffHeader}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl
Margin="0,0,0,16"
ItemTemplate="{StaticResource GameResourceTemplate}"
ItemsSource="{Binding GameResource.Game.Diffs, Mode=OneWay}"/>
</StackPanel>
</Grid>
</ScrollViewer>