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.
This commit is contained in:
841
SVSim.BattleEngine/Engine/Wizard/CardParameter.cs
Normal file
841
SVSim.BattleEngine/Engine/Wizard/CardParameter.cs
Normal file
@@ -0,0 +1,841 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using Wizard.Battle.View;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class CardParameter
|
||||
{
|
||||
public class AttackEffectParameter
|
||||
{
|
||||
private const int NORMAL = 0;
|
||||
|
||||
private const int EVOLVE = 1;
|
||||
|
||||
private List<string> _effectPath;
|
||||
|
||||
private List<string> _se;
|
||||
|
||||
private List<EffectMgr.MoveType> _moveType;
|
||||
|
||||
private List<EffectMgr.EngineType> _effectEnginType;
|
||||
|
||||
private List<float> _time;
|
||||
|
||||
public AttackEffectParameter(CardCSVData card)
|
||||
{
|
||||
string normal = "";
|
||||
string evolve = "";
|
||||
SpritParameter(card.atk_effect_path, ref normal, ref evolve);
|
||||
_effectPath = new List<string>();
|
||||
_effectPath.Add(normal);
|
||||
_effectPath.Add(evolve);
|
||||
SpritParameter(card.atk_se, ref normal, ref evolve);
|
||||
_se = new List<string>();
|
||||
_se.Add(normal);
|
||||
_se.Add(evolve);
|
||||
SpritParameter(card.atk_move_type, ref normal, ref evolve);
|
||||
_moveType = new List<EffectMgr.MoveType>();
|
||||
_moveType.Add(EffectMgr.ToStrMoveType(normal));
|
||||
_moveType.Add(EffectMgr.ToStrMoveType(evolve));
|
||||
SpritParameter(card.atk_effect_engin_type, ref normal, ref evolve);
|
||||
_effectEnginType = new List<EffectMgr.EngineType>();
|
||||
_effectEnginType.Add(EffectMgr.ToStrEngineType(normal));
|
||||
_effectEnginType.Add(EffectMgr.ToStrEngineType(evolve));
|
||||
SpritParameter(card.atk_time, ref normal, ref evolve);
|
||||
_time = new List<float>();
|
||||
_time.Add(float.Parse(normal));
|
||||
_time.Add(float.Parse(evolve));
|
||||
}
|
||||
|
||||
public void SpritParameter(string parameter, ref string normal, ref string evolve)
|
||||
{
|
||||
List<string> list = parameter.Split(new string[1] { "//" }, StringSplitOptions.None).ToList();
|
||||
if (list.Count > 1)
|
||||
{
|
||||
normal = list[0];
|
||||
evolve = list[1];
|
||||
}
|
||||
else if (list.Count == 1 && list[0] != "")
|
||||
{
|
||||
normal = list[0];
|
||||
evolve = list[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
normal = "";
|
||||
evolve = "";
|
||||
}
|
||||
}
|
||||
|
||||
public string GetEffectPath(bool isEvolve)
|
||||
{
|
||||
int index = (isEvolve ? 1 : 0);
|
||||
return _effectPath[index];
|
||||
}
|
||||
|
||||
public string GetSe(bool isEvolve)
|
||||
{
|
||||
int index = (isEvolve ? 1 : 0);
|
||||
return _se[index];
|
||||
}
|
||||
|
||||
public EffectMgr.MoveType GetMoveType(bool isEvolve)
|
||||
{
|
||||
int index = (isEvolve ? 1 : 0);
|
||||
return _moveType[index];
|
||||
}
|
||||
|
||||
public EffectMgr.EngineType GetEffectEnginType(bool isEvolve)
|
||||
{
|
||||
int index = (isEvolve ? 1 : 0);
|
||||
return _effectEnginType[index];
|
||||
}
|
||||
|
||||
public float GetTime(bool isEvolve)
|
||||
{
|
||||
int index = (isEvolve ? 1 : 0);
|
||||
return _time[index];
|
||||
}
|
||||
}
|
||||
|
||||
public const string TRIBE_NAME_ALL = "ALL";
|
||||
|
||||
private static readonly Vector4 DEFAULT_TEXTURE_TILLILNG_OFFSET = new Vector4(1f, 1f, 0f, 0f);
|
||||
|
||||
private string _cardNameId = string.Empty;
|
||||
|
||||
private string _cardName;
|
||||
|
||||
private string _tribeNameId = string.Empty;
|
||||
|
||||
private string _tribeName;
|
||||
|
||||
private string _skillDescriptionId = string.Empty;
|
||||
|
||||
private string _skillDescription;
|
||||
|
||||
private string _evoSkillDescriptionId = string.Empty;
|
||||
|
||||
private string _evoSkillDescription;
|
||||
|
||||
private string _descriptionId = string.Empty;
|
||||
|
||||
private string _description;
|
||||
|
||||
private string _evoDescriptionId = string.Empty;
|
||||
|
||||
private string _evoDescription;
|
||||
|
||||
private string _cardVoiceId = string.Empty;
|
||||
|
||||
private string _cardVoice;
|
||||
|
||||
private string _convertedSkillDescription;
|
||||
|
||||
private string _convertedEvoSkillDescription;
|
||||
|
||||
private const int VARIABLE_COST = -99;
|
||||
|
||||
public string CardName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_cardName != null)
|
||||
{
|
||||
return _cardName;
|
||||
}
|
||||
return _cardName = ConvCardName(_cardNameId);
|
||||
}
|
||||
}
|
||||
|
||||
public string CardHiragana => ConvCardNameToHiragana(CardName);
|
||||
|
||||
public string TribeName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_tribeName != null)
|
||||
{
|
||||
return _tribeName;
|
||||
}
|
||||
return _tribeName = ConvTribeName(_tribeNameId);
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsTribeAll => _tribeNameId == "TN_すべて";
|
||||
|
||||
public string SkillDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_skillDescription != null)
|
||||
{
|
||||
return _skillDescription;
|
||||
}
|
||||
return _skillDescription = ConvSkillDescription(_skillDescriptionId);
|
||||
}
|
||||
set
|
||||
{
|
||||
_skillDescription = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string EvoSkillDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_evoSkillDescription != null)
|
||||
{
|
||||
return _evoSkillDescription;
|
||||
}
|
||||
return _evoSkillDescription = ConvSkillDescription(_evoSkillDescriptionId);
|
||||
}
|
||||
set
|
||||
{
|
||||
_evoSkillDescription = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Description
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_description != null)
|
||||
{
|
||||
return _description;
|
||||
}
|
||||
return _description = ConvFlavourText(_descriptionId);
|
||||
}
|
||||
}
|
||||
|
||||
public string EvoDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_evoDescription != null)
|
||||
{
|
||||
return _evoDescription;
|
||||
}
|
||||
return _evoDescription = ConvFlavourText(_evoDescriptionId);
|
||||
}
|
||||
}
|
||||
|
||||
public string CardVoice
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_cardVoice != null)
|
||||
{
|
||||
return _cardVoice;
|
||||
}
|
||||
return _cardVoice = ConvCardVoiceText(_cardVoiceId);
|
||||
}
|
||||
}
|
||||
|
||||
public string ConvertedSkillDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_convertedSkillDescription != null)
|
||||
{
|
||||
return _convertedSkillDescription;
|
||||
}
|
||||
_convertedSkillDescription = BattleCardBase.ConvertSkillDescriptionText(SkillDescription);
|
||||
if (_convertedSkillDescription == null)
|
||||
{
|
||||
_convertedSkillDescription = string.Empty;
|
||||
}
|
||||
return _convertedSkillDescription;
|
||||
}
|
||||
}
|
||||
|
||||
public string ConvertedEvoSkillDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_convertedEvoSkillDescription != null)
|
||||
{
|
||||
return _convertedEvoSkillDescription;
|
||||
}
|
||||
_convertedEvoSkillDescription = BattleCardBase.ConvertSkillDescriptionText(EvoSkillDescription);
|
||||
if (_convertedEvoSkillDescription == null)
|
||||
{
|
||||
_convertedEvoSkillDescription = string.Empty;
|
||||
}
|
||||
return _convertedEvoSkillDescription;
|
||||
}
|
||||
}
|
||||
|
||||
public int CardId { get; private set; }
|
||||
|
||||
public bool IsChoiceEvolutionCard => CardId / 1000000 == 910;
|
||||
|
||||
public string CardHashId { get; private set; }
|
||||
|
||||
public int ResourceCardId { get; private set; }
|
||||
|
||||
public string CardSetId { get; private set; }
|
||||
|
||||
public bool IsFoil { get; private set; }
|
||||
|
||||
public string Path { get; private set; }
|
||||
|
||||
public CardBasePrm.CharaType CharType { get; private set; }
|
||||
|
||||
public CardBasePrm.ClanType Clan { get; private set; }
|
||||
|
||||
public List<CardBasePrm.TribeType> Tribe { get; private set; }
|
||||
|
||||
public string Skill { get; private set; }
|
||||
|
||||
public string SkillTiming { get; private set; }
|
||||
|
||||
public string SkillCondition { get; private set; }
|
||||
|
||||
public string SkillTarget { get; private set; }
|
||||
|
||||
public string SkillOption { get; private set; }
|
||||
|
||||
public string SkillPreprocess { get; private set; }
|
||||
|
||||
public HandCardFrameEffectType[] SkillHandCardFrameEffectType { get; private set; }
|
||||
|
||||
public string SkillIcon { get; private set; }
|
||||
|
||||
public string SummonEffectPath { get; private set; }
|
||||
|
||||
public string SummonSePath { get; private set; }
|
||||
|
||||
public EffectMgr.MoveType SummonMoveType { get; private set; }
|
||||
|
||||
public EffectMgr.EngineType SummonEffectType { get; private set; }
|
||||
|
||||
public float SummonTime { get; private set; }
|
||||
|
||||
public AttackEffectParameter AtkEffectParameter { get; private set; }
|
||||
|
||||
public string[] SkillEffectPath { get; private set; }
|
||||
|
||||
public string[] SkillSe { get; private set; }
|
||||
|
||||
public EffectMgr.MoveType[] SkillMoveType { get; private set; }
|
||||
|
||||
public EffectMgr.EngineType[] SkillEffectEnginType { get; private set; }
|
||||
|
||||
public string[] SkillEffectTime { get; private set; }
|
||||
|
||||
public EffectMgr.TargetType[] SkillEffectTargetType { get; private set; }
|
||||
|
||||
public EffectMgr.TargetType[] EvoSkillEffectTargetType { get; private set; }
|
||||
|
||||
public string[] EvoSkillEffectPath { get; private set; }
|
||||
|
||||
public string[] EvoSkillSe { get; private set; }
|
||||
|
||||
public EffectMgr.MoveType[] EvoSkillMoveType { get; private set; }
|
||||
|
||||
public EffectMgr.EngineType[] EvoSkillEffectEnginType { get; private set; }
|
||||
|
||||
public string[] EvoSkillEffectTime { get; private set; }
|
||||
|
||||
public bool IsResurgentCard { get; private set; }
|
||||
|
||||
public int Cost { get; private set; }
|
||||
|
||||
public bool IsVariableCost { get; private set; }
|
||||
|
||||
public int Atk { get; private set; }
|
||||
|
||||
public int Life { get; private set; }
|
||||
|
||||
public int EvoAtk { get; private set; }
|
||||
|
||||
public int EvoLife { get; private set; }
|
||||
|
||||
public int ChantCount { get; private set; }
|
||||
|
||||
public int Rarity { get; private set; }
|
||||
|
||||
public int GetRedEther { get; private set; }
|
||||
|
||||
public int UseRedEther { get; private set; }
|
||||
|
||||
public string[] EvolEffectPath { get; private set; }
|
||||
|
||||
public string[] EvolSePath { get; private set; }
|
||||
|
||||
public EffectMgr.EngineType EvoEffectType { get; private set; }
|
||||
|
||||
public float EvolTime { get; private set; }
|
||||
|
||||
public string DestroyEffectPath { get; private set; }
|
||||
|
||||
public int BaseCardId { get; private set; }
|
||||
|
||||
public int NormalCardId { get; private set; }
|
||||
|
||||
public int FoilCardId { get; private set; }
|
||||
|
||||
public string PlayVoice { get; private set; }
|
||||
|
||||
public string EvoVoice { get; private set; }
|
||||
|
||||
public string AtkVoice { get; private set; }
|
||||
|
||||
public string DestroyVoice { get; private set; }
|
||||
|
||||
public string SkillVoice { get; private set; }
|
||||
|
||||
public Vector2 NormalTilling { get; private set; }
|
||||
|
||||
public Vector2 NormalOffset { get; private set; }
|
||||
|
||||
public Vector2 EvolTilling { get; private set; }
|
||||
|
||||
public Vector2 EvolOffset { get; private set; }
|
||||
|
||||
public bool IsPrizeCard => CardSetNameMgr.IsPrizeSetId(int.Parse(CardSetId));
|
||||
|
||||
public bool IsBasicCard => CardSetNameMgr.IsBasicSetId(int.Parse(CardSetId));
|
||||
|
||||
public bool IsTokenCard => CardSetNameMgr.IsTokenSetId(int.Parse(CardSetId));
|
||||
|
||||
public bool IsCollaboCard => CardSetNameMgr.IsCollaboSetId(int.Parse(CardSetId));
|
||||
|
||||
public bool IsEvolveChoiceCard => CardId.ToString().Substring(0, 3) == "910";
|
||||
|
||||
public bool IsPhantomCard => SealedData.IsPhantomCard(CardId);
|
||||
|
||||
public bool IsReprintedCard => CardId / 100000000 == 7;
|
||||
|
||||
public bool IsEnableFavorite
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IsBasicCard && NormalCardId == BaseCardId)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsPreReleaseCard
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Prerelease.Status == Prerelease.eStatus.PRE_ROTATION && CardSetId == Prerelease.Instance.NextCardSetId.ToString())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsNotCraftDestruct
|
||||
{
|
||||
get
|
||||
{
|
||||
if (GetRedEther > 0 || UseRedEther > 0)
|
||||
{
|
||||
return IsPreReleaseCard;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public bool CanCraft
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IsPreReleaseCard)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return UseRedEther > 0;
|
||||
}
|
||||
}
|
||||
|
||||
public int SameKindNumMaxInUnlimited { get; private set; }
|
||||
|
||||
public int SameKindNumMaxInCrossoverMainClass { get; private set; }
|
||||
|
||||
public int SameKindNumMaxInCrossoverSubClass { get; private set; }
|
||||
|
||||
public int SortIndex { get; private set; }
|
||||
|
||||
public int GetSameKindNumMaxInFormat(Format inFormat, IFormatBehavior behavior, ClassType classType, MyRotationInfo myRotationInfo = null)
|
||||
{
|
||||
int result = 0;
|
||||
if (IsAvailableFormat(inFormat, classType, myRotationInfo))
|
||||
{
|
||||
switch (inFormat)
|
||||
{
|
||||
case Format.Unlimited:
|
||||
result = SameKindNumMaxInUnlimited;
|
||||
if (IsResurgentCard)
|
||||
{
|
||||
result = 0;
|
||||
}
|
||||
break;
|
||||
case Format.Crossover:
|
||||
result = ((classType == ClassType.MainClass) ? SameKindNumMaxInCrossoverMainClass : SameKindNumMaxInCrossoverSubClass);
|
||||
break;
|
||||
case Format.MyRotation:
|
||||
result = myRotationInfo.GetSameCardCount(BaseCardId);
|
||||
break;
|
||||
default:
|
||||
result = behavior.DeckSameKindCardNumMax;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool IsAvailableFormat(Format inFormat, ClassType classType, MyRotationInfo myRotationInfo = null)
|
||||
{
|
||||
int num = int.Parse(CardSetId);
|
||||
Prerelease instance = Prerelease.Instance;
|
||||
switch (inFormat)
|
||||
{
|
||||
case Format.PreRotation:
|
||||
if (instance.RotationCardSetList.Contains(num) || instance.ReprintedBaseCardIds.Contains(BaseCardId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
case Format.Rotation:
|
||||
if (Data.Load.data.RotationCardSetList.Contains(num) || Data.Load.data.ReprintedBaseCardIds.Contains(BaseCardId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (Prerelease.Status == Prerelease.eStatus.PRE_ROTATION && instance.NextCardSetId == num && instance.LatestReprintedBaseCardIds.Contains(BaseCardId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
case Format.Unlimited:
|
||||
if (IsResurgentCard)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (Prerelease.Status == Prerelease.eStatus.PRE_ROTATION && instance.NextCardSetId == num && !instance.ReprintedBaseCardIds.Contains(BaseCardId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return SameKindNumMaxInUnlimited > 0;
|
||||
case Format.Sealed:
|
||||
return Data.ArenaData.SealedMyPageResponseData.CardPackIdList.Contains(CardSetId);
|
||||
case Format.Crossover:
|
||||
if (!Data.Crossover.CardSetIdList.Contains(num) && !Data.Crossover.ReprintedBaseCardIds.Contains(BaseCardId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (classType != ClassType.MainClass)
|
||||
{
|
||||
return SameKindNumMaxInCrossoverSubClass > 0;
|
||||
}
|
||||
return SameKindNumMaxInCrossoverMainClass > 0;
|
||||
case Format.MyRotation:
|
||||
if (myRotationInfo.GetSameCardCount(BaseCardId) == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (myRotationInfo.IsRePrintCard(BaseCardId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (myRotationInfo.IsEnableCardPackId(CardSetId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public CardParameter(CardBasePrm.ClanType clan = CardBasePrm.ClanType.ALL)
|
||||
{
|
||||
Life = 20;
|
||||
Clan = clan;
|
||||
}
|
||||
|
||||
public void ChangeClanParameter(CardBasePrm.ClanType clan = CardBasePrm.ClanType.ALL)
|
||||
{
|
||||
Clan = clan;
|
||||
}
|
||||
|
||||
public CardParameter(CardCSVData card)
|
||||
{
|
||||
SortIndex = card.SortIndex;
|
||||
CardId = int.Parse(card.card_id);
|
||||
if (string.IsNullOrEmpty(card.resource_card_id))
|
||||
{
|
||||
ResourceCardId = CardId;
|
||||
}
|
||||
else
|
||||
{
|
||||
ResourceCardId = int.Parse(card.resource_card_id);
|
||||
}
|
||||
if (!CardMaster.IsUseLocalCardMaster())
|
||||
{
|
||||
CardHashId = card.CardHashId;
|
||||
}
|
||||
CardSetId = card.card_set_id;
|
||||
IsFoil = card.is_foil == "1";
|
||||
Path = card.path;
|
||||
CharType = CardBasePrm.ToStrCharaType(card.char_type);
|
||||
Clan = CardBasePrm.ToStrClanType(card.clan);
|
||||
Tribe = CreateTribeList(card.tribe);
|
||||
Skill = card.skill;
|
||||
SkillTiming = card.skill_timing;
|
||||
SkillCondition = card.skill_condition;
|
||||
SkillTarget = card.skill_target;
|
||||
SkillOption = card.skill_option;
|
||||
SkillPreprocess = card.skill_preprocess;
|
||||
SkillHandCardFrameEffectType = HandCardFrameEffectControl.ToStrFrameEffect(card.skill_effect_condition);
|
||||
SkillIcon = card.skill_icon;
|
||||
SummonEffectPath = card.summon_effect_path;
|
||||
SummonSePath = card.summon_se_path;
|
||||
SummonMoveType = EffectMgr.ToStrMoveType(card.summon_move_type);
|
||||
SummonEffectType = EffectMgr.ToStrEngineType(card.summon_effect_type);
|
||||
SummonTime = ToFloat(card.summon_time);
|
||||
AtkEffectParameter = new AttackEffectParameter(card);
|
||||
SkillEffectPath = SplitString(card.skill_effect_path);
|
||||
SkillSe = SplitString(card.skill_se);
|
||||
SkillMoveType = Str2Enum(SplitString(card.skill_move_type).ToArray(), EffectMgr.ToStrMoveType);
|
||||
SkillEffectEnginType = Str2Enum(SplitString(card.skill_effect_engin_type), EffectMgr.ToStrEngineType);
|
||||
SkillEffectTime = SplitString(card.skill_effect_time);
|
||||
string[] array = SkillCreator.SplitBothSkillText(card.skill_effect_target_type);
|
||||
SkillEffectTargetType = Str2Enum(SplitString(array[0]), EffectMgr.ToStrTargetType);
|
||||
EvoSkillEffectTargetType = ((array.Length >= 2) ? Str2Enum(SplitString(array[1]), EffectMgr.ToStrTargetType) : SkillEffectTargetType);
|
||||
EvoSkillEffectPath = SplitString(card.evo_skill_effect_path);
|
||||
EvoSkillSe = SplitString(card.evo_skill_se);
|
||||
EvoSkillMoveType = Str2Enum(SplitString(card.evo_skill_move_type).ToArray(), EffectMgr.ToStrMoveType);
|
||||
EvoSkillEffectEnginType = Str2Enum(SplitString(card.evo_skill_effect_engin_type), EffectMgr.ToStrEngineType);
|
||||
EvoSkillEffectTime = SplitString(card.evo_skill_effect_time);
|
||||
Cost = int.Parse(card.cost);
|
||||
IsVariableCost = Cost == -99;
|
||||
if (IsVariableCost)
|
||||
{
|
||||
Cost = 0;
|
||||
}
|
||||
Atk = int.Parse(card.atk);
|
||||
Life = int.Parse(card.life);
|
||||
EvoAtk = int.Parse(card.evo_atk);
|
||||
EvoLife = int.Parse(card.evo_life);
|
||||
ChantCount = int.Parse(card.chant_count);
|
||||
Rarity = int.Parse(card.rarity);
|
||||
GetRedEther = int.Parse(card.get_red_ether);
|
||||
UseRedEther = int.Parse(card.use_red_ether);
|
||||
EvolEffectPath = SplitString(card.evol_effect_path);
|
||||
EvolSePath = SplitString(card.evol_se_path);
|
||||
EvoEffectType = EffectMgr.ToStrEngineType(card.evo_effect_type);
|
||||
EvolTime = ToFloat(card.evol_time);
|
||||
DestroyEffectPath = card.destroy_effect_path;
|
||||
PlayVoice = card.play_voice;
|
||||
EvoVoice = card.evo_voice;
|
||||
AtkVoice = card.atk_voice;
|
||||
DestroyVoice = card.destroy_voice;
|
||||
SkillVoice = card.skill_voice;
|
||||
BaseCardId = int.Parse(card.base_card_id);
|
||||
NormalCardId = int.Parse(card.normal_card_id);
|
||||
FoilCardId = int.Parse(card.foil_card_id);
|
||||
_cardNameId = card.CardNameId;
|
||||
_tribeNameId = card.TribeNameId;
|
||||
_descriptionId = card.DescriptionId;
|
||||
_evoDescriptionId = card.EvoDescriptionId;
|
||||
_cardVoiceId = card.CardVoiceId;
|
||||
IsResurgentCard = card.IsResurgentCard == "1";
|
||||
if (card.IsOverrideSkillDescription == "1")
|
||||
{
|
||||
_skillDescriptionId = $"OVR_{card.SkillDescriptionId}";
|
||||
_evoSkillDescriptionId = $"OVR_{card.EvoSkillDescriptionId}";
|
||||
}
|
||||
else
|
||||
{
|
||||
_skillDescriptionId = card.SkillDescriptionId;
|
||||
_evoSkillDescriptionId = card.EvoSkillDescriptionId;
|
||||
}
|
||||
Vector4 vector = ConvertToTextureTillingOffset(card.tilling_normal_x, card.tilling_normal_y, card.offset_normal_x, card.offset_normal_y);
|
||||
NormalTilling = new Vector2(vector.x, vector.y);
|
||||
NormalOffset = new Vector2(vector.z, vector.w);
|
||||
Vector4 vector2 = ConvertToTextureTillingOffset(card.tilling_evol_x, card.tilling_evol_y, card.offset_evol_x, card.offset_evol_y);
|
||||
EvolTilling = new Vector2(vector2.x, vector2.y);
|
||||
EvolOffset = new Vector2(vector2.z, vector2.w);
|
||||
SameKindNumMaxInUnlimited = FormatBehaviorManager.GetDefaultBehaviour(Format.Unlimited).DeckSameKindCardNumMax;
|
||||
for (int i = 0; i < Data.Load.data.UnlimitedRestrictedCardList.Count; i++)
|
||||
{
|
||||
UnlimitedRestrictedCard unlimitedRestrictedCard = Data.Load.data.UnlimitedRestrictedCardList[i];
|
||||
if (BaseCardId == unlimitedRestrictedCard.BaseCardId)
|
||||
{
|
||||
SameKindNumMaxInUnlimited = unlimitedRestrictedCard.Count;
|
||||
break;
|
||||
}
|
||||
}
|
||||
int deckSameKindCardNumMax = FormatBehaviorManager.GetDefaultBehaviour(Format.Crossover).DeckSameKindCardNumMax;
|
||||
CrossoverRestrictedCard restrictedCard = Data.Crossover.RestrictedCard;
|
||||
SameKindNumMaxInCrossoverMainClass = restrictedCard.GetRestrictedCountOrDefault(BaseCardId, ClassType.MainClass, deckSameKindCardNumMax);
|
||||
SameKindNumMaxInCrossoverSubClass = restrictedCard.GetRestrictedCountOrDefault(BaseCardId, ClassType.SubClass, deckSameKindCardNumMax);
|
||||
}
|
||||
|
||||
public static List<CardBasePrm.TribeType> CreateTribeList(string tribeText)
|
||||
{
|
||||
List<CardBasePrm.TribeType> list = new List<CardBasePrm.TribeType>();
|
||||
string[] array = tribeText.Split(',');
|
||||
for (int i = 0; i < array.Length; i++)
|
||||
{
|
||||
list.Add(CardBasePrm.ToStrTribeType(array[i]));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private string ConvCardName(string id)
|
||||
{
|
||||
return Data.Master.GetCardNameText(id);
|
||||
}
|
||||
|
||||
private string ConvCardNameToHiragana(string cardName)
|
||||
{
|
||||
string text = "";
|
||||
int num = 0;
|
||||
bool flag = false;
|
||||
bool flag2 = true;
|
||||
while (num < cardName.Length)
|
||||
{
|
||||
if (cardName[num] == '[')
|
||||
{
|
||||
if (cardName.Substring(num, 5) == "[rub<")
|
||||
{
|
||||
num += 5;
|
||||
flag2 = false;
|
||||
flag = true;
|
||||
}
|
||||
else if (cardName.Substring(num, 6) == "[/rub]")
|
||||
{
|
||||
num += 6;
|
||||
flag2 = true;
|
||||
}
|
||||
}
|
||||
else if (cardName[num] == '>' && cardName.Substring(num, 2) == ">]")
|
||||
{
|
||||
num += 2;
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (flag || flag2)
|
||||
{
|
||||
text += cardName[num];
|
||||
}
|
||||
num++;
|
||||
}
|
||||
}
|
||||
return ConvertToHiragana(text);
|
||||
}
|
||||
|
||||
private string ConvertToHiragana(string s)
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
char[] array = s.ToCharArray();
|
||||
for (int i = 0; i < array.Length; i++)
|
||||
{
|
||||
char c = array[i];
|
||||
if (c >= 'ァ' && c <= 'ヴ')
|
||||
{
|
||||
c = (char)(c - 96);
|
||||
}
|
||||
stringBuilder.Append(c);
|
||||
}
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
private string ConvTribeName(string id)
|
||||
{
|
||||
return Data.Master.GetTribeNameText(id);
|
||||
}
|
||||
|
||||
private string ConvSkillDescription(string id)
|
||||
{
|
||||
return Data.Master.GetSkillDescText(id);
|
||||
}
|
||||
|
||||
private string ConvFlavourText(string id)
|
||||
{
|
||||
return Data.Master.GetFlavourText(id);
|
||||
}
|
||||
|
||||
private string ConvCardVoiceText(string id)
|
||||
{
|
||||
return Data.Master.GetCardVoiceText(id);
|
||||
}
|
||||
|
||||
public CardParameter Clone()
|
||||
{
|
||||
return (CardParameter)MemberwiseClone();
|
||||
}
|
||||
|
||||
public CardParameter Clone(int cardId)
|
||||
{
|
||||
CardParameter cardParameter = Clone();
|
||||
cardParameter.CardId = cardId;
|
||||
return cardParameter;
|
||||
}
|
||||
|
||||
private float ToFloat(string stringValue, float defaultValue = 0f)
|
||||
{
|
||||
float value = defaultValue;
|
||||
TryToFloat(stringValue, out value);
|
||||
return value;
|
||||
}
|
||||
|
||||
private bool TryToFloat(string stringValue, out float value)
|
||||
{
|
||||
return float.TryParse(stringValue, NumberStyles.Number, CultureInfo.InvariantCulture, out value);
|
||||
}
|
||||
|
||||
private Vector4 ConvertToTextureTillingOffset(string stringTillingX, string stringTillingY, string stringOffsetX, string stringOffsetY)
|
||||
{
|
||||
float value = 0f;
|
||||
float value2 = 0f;
|
||||
float value3 = 0f;
|
||||
float value4 = 0f;
|
||||
if (TryToFloat(stringTillingX, out value) && TryToFloat(stringTillingY, out value2) && TryToFloat(stringOffsetX, out value3) && TryToFloat(stringOffsetY, out value4))
|
||||
{
|
||||
return new Vector4(value, value2, value3, value4);
|
||||
}
|
||||
return DEFAULT_TEXTURE_TILLILNG_OFFSET;
|
||||
}
|
||||
|
||||
private static string[] SplitString(string source)
|
||||
{
|
||||
if (source == null)
|
||||
{
|
||||
return new string[0];
|
||||
}
|
||||
return source.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries) ?? new string[1] { "" };
|
||||
}
|
||||
|
||||
private T[] Str2Enum<T>(string[] str, Func<string, T> conv)
|
||||
{
|
||||
T[] array = new T[str.Length];
|
||||
int i = 0;
|
||||
for (int num = array.Length; i < num; i++)
|
||||
{
|
||||
array[i] = conv(str[i]);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
public void UpdateEvoAtkLife(int evoAtk, int evoLife)
|
||||
{
|
||||
EvoAtk = evoAtk;
|
||||
EvoLife = evoLife;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user