mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-19 18:47:55 +08:00
refactor: 长草任务序列化重构已完成部分合并 (#13275)
* refactor: 长草任务序列化重构已完成部分打样 * perf: 计时 * perf: is int
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user