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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
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);
    });
}