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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEEDToolBox

fix: show the active CG destination and distinguish supply summaries

1331ec7
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

5 个文件 +7 -5
Modified XFEEDToolBox/ViewModels/AutomaticTradeViewModel.cs +1 -1
@@ -176,7 +176,7 @@ public partial class ToolboxViewModel
176 176 TradeConfirmedProfit=$"{sessionProfit:N0} Cr";RefreshTradeElapsed();
177 177 RunStatus=value.Phase switch{"requires-recovery"=>"需要处理","stopped"=>"已取消",_=>"自动跑商中"};
178 178 RunMessage=value.Message;NextDestination=value.NextDestination;ActualProfit=$"{sessionProfit:N0} Cr";ProfitLabel="本次跑商已确认净利润";
179 if(value.SupplySelection is{} supply)AutomaticSupplySummary=$"货源:{supply.Source.DisplayName} · {supply.Order.Name} {supply.Order.Quantity:N0}/{supply.FreeCapacity:N0} t · 库存 {supply.Supply:N0} t · 预计 {supply.CreditsPerHour:N0} Cr/h · 风险 {supply.Delivery.RiskDisplay}";
179 if(value.SupplySelection is{} supply)AutomaticSupplySummary=$"CG 货源:{supply.Source.DisplayName} · {supply.Order.Name} {supply.Order.Quantity:N0}/{supply.FreeCapacity:N0} t · 库存 {supply.Supply:N0} t · 预计 {supply.CreditsPerHour:N0} Cr/h · 风险 {supply.Delivery.RiskDisplay}";
180 180 ProfitDetails=$"自 {financialSession.StartedAt.ToLocalTime():MM-dd HH:mm} 起累计,自动重连和修复重启延续本次累计。";
181 181 if(value.Estimate is{} expected){PlanProfit=$"{expected.NetProfit:N0} Cr";PlanHourly=$"{expected.Hourly:N0} Cr/h";PlanDuration=$"约 {expected.Minutes:F1} 分钟";PlanWarnings=expected.Basis;}
182 182 runtime.Log("自动跑商",value.Message);
Modified XFEEDToolBox/ViewModels/ToolboxViewModel.cs +1 -1
@@ -405,7 +405,7 @@ public partial class ToolboxViewModel : ViewModelBase, IDisposable
405 405 StartNavigationCommand.NotifyCanExecuteChanged();
406 406 UpdateSystemControlAvailability();
407 407 }
408 partial void OnRunActiveChanged(bool value) { RefreshTradeExecutionTimer(value);RefreshTradePlanCommands(); PauseRunCommand.NotifyCanExecuteChanged();ResumeRunCommand.NotifyCanExecuteChanged();StartGameCommand.NotifyCanExecuteChanged(); RelogGameCommand.NotifyCanExecuteChanged(); RestartGameCommand.NotifyCanExecuteChanged();StartNavigationCommand.NotifyCanExecuteChanged();UpdateSystemControlAvailability(); }
408 partial void OnRunActiveChanged(bool value) { RefreshTradeExecutionTimer(value);RefreshTradePlanCommands();NotifyTradePlanningSummary(); PauseRunCommand.NotifyCanExecuteChanged();ResumeRunCommand.NotifyCanExecuteChanged();StartGameCommand.NotifyCanExecuteChanged(); RelogGameCommand.NotifyCanExecuteChanged(); RestartGameCommand.NotifyCanExecuteChanged();StartNavigationCommand.NotifyCanExecuteChanged();UpdateSystemControlAvailability(); }
409 409 private bool CanManageSession() => initialized && !DemoMode && !RunActive && !SessionBusy&&!NavigationActive&&!SystemFlightActive&&!NavigationRouteBusy;
410 410 private bool CanRelog() => CanManageSession() && sessions.CanRelog;
411 411 [RelayCommand(CanExecute = nameof(CanManageSession))] private Task StartGameAsync() => RunSessionAsync(SessionOperation.Start);
Modified XFEEDToolBox/ViewModels/TradePlanningViewModel.cs +3 -1
@@ -108,7 +108,9 @@ public partial class ToolboxViewModel
108 108 ?$"可投入 {Math.Max(0,credits-(decimal)Math.Max(0,Reserve)):N0} Cr · 已留出 {Math.Max(0,Reserve):N0} Cr 运营与保险资金"
109 109 :"等待读取当前余额,投入金额将自动填入。";
110 110 public string TradeInvestmentMode=>investmentFollowsBalance?"全部可用资金":"自定义投入";
111 public string TradeSelectedRouteSummary=>SelectedTradeCandidate?.RouteSummary
111 public string TradeSelectedRouteSummary=>RunActive&&automaticTradeStop is not null&&automaticTradeParameters is{} automatic
112 ?$"{(automatic.Mode==XFEEDToolBox.Core.Execution.AutomaticTradeMode.CommunityGoal?"CG 重复跑商":"重复跑商")} · 交付站 {automatic.Destination.DisplayName}"
113 :SelectedTradeCandidate?.RouteSummary
112 114 ??(manualTradeConfigured&&SelectedStart is not null&&AutomaticDestination is not null?SelectedStart.Record.Name+" → "+AutomaticDestination.Record.Name:"选择方案后即可开始执行");
113 115 public bool TradeHasExistingCargo=>SelectedTradeCandidate is {} candidate&&(candidate.Plan.Request.OccupiedCargo>0||CurrentPlayer.CargoCount>0);
114 116 public bool TradeExecutesFullPlan=>SelectedTradeCandidate is {} candidate&&(candidate.Plan.IsCargoAlternative||!candidate.Plan.IsLoop||candidate.Plan.Legs.Count!=2
Modified XFEEDToolBox/Views/PlannerPage.xaml +1 -1
@@ -83,7 +83,7 @@
83 83 <Border x:Name="TradeRunCard" Style="{StaticResource CardStyle}" Padding="22,18"><StackPanel Spacing="16">
84 84 <Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><StackPanel Spacing="4"><TextBlock Text="执行概览" Style="{StaticResource SectionTitle}"/><TextBlock Text="{x:Bind ViewModel.TradeSelectedRouteSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="12" TextTrimming="CharacterEllipsis"/></StackPanel><Button x:Name="ExecuteTradePlanButton" Grid.Column="1" Style="{StaticResource PrimaryButton}" MinWidth="148" VerticalAlignment="Center" controls:AsyncAction.Command="{x:Bind ViewModel.ExecuteTradePlanCommand}" controls:AsyncAction.CancelCommand="{x:Bind ViewModel.StopRunCommand}" controls:AsyncAction.IsRunning="{x:Bind ViewModel.RunActive,Mode=OneWay}" AutomationProperties.Name="开始执行跑商路线" AutomationProperties.AutomationId="ExecuteTradePlanButton"><StackPanel Orientation="Horizontal" Spacing="9"><FontIcon Glyph="&#xE768;" FontSize="15"/><TextBlock Text="{x:Bind ViewModel.TradeExecutionActionLabel,Mode=OneWay}"/></StackPanel></Button></Grid>
85 85 <Grid ColumnSpacing="20"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="1.2*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><StackPanel Spacing="6"><TextBlock Text="已完成轮数" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.CompletedTradeRounds,Mode=OneWay}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="1" Spacing="6"><TextBlock Text="本次已确认净利润" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.TradeConfirmedProfit,Mode=OneWay}" Foreground="{StaticResource TealBrush}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="2" Spacing="6"><TextBlock Text="运行时长" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.TradeElapsed,Mode=OneWay}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="3" Spacing="6"><TextBlock Text="当前阶段" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.RunStatus,Mode=OneWay}" FontSize="20" FontWeight="SemiBold" TextTrimming="CharacterEllipsis"/></StackPanel></Grid>
86 <TextBlock Text="{x:Bind ViewModel.TradeExecutionPolicy,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/><Border Height="1" Background="{StaticResource PanelStrokeBrush}"/><TextBlock Text="{x:Bind ViewModel.AutomaticSupplySummary,Mode=OneWay}" AutomationProperties.AutomationId="AutomaticSupplySummary" TextWrapping="Wrap" FontSize="12" Foreground="{StaticResource TealBrush}"/><TextBlock Text="{x:Bind ViewModel.RunMessage,Mode=OneWay}" TextWrapping="Wrap" FontSize="12" Foreground="{StaticResource MutedBrush}"/><Button Content="更新插件并继续" AutomationProperties.AutomationId="UpdateAndStartAutomaticTradeButton" Command="{x:Bind ViewModel.UpdateAndStartAutomaticTradeCommand}" Visibility="{x:Bind ViewModel.AutomaticUpdateVisibility,Mode=OneWay}" HorizontalAlignment="Left"/>
86 <TextBlock Text="{x:Bind ViewModel.TradeExecutionPolicy,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/><Border Height="1" Background="{StaticResource PanelStrokeBrush}"/><TextBlock Text="{x:Bind ViewModel.AutomaticSupplySummary,Mode=OneWay}" AutomationProperties.AutomationId="AutomaticSupplySummary" TextWrapping="Wrap" FontSize="12" Foreground="#C3A6FF"/><TextBlock Text="{x:Bind ViewModel.RunMessage,Mode=OneWay}" TextWrapping="Wrap" FontSize="12" Foreground="{StaticResource MutedBrush}"/><Button Content="更新插件并继续" AutomationProperties.AutomationId="UpdateAndStartAutomaticTradeButton" Command="{x:Bind ViewModel.UpdateAndStartAutomaticTradeCommand}" Visibility="{x:Bind ViewModel.AutomaticUpdateVisibility,Mode=OneWay}" HorizontalAlignment="Left"/>
87 87 </StackPanel></Border>
88 88 <Expander Header="查看完整路线与逐站货单" Visibility="{x:Bind ViewModel.TradePlanVisibility,Mode=OneWay}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"><StackPanel Spacing="16"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="{x:Bind ViewModel.PlanInfo,Mode=OneWay}" FontWeight="SemiBold" VerticalAlignment="Center"/><Button Grid.Column="1" Content="导出路线 JSON" Command="{x:Bind ViewModel.ExportPlanCommand}"/></Grid><controls:RouteMap Plan="{x:Bind ViewModel.Plan,Mode=OneWay}" Height="220"/><ItemsControl ItemsSource="{x:Bind ViewModel.Plan.Legs,Mode=OneWay}"><ItemsControl.ItemTemplate><DataTemplate x:DataType="models:TradeLeg"><Border Background="{StaticResource PanelAltBrush}" CornerRadius="8" Padding="16" Margin="0,0,0,8"><StackPanel Spacing="7"><TextBlock Text="{x:Bind Title}" FontWeight="SemiBold"/><TextBlock Text="{x:Bind Systems}" Style="{StaticResource MutedText}"/><TextBlock Text="{x:Bind CargoSummary}" Foreground="{StaticResource AccentBrush}" TextWrapping="Wrap"/><TextBlock Text="{x:Bind Metrics}" Style="{StaticResource MutedText}" FontSize="11"/></StackPanel></Border></DataTemplate></ItemsControl.ItemTemplate></ItemsControl><TextBlock Text="{x:Bind ViewModel.PlanWarnings,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/></StackPanel></Expander>
89 89 </StackPanel>
Modified docs/INTERFACE-0.4.24.md +1 -1
@@ -14,6 +14,6 @@ CG 自动跑商现在会在交付完成后、到达货源读取真实行情后
14 14
15 15 自动降落接管失败需要通过同模式重进恢复时,先释放旧输入上下文,再重新核验连续船体健康并授权菜单恢复,避免旧会话的停止标记拦住恢复操作。实际受损和紧急保护仍由原保护监测决定。
16 16
17 执行概览显示选择的货源、商品、可装载吨数/空舱、该商品库存、预计每小时收益和风险;真实已确认利润仍独立按交易及服务回执统计。
17 执行概览显示选择的货源、商品、可装载吨数/空舱、该商品库存、预计每小时收益和风险;CG 货源使用紫色和文字标识,运行标题显示实际交付站。真实已确认利润仍独立按交易及服务回执统计。
18 18
19 19 本次修改不要求手动打包原生驱动;发布仍通过项目引用编译并内嵌底层支持。