using CommunityToolkit.Mvvm.ComponentModel;
using XFEEDToolBox.Core.Session;
namespace XFEEDToolBox.ViewModels;
public partial class ToolboxViewModel
{
[ObservableProperty, NotifyPropertyChangedFor(nameof(RelogAvailabilityText))]
public partial bool PluginRelogReady { get; set; }
[ObservableProperty, NotifyPropertyChangedFor(nameof(RelogAvailabilityText))]
public partial string RelogUnavailableReason { get; set; }="等待当前游戏的重进连接";
public string RelogAvailabilityText => !CurrentPlayer.InGame ? "进入游戏后可重进"
: nativeStatusChecking ? "正在连接当前游戏的重进接口"
: !NativeRelogWorkflow.SupportsMode(CurrentPlayer.GameMode) ? "私人群组重进尚未接入"
: !PluginRelogReady ? RelogUnavailableReason
: "返回主菜单并重新进入" + (CurrentPlayer.GameMode == "Solo" ? "单人模式" : "公开模式");
partial void OnPluginRelogReadyChanged(bool value) => RefreshRelogAvailability();
partial void OnSystemFlightActiveChanged(bool value)
{
RefreshRelogAvailability();
StartGameCommand.NotifyCanExecuteChanged();
RestartGameCommand.NotifyCanExecuteChanged();
}
private void RefreshRelogAvailability()
{
OnPropertyChanged(nameof(RelogAvailabilityText));
RelogGameCommand.NotifyCanExecuteChanged();
}
private void ReportRelogProgress(string message) => dispatcher.TryEnqueue(() =>
{
SessionMessage = message;
runtime.Log("会话", message);
});
}
using CommunityToolkit.Mvvm.ComponentModel;
using XFEEDToolBox.Core.Session;
namespace XFEEDToolBox.ViewModels;
public partial class ToolboxViewModel
{
[ObservableProperty, NotifyPropertyChangedFor(nameof(RelogAvailabilityText))]
public partial bool PluginRelogReady { get; set; }
[ObservableProperty, NotifyPropertyChangedFor(nameof(RelogAvailabilityText))]
public partial string RelogUnavailableReason { get; set; }="等待当前游戏的重进连接";
public string RelogAvailabilityText => !CurrentPlayer.InGame ? "进入游戏后可重进"
: nativeStatusChecking ? "正在连接当前游戏的重进接口"
: !NativeRelogWorkflow.SupportsMode(CurrentPlayer.GameMode) ? "私人群组重进尚未接入"
: !PluginRelogReady ? RelogUnavailableReason
: "返回主菜单并重新进入" + (CurrentPlayer.GameMode == "Solo" ? "单人模式" : "公开模式");
partial void OnPluginRelogReadyChanged(bool value) => RefreshRelogAvailability();
partial void OnSystemFlightActiveChanged(bool value)
{
RefreshRelogAvailability();
StartGameCommand.NotifyCanExecuteChanged();
RestartGameCommand.NotifyCanExecuteChanged();
}
private void RefreshRelogAvailability()
{
OnPropertyChanged(nameof(RelogAvailabilityText));
RelogGameCommand.NotifyCanExecuteChanged();
}
private void ReportRelogProgress(string message) => dispatcher.TryEnqueue(() =>
{
SessionMessage = message;
runtime.Log("会话", message);
});
}