refactor: 长草任务序列化重构已完成部分合并 (#13275)

* refactor: 长草任务序列化重构已完成部分打样

* perf: 计时

* perf: is int
This commit is contained in:
status102
2025-07-19 10:08:00 +08:00
committed by GitHub
parent fac3d7cf16
commit 560ba65278
4 changed files with 154 additions and 0 deletions

View File

@@ -16,6 +16,8 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using MaaWpfGui.Configuration.Factory;
using MaaWpfGui.Configuration.Single.MaaTask;
using MaaWpfGui.Constants;
using MaaWpfGui.Extensions;
using MaaWpfGui.Helper;
@@ -24,6 +26,8 @@ using MaaWpfGui.Services;
using MaaWpfGui.Utilities.ValueType;
using MaaWpfGui.ViewModels.UI;
using Newtonsoft.Json.Linq;
using Serilog;
using static MaaWpfGui.Main.AsstProxy;
namespace MaaWpfGui.ViewModels.UserControl.TaskQueue;
@@ -317,4 +321,63 @@ public class MallSettingsUserControlModel : TaskViewModel
};
return task.Serialize();
}
public override bool? SerializeTask(BaseTask baseTask, int? taskId = null)
{
if (baseTask is not MallTask mall)
{
return null;
}
var fightStage = ConfigFactory.CurrentConfig.TaskQueue.Where(x => x is FightTask).FirstOrDefault()?.IsEnable is not false && ConfigFactory.CurrentConfig.TaskQueue.Where(x => x is FightTask).Cast<FightTask>().FirstOrDefault()?.Stage1 == string.Empty;
if (fightStage)
{
Log.Warning("刷理智 当前/上次导致无法OF-1");
return false;
}
var creditFight = mall.CreditFight;
var visitFriends = mall.VisitFriends;
var lastCreditFightTaskTime = GetTaskConfig<MallTask>()?.CreditFightLastTime ?? string.Empty;
bool creditVisitOnceADay = GetTaskConfig<MallTask>()?.VisitFriendsOnceADay ?? default;
var lastCreditVisitFriendsTime = GetTaskConfig<MallTask>()?.VisitFriendsLastTime ?? string.Empty;
try
{
creditFight &= DateTime.UtcNow.ToYjDate() > DateTime.ParseExact(lastCreditFightTaskTime.Replace('-', '/'), "yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture);
}
catch
{
}
try
{
visitFriends &= !creditVisitOnceADay || DateTime.UtcNow.ToYjDate() > DateTime.ParseExact(lastCreditVisitFriendsTime.Replace('-', '/'), "yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture);
}
catch
{
}
var task = new AsstMallTask()
{
CreditFight = creditFight && !fightStage,
SelectFormation = mall.CreditFightFormation,
VisitFriends = visitFriends,
WithShopping = mall.Shopping,
FirstList = [.. mall.FirstList.Split(';').Select(s => s.Trim())],
Blacklist = [.. mall.BlackList.Split(';').Select(s => s.Trim()).Union(_blackCharacterListMapping[SettingsViewModel.GameSettings.ClientType])],
ForceShoppingIfCreditFull = mall.ShoppingIgnoreBlackListWhenFull,
OnlyBuyDiscount = mall.OnlyBuyDiscount,
ReserveMaxCredit = mall.ReserveMaxCredit,
};
if (taskId is int id)
{
return Instances.AsstProxy.AsstSetTaskParamsEncoded(id, task);
}
else
{
return Instances.AsstProxy.AsstAppendTaskWithEncoding(TaskType.Mall, task);
}
}
}