mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-18 18:20:39 +08:00
@@ -18,6 +18,8 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using MaaWpfGui.Constants;
|
||||
using MaaWpfGui.Helper;
|
||||
using MaaWpfGui.Models.AsstTasks;
|
||||
using MaaWpfGui.Services;
|
||||
using MaaWpfGui.Utilities.ValueType;
|
||||
using MaaWpfGui.ViewModels.UI;
|
||||
using Newtonsoft.Json;
|
||||
@@ -365,15 +367,9 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public bool RoguelikeSquadIsProfessional =>
|
||||
RoguelikeMode == 4 &&
|
||||
RoguelikeTheme != Theme.Phantom &&
|
||||
RoguelikeSquad is "突击战术分队" or "堡垒战术分队" or "远程战术分队" or "破坏战术分队";
|
||||
public bool RoguelikeSquadIsProfessional => RoguelikeMode == 4 && RoguelikeTheme != Theme.Phantom && RoguelikeSquad is "突击战术分队" or "堡垒战术分队" or "远程战术分队" or "破坏战术分队";
|
||||
|
||||
public bool RoguelikeSquadIsFoldartal =>
|
||||
RoguelikeMode == 4 &&
|
||||
RoguelikeTheme == Theme.Sami &&
|
||||
RoguelikeSquad == "生活至上分队";
|
||||
public bool RoguelikeSquadIsFoldartal => RoguelikeMode == 4 && RoguelikeTheme == Theme.Sami && RoguelikeSquad == "生活至上分队";
|
||||
|
||||
private string _roguelikeRoles = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeRoles, string.Empty);
|
||||
|
||||
@@ -435,7 +431,7 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether core char need start with elite two.
|
||||
/// </summary>
|
||||
public bool RoguelikeStartWithEliteTwoRaw
|
||||
public bool RoguelikeStartWithEliteTwo
|
||||
{
|
||||
get => _roguelikeStartWithEliteTwo;
|
||||
set
|
||||
@@ -456,11 +452,6 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether core char need start with elite two.
|
||||
/// </summary>
|
||||
public bool RoguelikeStartWithEliteTwo => _roguelikeStartWithEliteTwo && RoguelikeSquadIsProfessional;
|
||||
|
||||
private bool _roguelikeOnlyStartWithEliteTwo = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeOnlyStartWithEliteTwo, bool.FalseString));
|
||||
|
||||
/// <summary>
|
||||
@@ -479,7 +470,7 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether only need with elite two's core char.
|
||||
/// </summary>
|
||||
public bool RoguelikeOnlyStartWithEliteTwo => _roguelikeOnlyStartWithEliteTwo && RoguelikeStartWithEliteTwo;
|
||||
public bool RoguelikeOnlyStartWithEliteTwo => _roguelikeOnlyStartWithEliteTwo && _roguelikeStartWithEliteTwo && RoguelikeSquadIsProfessional;
|
||||
|
||||
public static Dictionary<string, string> RoguelikeStartWithAllDict { get; } = new()
|
||||
{
|
||||
@@ -493,7 +484,7 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
{ "Sarkaz@Roguelike@LastReward5", LocalizationHelper.GetString("RoguelikeStartWithIdea") },
|
||||
};
|
||||
|
||||
private static object[] _roguelikeStartWithSelectListRaw = ConfigurationHelper.GetGlobalValue(ConfigurationKeys.RoguelikeStartWithSelectList, "Roguelike@LastReward Roguelike@LastReward4 Sarkaz@Roguelike@LastReward5")
|
||||
private object[] _roguelikeStartWithSelectListRaw = ConfigurationHelper.GetGlobalValue(ConfigurationKeys.RoguelikeStartWithSelectList, "Roguelike@LastReward Roguelike@LastReward4 Sarkaz@Roguelike@LastReward5")
|
||||
.Split(' ')
|
||||
.Where(s => RoguelikeStartWithAllDict.ContainsKey(s.ToString()))
|
||||
.Select(s => (object)new KeyValuePair<string, string>(s, RoguelikeStartWithAllDict[s]))
|
||||
@@ -511,14 +502,14 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> RoguelikeStartWithSelectList => (RoguelikeMode == 4 && !RoguelikeOnlyStartWithEliteTwo) ? _roguelikeStartWithSelectListRaw.Cast<KeyValuePair<string, string>>().Select(pair => pair.Key).ToList() : [];
|
||||
public List<string> RoguelikeStartWithSelectList => _roguelikeStartWithSelectListRaw.Cast<KeyValuePair<string, string>>().Select(pair => pair.Key).ToList();
|
||||
|
||||
private bool _roguelike3FirstFloorFoldartal = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.Roguelike3FirstFloorFoldartal, bool.FalseString));
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether core char need start with elite two.
|
||||
/// </summary>
|
||||
public bool Roguelike3FirstFloorFoldartalRaw
|
||||
public bool Roguelike3FirstFloorFoldartal
|
||||
{
|
||||
get => _roguelike3FirstFloorFoldartal;
|
||||
set
|
||||
@@ -528,20 +519,16 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether core char need start with elite two.
|
||||
/// </summary>
|
||||
public bool Roguelike3FirstFloorFoldartal => _roguelike3FirstFloorFoldartal && RoguelikeMode == 4 && RoguelikeTheme == Theme.Sami;
|
||||
private string _roguelike3FirstFloorFoldartals = ConfigurationHelper.GetValue(ConfigurationKeys.Roguelike3FirstFloorFoldartals, string.Empty).Trim();
|
||||
|
||||
private string _roguelike3StartFloorFoldartal = ConfigurationHelper.GetValue(ConfigurationKeys.Roguelike3StartFloorFoldartal, string.Empty);
|
||||
|
||||
public string Roguelike3StartFloorFoldartal
|
||||
public string Roguelike3FirstFloorFoldartals
|
||||
{
|
||||
get => _roguelike3StartFloorFoldartal;
|
||||
get => _roguelike3FirstFloorFoldartals;
|
||||
set
|
||||
{
|
||||
SetAndNotify(ref _roguelike3StartFloorFoldartal, value);
|
||||
ConfigurationHelper.SetValue(ConfigurationKeys.Roguelike3StartFloorFoldartal, value);
|
||||
value = value.Trim();
|
||||
SetAndNotify(ref _roguelike3FirstFloorFoldartals, value);
|
||||
ConfigurationHelper.SetValue(ConfigurationKeys.Roguelike3FirstFloorFoldartals, value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -550,7 +537,7 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether core char need start with elite two.
|
||||
/// </summary>
|
||||
public bool Roguelike3NewSquad2StartingFoldartalRaw
|
||||
public bool Roguelike3NewSquad2StartingFoldartal
|
||||
{
|
||||
get => _roguelike3NewSquad2StartingFoldartal;
|
||||
set
|
||||
@@ -560,24 +547,20 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether core char need start with elite two.
|
||||
/// </summary>
|
||||
public bool Roguelike3NewSquad2StartingFoldartal => _roguelike3NewSquad2StartingFoldartal && RoguelikeSquadIsFoldartal;
|
||||
|
||||
private string _roguelike3NewSquad2StartingFoldartals = ConfigurationHelper.GetValue(ConfigurationKeys.Roguelike3NewSquad2StartingFoldartals, string.Empty);
|
||||
private string _roguelike3NewSquad2StartingFoldartals = ConfigurationHelper.GetValue(ConfigurationKeys.Roguelike3NewSquad2StartingFoldartals, string.Empty).Replace(';', ';').Trim();
|
||||
|
||||
public string Roguelike3NewSquad2StartingFoldartals
|
||||
{
|
||||
get => _roguelike3NewSquad2StartingFoldartals;
|
||||
set
|
||||
{
|
||||
value = value.Replace(';', ';').Trim();
|
||||
SetAndNotify(ref _roguelike3NewSquad2StartingFoldartals, value);
|
||||
ConfigurationHelper.SetValue(ConfigurationKeys.Roguelike3NewSquad2StartingFoldartals, value);
|
||||
}
|
||||
}
|
||||
|
||||
private string _roguelikeExpectedCollapsalParadigms = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeExpectedCollapsalParadigms, string.Empty);
|
||||
private string _roguelikeExpectedCollapsalParadigms = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeExpectedCollapsalParadigms, string.Empty).Replace(";", ";").Trim();
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the expected collapsal paradigms.
|
||||
@@ -588,6 +571,7 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
get => _roguelikeExpectedCollapsalParadigms;
|
||||
set
|
||||
{
|
||||
value = value.Replace(';', ';').Trim();
|
||||
SetAndNotify(ref _roguelikeExpectedCollapsalParadigms, value);
|
||||
ConfigurationHelper.SetValue(ConfigurationKeys.RoguelikeExpectedCollapsalParadigms, value);
|
||||
}
|
||||
@@ -603,9 +587,9 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
get => _roguelikeUseSupportUnit;
|
||||
set
|
||||
{
|
||||
if (value && RoguelikeStartWithEliteTwo)
|
||||
if (value && _roguelikeStartWithEliteTwo && RoguelikeSquadIsProfessional)
|
||||
{
|
||||
RoguelikeStartWithEliteTwoRaw = false;
|
||||
RoguelikeStartWithEliteTwo = false;
|
||||
}
|
||||
|
||||
SetAndNotify(ref _roguelikeUseSupportUnit, value);
|
||||
@@ -628,17 +612,17 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
}
|
||||
}
|
||||
|
||||
private string _roguelikeStartsCount = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeStartsCount, "99999");
|
||||
private int _roguelikeStartsCount = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeStartsCount, 99999);
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the start count of roguelike.
|
||||
/// </summary>
|
||||
public int RoguelikeStartsCount
|
||||
{
|
||||
get => int.Parse(_roguelikeStartsCount);
|
||||
get => _roguelikeStartsCount;
|
||||
set
|
||||
{
|
||||
SetAndNotify(ref _roguelikeStartsCount, value.ToString());
|
||||
SetAndNotify(ref _roguelikeStartsCount, value);
|
||||
ConfigurationHelper.SetValue(ConfigurationKeys.RoguelikeStartsCount, value.ToString());
|
||||
}
|
||||
}
|
||||
@@ -715,17 +699,17 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
}
|
||||
}
|
||||
|
||||
private string _roguelikeInvestsCount = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeInvestsCount, "9999999");
|
||||
private int _roguelikeInvestsCount = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeInvestsCount, 999);
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the invests count of roguelike.
|
||||
/// </summary>
|
||||
public int RoguelikeInvestsCount
|
||||
{
|
||||
get => int.Parse(_roguelikeInvestsCount);
|
||||
get => _roguelikeInvestsCount;
|
||||
set
|
||||
{
|
||||
SetAndNotify(ref _roguelikeInvestsCount, value.ToString());
|
||||
SetAndNotify(ref _roguelikeInvestsCount, value);
|
||||
ConfigurationHelper.SetValue(ConfigurationKeys.RoguelikeInvestsCount, value.ToString());
|
||||
}
|
||||
}
|
||||
@@ -820,22 +804,91 @@ public class RoguelikeSettingsUserControlModel : TaskViewModel
|
||||
}
|
||||
}
|
||||
|
||||
private bool _roguelikeStartWithSeedRaw = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeStartWithSeed, bool.FalseString));
|
||||
private bool _roguelikeStartWithSeed = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeStartWithSeed, bool.FalseString));
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether start with seed when investing in Sarkaz.
|
||||
/// </summary>
|
||||
public bool RoguelikeStartWithSeedRaw
|
||||
public bool RoguelikeStartWithSeed
|
||||
{
|
||||
get => _roguelikeStartWithSeedRaw;
|
||||
get => _roguelikeStartWithSeed;
|
||||
set
|
||||
{
|
||||
SetAndNotify(ref _roguelikeStartWithSeedRaw, value);
|
||||
SetAndNotify(ref _roguelikeStartWithSeed, value);
|
||||
ConfigurationHelper.SetValue(ConfigurationKeys.RoguelikeStartWithSeed, value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public bool RoguelikeStartWithSeed => _roguelikeStartWithSeedRaw && RoguelikeTheme == Theme.Sarkaz && RoguelikeMode == 1 && RoguelikeSquad is "点刺成锭分队" or "后勤分队";
|
||||
public override (AsstTaskType Type, JObject Params) Serialize()
|
||||
{
|
||||
var task = new AsstRoguelikeTask()
|
||||
{
|
||||
Theme = RoguelikeTheme,
|
||||
Mode = RoguelikeMode,
|
||||
Starts = RoguelikeStartsCount,
|
||||
Difficulty = RoguelikeDifficulty,
|
||||
Squad = RoguelikeSquad,
|
||||
Roles = RoguelikeRoles,
|
||||
CoreChar = DataHelper.GetCharacterByNameOrAlias(RoguelikeCoreChar)?.Name ?? RoguelikeCoreChar,
|
||||
UseSupport = RoguelikeUseSupportUnit,
|
||||
UseSupportNonFriend = RoguelikeEnableNonfriendSupport,
|
||||
|
||||
InvestmentEnabled = RoguelikeInvestmentEnabled,
|
||||
InvestmentCount = RoguelikeInvestsCount,
|
||||
InvestmentStopWhenFull = RoguelikeStopWhenInvestmentFull,
|
||||
InvestmentWithMoreScore = RoguelikeInvestmentWithMoreScore,
|
||||
RefreshTraderWithDice = RoguelikeTheme == Theme.Mizuki && RoguelikeRefreshTraderWithDice,
|
||||
|
||||
StopAtFinalBoss = RoguelikeStopAtFinalBoss,
|
||||
StopAtMaxLevel = RoguelikeStopAtMaxLevel,
|
||||
|
||||
// 刷开局
|
||||
CollectibleModeSquad = RoguelikeCollectibleModeSquad,
|
||||
CollectibleModeShopping = RoguelikeCollectibleModeShopping,
|
||||
StartWithEliteTwo = RoguelikeStartWithEliteTwo && RoguelikeSquadIsProfessional,
|
||||
StartWithEliteTwoNonBattle = RoguelikeOnlyStartWithEliteTwo,
|
||||
|
||||
// 月度小队
|
||||
MonthlySquadAutoIterate = RoguelikeMonthlySquadAutoIterate,
|
||||
MonthlySquadCheckComms = RoguelikeMonthlySquadCheckComms,
|
||||
|
||||
// 深入探索
|
||||
DeepExplorationAutoIterate = RoguelikeDeepExplorationAutoIterate,
|
||||
|
||||
SamiFirstFloorFoldartal = RoguelikeTheme == Theme.Sami && RoguelikeMode == 4 && Roguelike3FirstFloorFoldartal,
|
||||
SamiStartFloorFoldartal = Roguelike3FirstFloorFoldartals,
|
||||
SamiNewSquad2StartingFoldartal = Roguelike3NewSquad2StartingFoldartal && RoguelikeSquadIsFoldartal,
|
||||
SamiNewSquad2StartingFoldartals = Roguelike3NewSquad2StartingFoldartals.Split(';').Where(i => !string.IsNullOrEmpty(i)).Take(3).ToList(),
|
||||
|
||||
ExpectedCollapsalParadigms = RoguelikeExpectedCollapsalParadigms.Split(';').Where(i => !string.IsNullOrEmpty(i)).ToList(),
|
||||
StartWithSeed = RoguelikeStartWithSeed && RoguelikeTheme == Theme.Sarkaz && RoguelikeMode == 1 && RoguelikeSquad is "点刺成锭分队" or "后勤分队",
|
||||
};
|
||||
|
||||
if (RoguelikeMode == 4 && !RoguelikeOnlyStartWithEliteTwo)
|
||||
{
|
||||
var rewardKeys = new Dictionary<string, string>
|
||||
{
|
||||
{ "Roguelike@LastReward", "hot_water" },
|
||||
{ "Roguelike@LastReward2", "shield" },
|
||||
{ "Roguelike@LastReward3", "ingot" },
|
||||
{ "Roguelike@LastReward4", "hope" },
|
||||
{ "Roguelike@LastRewardRand", "random" },
|
||||
{ "Mizuki@Roguelike@LastReward5", "key" },
|
||||
{ "Mizuki@Roguelike@LastReward6", "dice" },
|
||||
{ "Sarkaz@Roguelike@LastReward5", "ideas" },
|
||||
};
|
||||
var startWithSelect = new JObject();
|
||||
foreach (var select in RoguelikeStartWithSelectList)
|
||||
{
|
||||
if (rewardKeys.TryGetValue(select, out var paramKey))
|
||||
{
|
||||
task.CollectibleModeStartRewards[paramKey] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return task.Serialize();
|
||||
}
|
||||
}
|
||||
|
||||
public enum RoguelikeTheme
|
||||
|
||||
Reference in New Issue
Block a user