XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
<Page x:Class="XFEEDToolBox.Views.RefitPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:controls="using:XFEEDToolBox.Controls"
      xmlns:primitives="using:Microsoft.UI.Xaml.Controls.Primitives"
      xmlns:fit="using:XFEEDToolBox.Core.Outfitting"
      xmlns:models="using:XFEEDToolBox.Core.Models"
      xmlns:vm="using:XFEEDToolBox.ViewModels" xmlns:rows="using:XFEEDToolBox.Core.Presentation">
    <Page.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="/Styles/Outfitting.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary></Page.Resources>
    <Grid>
    <Grid.RowDefinitions><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
    <controls:ShipModelView x:Name="RefitShipModel" Grid.RowSpan="2" ShipType="{x:Bind ViewModel.RefitShipType,Mode=OneWay}" Opacity="0.3"/>
    <ScrollViewer x:Name="PageScroll" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" SizeChanged="PageScrollSizeChanged">
    <Grid x:Name="PageLayout" RowSpacing="14" Padding="0,8,8,12" Height="780">
        <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
        <StackPanel Spacing="5">
            <TextBlock Text="SHIP EDITOR" Style="{StaticResource Eyebrow}"/>
            <TextBlock Text="飞船编辑" Style="{StaticResource PageTitle}"/>
            <TextBlock Text="按模块分类查看装配,选择模块后在右侧修改属性与工程目标。" Style="{StaticResource MutedText}"/>
        </StackPanel>
        <Border Grid.Row="1" Style="{StaticResource RefitCardStyle}" Padding="16,12">
            <Grid ColumnSpacing="16" RowSpacing="8">
                <Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
                <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
                <ComboBox ItemsSource="{x:Bind ViewModel.Ships, Mode=OneWay}" SelectedItem="{x:Bind ViewModel.RefitSourceShip, Mode=TwoWay}" PlaceholderText="选择仓库飞船;当前 EDSY 模拟配置见下方" ItemTemplate="{StaticResource ShipNameTemplate}" HorizontalAlignment="Stretch" AutomationProperties.Name="模拟飞船配置"/>
                <StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
                    <Button Command="{x:Bind ViewModel.RebuildRefitCommand, Mode=OneWay}" ToolTipService.ToolTip="用游戏中的最新装配替换当前模拟副本" AutomationProperties.Name="用最新装配重建"><FontIcon Glyph="&#xE72C;" FontSize="16"/></Button>
                    <Button controls:AsyncAction.Command="{x:Bind ViewModel.ExportRefitCommand, Mode=OneWay}" ToolTipService.ToolTip="保存模拟配置与材料表" AutomationProperties.Name="保存模拟配置与材料表"><FontIcon Glyph="&#xE74E;" FontSize="16"/></Button>
                    <Button Content="EDSY 链接" Click="OpenEdsyLinks" AutomationProperties.Name="EDSY 链接导入导出"/>
                    <Button x:Name="AddShipToListButton" Content="添加至清单" controls:AsyncAction.Command="{x:Bind AddShipToListAction}" Style="{StaticResource PrimaryButton}"/>
                </StackPanel>
                <TextBlock Grid.Row="1" Grid.ColumnSpan="2" Text="{x:Bind ViewModel.RefitStatus, Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/>
            </Grid>
        </Border>
        <Grid x:Name="Workbench" Grid.Row="2" ColumnSpacing="16" RowSpacing="16" SizeChanged="WorkbenchSizeChanged">
            <Grid.ColumnDefinitions><ColumnDefinition x:Name="CategoryColumn" Width="240"/><ColumnDefinition x:Name="SlotColumn" Width="*"/><ColumnDefinition x:Name="InspectorColumn" Width="1.2*"/></Grid.ColumnDefinitions>
            <Grid.RowDefinitions><RowDefinition Height="*"/><RowDefinition x:Name="StackedInspectorRow" Height="0"/></Grid.RowDefinitions>
            <Border x:Name="CategoryPanel" Style="{StaticResource RefitCardStyle}" Padding="0,18,0,12">
                <Grid RowSpacing="16"><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
                    <StackPanel Margin="18,0" Spacing="6"><TextBlock Text="模块" Foreground="{StaticResource AccentBrush}" FontSize="26" FontWeight="SemiBold"/><TextBlock Text="飞船装配" FontSize="18"/><TextBlock Text="OUTFITTING" Style="{StaticResource MutedText}" FontSize="10"/></StackPanel>
                    <ListView x:Name="RefitCategoryList" Grid.Row="1" ItemsSource="{x:Bind ViewModel.RefitCategories, Mode=OneWay}" SelectedIndex="{x:Bind ViewModel.RefitCategoryIndex, Mode=TwoWay}" HorizontalContentAlignment="Stretch" SelectionMode="Single" AutomationProperties.Name="模块分类">
                        <ListView.Resources><SolidColorBrush x:Key="ListViewItemBackgroundSelected" Color="#54331A"/><SolidColorBrush x:Key="ListViewItemBackgroundSelectedPointerOver" Color="#694120"/><SolidColorBrush x:Key="ListViewItemForegroundSelected" Color="#FFAE48"/></ListView.Resources>
                        <ListView.ItemContainerStyle><Style TargetType="ListViewItem"><Setter Property="Padding" Value="14,8"/><Setter Property="Margin" Value="0,0,0,2"/><Setter Property="HorizontalContentAlignment" Value="Stretch"/></Style></ListView.ItemContainerStyle>
                        <ListView.ItemTemplate><DataTemplate x:DataType="vm:RefitCategoryRow">
                            <Grid ColumnSpacing="12"><Grid.ColumnDefinitions><ColumnDefinition Width="30"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                                <Image Width="28" Height="32" VerticalAlignment="Center"><Image.Source><SvgImageSource UriSource="{x:Bind Icon}"/></Image.Source></Image>
                                <StackPanel Grid.Column="1" Spacing="6"><controls:BilingualText Text="{x:Bind Name}" Original="{x:Bind OriginalName}"/><TextBlock Text="{x:Bind Count,Mode=OneWay}" FontSize="10" Foreground="{StaticResource AccentBrush}" TextWrapping="Wrap"/></StackPanel>
                            </Grid>
                        </DataTemplate></ListView.ItemTemplate>
                    </ListView>
                    <StackPanel Grid.Row="2" Margin="18,0" Spacing="8"><TextBlock Text="点击分类查看已安装模块" FontSize="11" Style="{StaticResource MutedText}"/><TextBlock Text="军用槽位归入可选内部模块" FontSize="10" Style="{StaticResource MutedText}"/></StackPanel>
                </Grid>
            </Border>
            <Border x:Name="SlotPanel" Grid.Column="1" Style="{StaticResource RefitCardStyle}" Padding="16">
                <Grid RowSpacing="10">
                    <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
                    <StackPanel Spacing="8"><controls:BilingualText Text="{x:Bind ViewModel.RefitCategoryName, Mode=OneWay}" Original="{x:Bind ViewModel.RefitCategoryOriginal, Mode=OneWay}"/><TextBlock Text="{x:Bind ViewModel.RefitSlotCount, Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/></StackPanel>
                    <TextBox Grid.Row="1" PlaceholderText="搜索已安装模块或槽位…" Text="{x:Bind ViewModel.RefitSlotSearch, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutomationProperties.Name="搜索模拟槽位"/>
                    <GridView x:Name="SlotList" Grid.Row="2" ItemContainerStyle="{StaticResource ModuleCardStyle}" ItemsSource="{x:Bind ViewModel.RefitVisibleSlots, Mode=OneWay}" SelectedItem="{x:Bind ViewModel.RefitSlot, Mode=TwoWay}" SelectionMode="Single" CanDragItems="False" CanReorderItems="False" AllowDrop="False" HorizontalContentAlignment="Stretch" AutomationProperties.Name="已安装模块卡片与空槽位" SizeChanged="SlotGridSizeChanged">

                        <GridView.ItemsPanel><ItemsPanelTemplate><ItemsWrapGrid x:Name="SlotWrapGrid" Orientation="Horizontal" ItemWidth="240" ItemHeight="148"/></ItemsPanelTemplate></GridView.ItemsPanel>

                        <GridView.ItemTemplate><DataTemplate x:DataType="rows:RefitSlotLiveRow">
                            <Grid Padding="12" RowSpacing="4" ToolTipService.ToolTip="{x:Bind Caption,Mode=OneWay}">
                                <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
                                <TextBlock Text="{x:Bind SlotSize,Mode=OneWay}" FontSize="19" FontWeight="SemiBold" Foreground="{StaticResource AccentBrush}" AutomationProperties.Name="槽位大小"/>
                                <TextBlock Text="{x:Bind CurrentGrade,Mode=OneWay}" FontSize="13" HorizontalAlignment="Right" Foreground="{StaticResource AccentBrush}" AutomationProperties.Name="当前工程等级"/>
                                <controls:ModuleIcon Grid.Row="1" Item="{x:Bind IconItem,Mode=OneWay}" MaxHeight="88" HorizontalAlignment="Stretch"/>
                                <StackPanel Grid.Row="2" Spacing="3" Margin="0,0,30,0"><TextBlock Text="{x:Bind CardName,Mode=OneWay}" FontWeight="SemiBold" FontSize="13" TextWrapping="Wrap" MaxLines="2"/><TextBlock Text="{x:Bind CardOriginal,Mode=OneWay}" Foreground="{StaticResource MutedBrush}" FontSize="10" TextWrapping="Wrap" MaxLines="2"/></StackPanel>
                                <Button Grid.Row="2" Tag="{x:Bind}" Click="ChangeModule" IsEnabled="{x:Bind CanEdit,Mode=OneWay}" HorizontalAlignment="Right" VerticalAlignment="Bottom" Padding="6" Background="Transparent" BorderThickness="0" CornerRadius="0" AutomationProperties.Name="更改此槽位模块" ToolTipService.ToolTip="更改模块"><FontIcon Glyph="&#xF1CB;" FontFamily="{StaticResource SymbolThemeFontFamily}" FontSize="16"/></Button>
                            </Grid>
                        </DataTemplate></GridView.ItemTemplate>
                    </GridView>
                </Grid>
            </Border>
            <Border x:Name="InspectorPanel" Grid.Column="2" Style="{StaticResource RefitCardStyle}" Padding="16">
                <Grid RowSpacing="12">
                    <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
                    <SelectorBar x:Name="InspectorTabs" SelectionChanged="InspectorTabChanged" Loaded="InspectorTabsLoaded" SizeChanged="InspectorTabsSizeChanged" Style="{StaticResource OutfittingSelector}" Margin="-16,-16,-16,0">
                        <SelectorBarItem Text="模块数据" IsSelected="True" Style="{StaticResource OutfittingSelectorItem}"/><SelectorBarItem Text="改装" Style="{StaticResource OutfittingSelectorItem}"><SelectorBarItem.Icon><ImageIcon Width="18" Height="18"><ImageIcon.Source><SvgImageSource UriSource="ms-appx:///Assets/GameIcons/FeatureEngineer.svg"/></ImageIcon.Source></ImageIcon></SelectorBarItem.Icon></SelectorBarItem>
                    </SelectorBar>
                    <StackPanel x:Name="EngineeringGradePanel" Grid.Row="3" Visibility="Collapsed" Orientation="Horizontal" Spacing="12">
                        <TextBlock Text="等级" VerticalAlignment="Center" FontSize="16"/>
                        <controls:EngineeringGradePicker IsEnabled="{x:Bind ViewModel.RefitCanEngineer, Mode=OneWay}" x:Name="EngineeringGrade" Value="{x:Bind ViewModel.RefitGrade, Mode=TwoWay, Converter={StaticResource EngineeringRating}}" AutomationProperties.Name="工程改造等级,从一到五级,未改造显示空心图标" ToolTipService.ToolTip="选择此模块的目标工程等级"/>
                        <TextBlock Text="{x:Bind ViewModel.RefitGrade, Mode=OneWay}" VerticalAlignment="Center" Foreground="{StaticResource AccentBrush}" FontSize="20"/>
                    </StackPanel>
                    <Grid Grid.Row="1" ColumnSpacing="10">
                        <Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                        <StackPanel x:Name="CurrentProgressBlock" Visibility="Collapsed" Spacing="5"><Grid Width="72" Height="72" AutomationProperties.Name="当前改装完成度,只读">
                            <ProgressRing x:Name="CurrentEngineeringProgress" IsIndeterminate="False" IsActive="True" Minimum="0" Maximum="100" Value="{x:Bind ViewModel.RefitCurrentProgress,Mode=OneWay}" Width="72" Height="72" IsHitTestVisible="False" Foreground="{StaticResource TealBrush}"/>
                            <TextBlock Text="{x:Bind ViewModel.RefitCurrentProgressText,Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" FontWeight="SemiBold"/>
                        </Grid><TextBlock Text="当前完成度" FontSize="10" HorizontalAlignment="Center" Foreground="{StaticResource MutedBrush}"/></StackPanel>
                        <StackPanel Grid.Column="1" Spacing="5" VerticalAlignment="Center"><TextBlock FontSize="24" FontWeight="SemiBold" TextWrapping="Wrap" Foreground="{StaticResource OutfittingWhite}"><Run Text="{x:Bind ViewModel.RefitSelectedSpecification,Mode=OneWay}" Foreground="{StaticResource OutfittingYellow}"/><Run Text="{x:Bind ViewModel.RefitSelectedModuleLabel,Mode=OneWay}"/></TextBlock><TextBlock Text="{x:Bind ViewModel.RefitSelectedOriginal,Mode=OneWay}" FontSize="11" Foreground="{StaticResource OutfittingLabel}" TextWrapping="Wrap"/></StackPanel>
                    </Grid>
                    <controls:BilingualText Grid.Row="2" Text="{x:Bind ViewModel.RefitSlotCaption, Mode=OneWay}" Original="{x:Bind ViewModel.RefitSlotOriginal, Mode=OneWay}"/>
                            <ScrollViewer x:Name="ModuleDataView" Grid.Row="4" VerticalScrollBarVisibility="Auto" Padding="0,0,12,8">
                                <Grid x:Name="PropertiesGrid" ColumnSpacing="20" RowSpacing="16" SizeChanged="PropertiesGridSizeChanged">
                                    <Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition x:Name="PropertiesSecondColumn" Width="0"/></Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
                                    <StackPanel Spacing="14"><TextBlock Text="模块数据" FontSize="22" FontWeight="SemiBold" Foreground="{StaticResource OutfittingWhite}"/>
                                    <ItemsControl x:Name="ModulePropertyList" ItemsSource="{x:Bind ViewModel.RefitProperties, Mode=OneWay}">
                                        <ItemsControl.ItemTemplate><DataTemplate x:DataType="rows:RefitPropertyLiveRow">
                                            <Grid ColumnSpacing="12" Padding="0,7" BorderBrush="{StaticResource OutfittingRule}" BorderThickness="0,0,0,1">
                                                <Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
                                                <StackPanel Spacing="2" VerticalAlignment="Center"><TextBlock Text="{x:Bind Name,Mode=OneWay}" FontSize="18" Foreground="{StaticResource OutfittingLabel}" TextWrapping="Wrap"/><TextBlock Text="{x:Bind OriginalName,Mode=OneWay}" Foreground="{StaticResource OutfittingLabel}" FontSize="10"/></StackPanel>
                                                <controls:BilingualText Grid.Column="1" Text="{x:Bind Value,Mode=OneWay}" Original="{x:Bind OriginalValue,Mode=OneWay}" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="{StaticResource OutfittingOrange}" FontSize="22"/>
                                            </Grid>
                                        </DataTemplate></ItemsControl.ItemTemplate>
                                    </ItemsControl></StackPanel>
                                    <StackPanel x:Name="EngineeringProperties" Grid.Row="1" Spacing="16">
                                    <StackPanel Spacing="8"><TextBlock Text="当前工程改装" Style="{StaticResource SectionTitle}" FontSize="15"/><controls:BilingualText Text="{x:Bind ViewModel.RefitEngineeringName, Mode=OneWay}" Original="{x:Bind ViewModel.RefitEngineeringOriginal, Mode=OneWay}"/></StackPanel>
                                    <StackPanel Spacing="8"><TextBlock Text="模拟目标" Style="{StaticResource SectionTitle}" FontSize="15"/><controls:BilingualText Text="{x:Bind ViewModel.RefitTargetSummary, Mode=OneWay}" Original="{x:Bind ViewModel.RefitTargetOriginal, Mode=OneWay}"/></StackPanel>
                                    <StackPanel Spacing="10" Visibility="{x:Bind ViewModel.RefitHasModifiers, Mode=OneWay, Converter={StaticResource BoolVisibility}}">
                                        <TextBlock Text="已记录的改装参数" Style="{StaticResource SectionTitle}" FontSize="15"/>
                                        <ItemsControl ItemsSource="{x:Bind ViewModel.RefitModifiers, Mode=OneWay}"><ItemsControl.ItemTemplate><DataTemplate x:DataType="rows:RefitModifierLiveRow"><controls:BilingualText Text="{x:Bind Display,Mode=OneWay}" Original="{x:Bind EnglishDisplay,Mode=OneWay}" Margin="0,0,0,12"/></DataTemplate></ItemsControl.ItemTemplate></ItemsControl>
                                    </StackPanel>
                                    </StackPanel>
                                </Grid>
                            </ScrollViewer>
                            <ScrollViewer x:Name="ModuleEngineeringView" Grid.Row="4" Visibility="Collapsed" VerticalScrollBarVisibility="Auto" Padding="0,0,12,8">
                                <StackPanel Spacing="14">
                                    <TextBlock Text="{x:Bind ViewModel.RefitEngineeringHint, Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="12"/>
                                    <ContentControl IsEnabled="{x:Bind ViewModel.RefitCanEngineer, Mode=OneWay}" HorizontalContentAlignment="Stretch"><StackPanel Spacing="14">
                                        <ToggleSwitch Header="模拟改装此模块" IsOn="{x:Bind ViewModel.RefitEditEnabled, Mode=TwoWay}"/>
                                        <ComboBox Header="蓝图" ItemsSource="{x:Bind ViewModel.RefitBlueprints, Mode=OneWay}" SelectedItem="{x:Bind ViewModel.RefitBlueprint, Mode=TwoWay}" ItemTemplate="{StaticResource GameNameTemplate}" HorizontalAlignment="Stretch"/>
                                        <TextBlock Text="在属性面板顶部选择六边形等级。" Style="{StaticResource MutedText}" FontSize="12"/>
                                        <ComboBox Header="工程师(整船共享声望)" ItemsSource="{x:Bind ViewModel.RefitEngineers, Mode=OneWay}" SelectedItem="{x:Bind ViewModel.RefitEngineer, Mode=TwoWay}" ItemTemplate="{StaticResource EngineerNameTemplate}" HorizontalAlignment="Stretch"/>
                                        <ComboBox Header="实验效果" ItemsSource="{x:Bind ViewModel.RefitEffects, Mode=OneWay}" SelectedItem="{x:Bind ViewModel.RefitEffect, Mode=TwoWay}" ItemTemplate="{StaticResource EffectNameTemplate}" HorizontalAlignment="Stretch"/>
                                        <ToggleSwitch Header="中间等级 80% 即升阶" IsOn="{x:Bind ViewModel.RefitFast, Mode=TwoWay}"/>
                                        <ToggleSwitch Header="远程工坊(不增加声望)" IsOn="{x:Bind ViewModel.RefitRemote, Mode=TwoWay}"/>
                                    </StackPanel></ContentControl>
                                </StackPanel>
                            </ScrollViewer>
                </Grid>
            </Border>
        </Grid>
    </Grid>
    </ScrollViewer>
    <controls:RefitShipOverview x:Name="RefitOverviewPanel" Grid.Row="1" Margin="0,8,8,0"/>
    </Grid>
</Page>