Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/MyRotationInfo.cs
gamer147 0d9d8acae0 feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
2026-06-05 16:57:20 -04:00

228 lines
6.3 KiB
C#

using System.Collections.Generic;
using LitJson;
namespace Wizard;
public class MyRotationInfo
{
public class MyRotationBonus
{
public string AbilityId { get; }
public string[] AttachAbilities { get; }
public int AddStartPp { get; }
public int AddStartLife { get; }
public int IncreaseAddPptotalTurn { get; }
public int IncreaseAddPptotalAmount { get; }
public string AbilityDesc { get; }
public bool IsEpRecoverySkill { get; }
public string IconName { get; }
public string DarkIconName { get; }
private string OriginalAbilityText { get; }
public MyRotationBonus(string abilityId, string abilityText, int addStartPp, int addStartLife, int increaseAddPptotalTurn, int increaseAddPptotalAmount, string abilityDesc)
{
AbilityId = abilityId;
OriginalAbilityText = abilityText;
AttachAbilities = abilityText.Split(',');
AddStartPp = addStartPp;
AddStartLife = addStartLife;
IncreaseAddPptotalTurn = increaseAddPptotalTurn;
IncreaseAddPptotalAmount = increaseAddPptotalAmount;
AbilityDesc = abilityDesc;
for (int i = 0; i < AttachAbilities.Length; i++)
{
if (AttachAbilities[i].Contains("possess_ep_modifier"))
{
IsEpRecoverySkill = true;
}
}
IconName = "my_rotation_ability_icon_" + abilityId;
DarkIconName = "my_rotation_ability_icon_dark_" + abilityId;
}
public static bool IsEqual(MyRotationBonus left, MyRotationBonus right)
{
if (left.AbilityId == right.AbilityId && left.OriginalAbilityText == right.OriginalAbilityText && left.AddStartPp == right.AddStartPp && left.AddStartLife == right.AddStartLife && left.IncreaseAddPptotalTurn == right.IncreaseAddPptotalTurn)
{
return left.IncreaseAddPptotalAmount == right.IncreaseAddPptotalAmount;
}
return false;
}
}
private const int NEMESIS_START_PACK_NUMBER = 7;
private List<UnlimitedRestrictedCard> _restrictedCardData = new List<UnlimitedRestrictedCard>();
private List<int> _rePrintCardList = new List<int>();
public string Id { get; }
public List<string> CardPadkIdList { get; }
public string PackSelectText { get; private set; }
public string FirstPackId { get; private set; }
public string LastPackId { get; private set; }
public string LastPackText { get; private set; }
public List<string> AbilityIdList { get; private set; }
public List<MyRotationBonus> Abilities { get; private set; }
public Dictionary<int, MyRotationRePrintInfo> RePrintDictionary { get; private set; } = new Dictionary<int, MyRotationRePrintInfo>();
public bool IsEnableNemesis { get; private set; }
public static bool IsEqualAbility(MyRotationInfo left, MyRotationInfo right)
{
if (left.Abilities.Count != right.Abilities.Count)
{
return false;
}
for (int i = 0; i < left.Abilities.Count; i++)
{
if (!MyRotationBonus.IsEqual(left.Abilities[i], right.Abilities[i]))
{
return false;
}
}
return true;
}
public MyRotationInfo(JsonData json)
{
Id = json["rotation_id"].ToString();
CardPadkIdList = new List<string>(json["card_set_ids"].ToString().Split('|'));
AbilityIdList = new List<string>(json["abilities"].ToString().Split('|'));
}
public void ParseRestrictJson(JsonData rotationRoot)
{
List<UnlimitedRestrictedCard> list = new List<UnlimitedRestrictedCard>();
foreach (string key in rotationRoot.Keys)
{
if (int.TryParse(key, out var result))
{
list.Add(new UnlimitedRestrictedCard(result, rotationRoot[key].ToInt()));
}
}
_restrictedCardData = list;
}
public bool IsRePrintCard(int baseCardId)
{
return _rePrintCardList.Contains(baseCardId);
}
public void ParseRePrintJson(JsonData rotationRoot)
{
List<int> list = new List<int>();
if (rotationRoot.Count == 0)
{
_rePrintCardList = list;
return;
}
foreach (string key in rotationRoot.Keys)
{
list.Add(rotationRoot[key].ToInt());
}
_rePrintCardList = list;
}
public void ParseAbilitiesJson(JsonData abilities)
{
List<MyRotationBonus> list = new List<MyRotationBonus>();
foreach (JsonData value in abilities.Values)
{
if (AbilityIdList.Contains(value["ability_id"].ToString()))
{
MyRotationBonus item = new MyRotationBonus(value["ability_id"].ToString(), value["ability"].ToString(), value["add_start_pp"].ToInt(), value["add_start_life"].ToInt(), value["increase_add_pptotal_turn"].ToInt(), value["increase_add_pptotal_amount"].ToInt(), value["ability_desc"].ToString());
list.Add(item);
}
}
Abilities = list;
}
public void InitializeText()
{
string text = null;
foreach (string cardPadkId in CardPadkIdList)
{
if (cardPadkId != 10000.ToString())
{
text = cardPadkId;
break;
}
}
string text2 = CardPadkIdList[CardPadkIdList.Count - 1];
string shortName = Data.Master.CardSetNameMgr.Get(text).ShortName;
string shortName2 = Data.Master.CardSetNameMgr.Get(text2).ShortName;
FirstPackId = text;
LastPackId = text2;
int num = int.Parse(text) - 10000;
int num2 = int.Parse(text2) - 10000;
PackSelectText = Data.SystemText.Get("Card_0296", shortName, shortName2, num.ToString(), num2.ToString());
LastPackText = shortName2;
IsEnableNemesis = num2 >= 7;
}
public void InitializeRePrintCard(List<CardParameter> allCardParameter)
{
foreach (int rePrintCard in _rePrintCardList)
{
RePrintDictionary.Add(rePrintCard, new MyRotationRePrintInfo(rePrintCard, allCardParameter));
}
}
public bool IsRePrintCardAvailablePack(int baseCardId, string cardPackId)
{
if (!RePrintDictionary.TryGetValue(baseCardId, out var value))
{
return false;
}
return value.IsRePrintCardAvailablePack(cardPackId);
}
public int GetSameCardCount(int baseCardId)
{
foreach (UnlimitedRestrictedCard restrictedCardDatum in _restrictedCardData)
{
if (baseCardId == restrictedCardDatum.BaseCardId)
{
return restrictedCardDatum.Count;
}
}
return FormatBehaviorManager.GetDefaultBehaviour(Format.MyRotation).DeckSameKindCardNumMax;
}
public bool IsNotUseCard(int baseCardId)
{
return GetSameCardCount(baseCardId) == 0;
}
public bool IsEnableCardPackId(string cardPackId)
{
foreach (string cardPadkId in CardPadkIdList)
{
if (cardPadkId == cardPackId)
{
return true;
}
}
return false;
}
}