Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/DeckUtil.cs
gamer147 824309ec44 feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the
AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed
the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
2026-06-05 20:30:59 -04:00

68 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Wizard;
public class DeckUtil
{
public static string CreateDefaultDeckName(ClassSet classSet, bool useSubClass, ICollection<string> otherDeckNames, Format format, MyRotationInfo myRotationInfo)
{
return CreateUniqueDeckName(CreateBaseDeckName(classSet, useSubClass, format, myRotationInfo), otherDeckNames);
}
private static string CreateBaseDeckName(ClassSet classSet, bool useSubClass, Format format, MyRotationInfo myRotationInfo)
{
if (format == Format.MyRotation)
{
return Data.SystemText.Get("MyRotation_ID_02", UIUtil.GetMyRotationDefaultDeckClassName(classSet.MainClass), myRotationInfo.LastPackText);
}
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
if (useSubClass)
{
return $"{UIUtil.GetShortClassName(classSet.MainClass)}/{UIUtil.GetShortClassName(classSet.SubClass)}";
}
if (format == Format.Rotation)
{
string shortName = Data.Master.CardSetNameMgr.Get(Data.Load.data.RotationLatestCardPackId.ToString()).ShortName;
return Data.SystemText.Get("MyRotation_ID_02", UIUtil.GetMyRotationDefaultDeckClassName(classSet.MainClass), shortName);
}
return dataMgr.GetClanNameByKey((int)classSet.MainClass);
}
private static string CreateUniqueDeckName(string baseName, ICollection<string> otherDeckNames)
{
int num = 2;
string text = baseName;
while (otherDeckNames.Contains(text))
{
text = $"{baseName} ({num++})";
}
return text;
}
public static bool IsDefaultDeckName(ClassSet classSet, bool useSubClass, string deckName, Format format, MyRotationInfo myRotationInfo)
{
string text = CreateBaseDeckName(classSet, useSubClass, format, myRotationInfo);
if (!deckName.StartsWith(text, StringComparison.Ordinal))
{
return false;
}
string text2 = deckName.Substring(text.Length);
if (text2.Length == 0)
{
return true;
}
Match match = Regex.Match(text2, "^\\s\\(([0-9]+)\\)$");
if (!match.Success)
{
return false;
}
if (!int.TryParse(match.Groups[1].Value, out var result))
{
return false;
}
return result >= 2;
}
}