Files
SVSimServer/SVSim.BattleEngine/Engine/UIBase_CardManager.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

1872 lines
70 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions;
using Cute;
using UnityEngine;
using Wizard;
public class UIBase_CardManager : MonoBehaviour
{
public enum LOAD_KIND
{
MYPAGE_HOME_DEFAULT_DECK_DATA,
SELECT_DATA,
SELECT_DATA_GACHA,
MYPAGE_HOME_CUSTOM_DECK
}
public enum ScrollType
{
HORIZONTAL,
VERTICAL
}
private enum AddCardResult
{
ADDED,
NOT_ADDED,
END
}
public class CardObjData
{
public GameObject CardObj;
public string Cost;
public int CostNum;
public int mainCardNum;
public int subCardNum;
public int ids;
public string lifes;
public int LifesNum;
public string Atks;
public int AtksNum;
public string Names;
public string Skills;
public string Evo_Costs;
public string Evo_lifes;
public string Evo_Atks;
public string Evo_Names;
public string Evo_Skills;
public bool EvolOk;
public CardBasePrm.ClanType clan;
public List<CardBasePrm.TribeType> tribe;
public CardBasePrm.CharaType cardType;
public bool isPremiere;
public bool off;
public int TotalCardNum => mainCardNum + subCardNum;
}
public class CardPrefabs
{
public GameObject SpellGameObj;
public GameObject SpellGameObj_LG;
public GameObject SpellSpecGameObj;
public GameObject FieldGameObj;
public GameObject FieldSpecGameObj;
public GameObject UnitGameObj;
public GameObject UnitSpecGameObj;
public GameObject UnitGameObj_SR;
public GameObject UnitGameObj_LG;
public GameObject m_CardBase;
public GameObject m_EPIcon;
public GameObject m_AtkIcon;
public GameObject m_LifeIcon;
public GameObject m_CostIcon;
public GameObject m_NameIcon;
public Material BaseTexBase;
public Material SpecularMaterial;
public GameObject RotationOnlyIcon { get; set; }
}
public class LoadCondition
{
public Dictionary<int, int> CurrentIds;
public int MaxCards;
public int MaxSameCard;
public LoadCondition(Dictionary<int, int> currentids, int maxCards, int maxSameCard)
{
CurrentIds = currentids;
MaxCards = maxCards;
MaxSameCard = maxSameCard;
}
public LoadCondition()
{
CurrentIds = new Dictionary<int, int>();
MaxCards = 99999999;
MaxSameCard = 9999999;
}
}
public class ComparableCard : IComparable<ComparableCard>
{
private CardParameter prm;
public ComparableCard(int id, CardMaster.CardMasterId cardMasterId)
{
prm = CardMaster.GetInstance(cardMasterId).GetCardParameterFromId(id);
}
public int CompareTo(ComparableCard other)
{
return prm.SortIndex.CompareTo(other.prm.SortIndex);
}
}
public class FilterParameter
{
public enum LookBit
{
ALL,
NORMAL,
PREMIUM
}
public enum FavoriteBit
{
ALL,
NORMAL,
FAVORITE
}
public enum SpotBit
{
ALL,
NORMAL,
SPOT
}
public const int FILTER_COST_MAX = 8;
public const int FILTER_ATTACK_MAX = 8;
public const int FILTER_LIFE_MAX = 8;
public int Cost;
public int Class;
public int Foil;
public int Type;
public int Rarity;
public int Favorite;
public int Spot;
public int Own;
public int Craftable;
public int Attack;
public int Life;
public string Word;
public Format FormatState = Format.Max;
public MyRotationInfo MyRotationInfoForFormatAvailable;
public List<string> KeyWordList;
public List<CardBasePrm.TribeType> TypeFilter;
public List<string> CardSetIdList;
public List<string> DisableCardSetidList = new List<string>();
public List<string> CardSetIdList2 = new List<string>();
public bool IsEnabledPrizeCard;
public bool IsEnabledPhantomCard;
public string CharacterVoice;
public bool IsEnableResurgentCard = true;
public ClassSet FixedClassSet;
public FilterParameter(FilterParameter param)
{
Cost = param.Cost;
Class = param.Class;
Foil = param.Foil;
Type = param.Type;
Rarity = param.Rarity;
Favorite = param.Favorite;
Spot = param.Spot;
Own = param.Own;
Craftable = param.Craftable;
Attack = param.Attack;
Life = param.Life;
Word = param.Word;
FormatState = param.FormatState;
KeyWordList = param.KeyWordList;
TypeFilter = param.TypeFilter;
CardSetIdList = param.CardSetIdList;
DisableCardSetidList = param.DisableCardSetidList;
CardSetIdList2 = param.CardSetIdList2;
IsEnabledPrizeCard = param.IsEnabledPrizeCard;
IsEnabledPhantomCard = param.IsEnabledPhantomCard;
CharacterVoice = param.CharacterVoice;
IsEnableResurgentCard = param.IsEnableResurgentCard;
FixedClassSet = param.FixedClassSet;
}
public FilterParameter()
{
CardSetIdList = new List<string>();
}
public bool IsLookState(LookBit bit)
{
if (bit == LookBit.ALL)
{
if (Foil != 0)
{
if (IsLookState(LookBit.NORMAL))
{
return IsLookState(LookBit.PREMIUM);
}
return false;
}
return true;
}
return ((uint)Foil & (uint)bit) != 0;
}
public bool IsFavoriteState(FavoriteBit bit)
{
if (bit == FavoriteBit.ALL)
{
if (Favorite != 0)
{
if (IsFavoriteState(FavoriteBit.NORMAL))
{
return IsFavoriteState(FavoriteBit.FAVORITE);
}
return false;
}
return true;
}
return ((uint)Favorite & (uint)bit) != 0;
}
public bool IsSpotState(SpotBit bit)
{
if (bit == SpotBit.ALL)
{
if (Spot != 0)
{
if (IsSpotState(SpotBit.NORMAL))
{
return IsSpotState(SpotBit.SPOT);
}
return false;
}
return true;
}
return ((uint)Spot & (uint)bit) != 0;
}
public static bool operator ==(FilterParameter lhs, FilterParameter rhs)
{
FieldInfo[] fields = typeof(FilterParameter).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
foreach (FieldInfo obj in fields)
{
object value = obj.GetValue(lhs);
object value2 = obj.GetValue(rhs);
if ((value == null) ^ (value2 == null))
{
return false;
}
if (value != null && !value.Equals(value2))
{
return false;
}
}
return true;
}
public static bool operator !=(FilterParameter lhs, FilterParameter rhs)
{
return !(lhs == rhs);
}
public override bool Equals(object obj)
{
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
private readonly Vector3 NormalScale = new Vector3(70f, 70f, 2f);
private readonly Vector3 ZoomedScale = new Vector3(80f, 80f, 1f);
private readonly Vector3 DetailScale = new Vector3(200f, 200f, 100f);
public const string SPECULAR_UNIT_0 = "tx_Card_Unit_a_4";
public const string SPECULAR_UNIT_1 = "tx_Card_Unit_n_4";
public const string SPECULAR_SPELL_0 = "tx_Card_Spell_a_3";
public const string SPECULAR_SPELL_1 = "tx_Card_Spell_n_3";
public const string SPECULAR_AMULET_0 = "tx_Card_Field_a_3";
public const string SPECULAR_AMULET_1 = "tx_Card_Field_n_3";
public const string ROTATION_ONLY_ICON_NAME = "RotationOnlyIcon";
private static readonly Color32 PREMIERE_GRADIENT_TOP_COLOR = new Color32(byte.MaxValue, 243, 176, byte.MaxValue);
private static readonly Color32 PREMIERE_GRADIENT_BOTTOM_COLOR = new Color32(186, 150, 0, byte.MaxValue);
private static readonly Color32 EFFECT_COLOR = new Color32(92, 56, 3, byte.MaxValue);
private LOAD_KIND loadKind;
private List<GameObject> normalCards;
private List<GameObject> evoCards;
private bool CreateEndFlag;
private List<string> _loadList = new List<string>();
private List<CardObjData> CardListObjs;
private List<CardObjData> SelectCardListObjs;
private List<CardObjData> CardList2DObjs;
private List<CardObjData> AllCardList2DObjs;
private IList<int> SelectedCardIDList;
private List<CardObjData> SelectedCardList2DObjs;
private List<Texture> CardList2DTextures;
private IDictionary<int, int> CardList2DDict;
private NetworkManager networkManager;
private Transform ScrollViewHorGrid;
private int loadCnt;
[SerializeField]
private UIFont _NormalCardFont;
[SerializeField]
private UIFont _PremiereCardFont;
private long SleeveId = 3000011L;
private Material DeckBaseTexBase;
private DeckData _myPageHomeDeck;
private IList<TweenScale> m_CardList = new List<TweenScale>();
private IList<GameObject> m_DCardList = new List<GameObject>();
private bool _wizardSetUpFinish;
private IList<int> loadSelectIds;
private IDictionary<int, CardParameter> DetailBasePrmList;
public bool isAssetAllReady;
private bool isReadyTemplate;
private CardKeyWordCommonCache _keyWordCommonCache;
private CardKeyWordCache _keyWordCache;
private CardKeyWordCache _cardNameKeyWordCache;
private CardKeyWordCache _cardNameKeyWordHiraganaCache;
public const string BBCodePattern = "(\\[[a-zA-Z0-9\\/\\-]*(rub\\<[^\\>]*\\>)*\\])";
public _3dCardFrameManager _3dCardFrameManager { get; private set; } = new _3dCardFrameManager();
private void DisposeAllCardListData()
{
ScrollViewHorGrid = null;
networkManager = null;
m_CardList = null;
m_DCardList = null;
}
private void Start()
{
StartCoroutine(WaitCallBack());
}
private IEnumerator WaitCallBack()
{
while (!Global.IS_LOAD_ALLDONE)
{
yield return null;
}
SetNetWorkManager();
Init();
}
private void SetNetWorkManager()
{
if (networkManager == null)
{
networkManager = Toolbox.NetworkManager;
}
}
private void Init()
{
GameMgr.GetIns().GetGameObjMgr().GetUIContainer()
.SetActive(value: true);
_wizardSetUpFinish = true;
}
public bool IsWizardSetupFinish()
{
return _wizardSetUpFinish;
}
public bool getCreateEndFlag()
{
return CreateEndFlag;
}
private List<string> GetAddUnitPathList()
{
return new List<string>
{
Toolbox.ResourcesManager.GetAssetTypePath("Unit", ResourcesManager.AssetLoadPathType.HandCard),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_unit", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_unit_low", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_unit_specular", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("UnitCardFrameSpecularMat", ResourcesManager.AssetLoadPathType.CardFrameMaterialPlus),
Toolbox.ResourcesManager.GetAssetTypePath("SpecularUnit", ResourcesManager.AssetLoadPathType.HandCardSpecular),
Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Unit_a_4", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon),
Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Unit_n_4", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon)
};
}
private List<string> GetAddSpellPathList()
{
return new List<string>
{
Toolbox.ResourcesManager.GetAssetTypePath("Spell", ResourcesManager.AssetLoadPathType.HandCard),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_spell", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_spell_low", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_spell_specular", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("SpellCardFrameSpecularMat", ResourcesManager.AssetLoadPathType.CardFrameMaterialPlus),
Toolbox.ResourcesManager.GetAssetTypePath("SpecularSpell", ResourcesManager.AssetLoadPathType.HandCardSpecular),
Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Spell_a_3", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon),
Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Spell_n_3", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon)
};
}
private List<string> GetAddFieldPathList()
{
return new List<string>
{
Toolbox.ResourcesManager.GetAssetTypePath("Field", ResourcesManager.AssetLoadPathType.HandCard),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_field", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_field_low", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("md_card_field_specular", ResourcesManager.AssetLoadPathType.CardFrameMesh),
Toolbox.ResourcesManager.GetAssetTypePath("FieldCardFrameSpecularMat", ResourcesManager.AssetLoadPathType.CardFrameMaterialPlus),
Toolbox.ResourcesManager.GetAssetTypePath("SpecularField", ResourcesManager.AssetLoadPathType.HandCardSpecular),
Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Field_a_3", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon),
Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Field_n_3", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon)
};
}
public List<string> AddAssetPath(List<int> List, bool is2D, CardMaster.CardMasterId cardMasterId, bool isAddSleeve = true, long sleeveId = 3000011L)
{
List<string> list = new List<string>();
for (int i = 0; i < List.Count; i++)
{
CardParameter cardParameterFromId = CardMaster.GetInstance(cardMasterId).GetCardParameterFromId(List[i]);
int resourceCardId = CardMaster.GetInstance(cardMasterId).GetCardParameterFromId(cardParameterFromId.NormalCardId).ResourceCardId;
if (cardParameterFromId.CharType == CardBasePrm.CharaType.NORMAL)
{
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.UnitCardMaterial);
if (!list.Contains(assetTypePath))
{
list.Add(assetTypePath);
}
continue;
}
string assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.SpellCardMaterial);
if (CardMaster.IsMutationCardCheck(cardParameterFromId.BaseCardId))
{
assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.UnitCardMaterial);
}
if (!list.Contains(assetTypePath2))
{
list.Add(assetTypePath2);
}
}
if (isAddSleeve)
{
SleeveId = Toolbox.ResourcesManager.GetExistingSleeveId(sleeveId);
string assetTypePath3 = Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial);
if (!list.Contains(assetTypePath3))
{
list.Add(assetTypePath3);
list.Add(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture));
if (Data.Master.SleeveMgr.Get(SleeveId).IsPremiumSleeve)
{
list.Add(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureMask));
}
}
}
return list;
}
private void AddCardAssetPath(List<int> List, int page, int perPage, CardMaster.CardMasterId cardMasterId, bool is2D = false, bool isAddSleeve = true)
{
for (int i = 0; i < List.Count; i++)
{
if ((i < page * perPage || i >= Mathf.Abs((page + 1) * perPage)) && page != -1)
{
continue;
}
CardParameter cardParameterFromId = CardMaster.GetInstance(cardMasterId).GetCardParameterFromId(List[i]);
int resourceCardId = CardMaster.GetInstance(cardMasterId).GetCardParameterFromId(cardParameterFromId.NormalCardId).ResourceCardId;
if (cardParameterFromId.CharType == CardBasePrm.CharaType.NORMAL)
{
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.UnitCardMaterial);
Toolbox.ResourcesManager.CardListAssetPathList.Add(assetTypePath);
continue;
}
string assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.SpellCardMaterial);
if (CardMaster.IsMutationCardCheck(cardParameterFromId.BaseCardId))
{
assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.UnitCardMaterial);
}
Toolbox.ResourcesManager.CardListAssetPathList.Add(assetTypePath2);
}
if (!is2D && isAddSleeve)
{
DeckData myPageHomeDeck = _myPageHomeDeck;
SleeveId = ((myPageHomeDeck == null) ? 3000011 : Toolbox.ResourcesManager.GetExistingSleeveId(myPageHomeDeck.GetDeckSleeveID()));
string assetTypePath3 = Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial);
if (!Toolbox.ResourcesManager.CardListAssetPathList.Contains(assetTypePath3))
{
Toolbox.ResourcesManager.CardListAssetPathList.Add(assetTypePath3);
Toolbox.ResourcesManager.CardListAssetPathList.Add(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture));
}
}
}
public bool MyPageHomeCreateCustomDeckCard(GameObject returnObj, DeckData deckData, int layer, bool is2D, Action onFinish = null)
{
isAssetAllReady = false;
isReadyTemplate = false;
_myPageHomeDeck = deckData;
return MyPageCreateDeckCard(returnObj, deckData, layer, is2D, onFinish);
}
private bool MyPageCreateDeckCard(GameObject returnObj, DeckData deck, int layer, bool is2D, Action onFinish)
{
if (is2D)
{
Toolbox.ResourcesManager.RemoveAssetGroup(Toolbox.ResourcesManager.Card2DAssetPathList);
Toolbox.ResourcesManager.Card2DAssetPathList.Clear();
if (CardList2DDict == null)
{
CardList2DDict = new Dictionary<int, int>();
}
else
{
CardList2DDict.Clear();
}
}
else
{
Toolbox.ResourcesManager.RemoveAssetGroup(Toolbox.ResourcesManager.Card2DAssetPathList);
Toolbox.ResourcesManager.Card2DAssetPathList.Clear();
Toolbox.ResourcesManager.RemoveAssetGroup(Toolbox.ResourcesManager.Card3DAssetPathList);
Toolbox.ResourcesManager.Card3DAssetPathList.Clear();
}
CreateEndFlag = false;
if (!deck.IsNoCard())
{
GameMgr.GetIns().GetDataMgr().SetCurrentDeckData(deck.GetCardIdList());
List<string> list;
if (is2D)
{
list = Toolbox.ResourcesManager.Card2DAssetPathList;
}
else
{
list = Toolbox.ResourcesManager.Card3DAssetPathList;
if (DetailBasePrmList == null)
{
DetailBasePrmList = new Dictionary<int, CardParameter>();
}
else
{
DetailBasePrmList.Clear();
}
}
if (deck.IsDefaultDeck())
{
list.AddRange(AddAssetPath(deck.GetCardIdList(), is2D, CardMaster.CardMasterId.Default, isAddSleeve: false, 3000011L));
}
else
{
list.AddRange(AddAssetPath(deck.GetCardIdList(), is2D, CardMaster.CardMasterId.Default, isAddSleeve: true, deck.GetDeckSleeveID()));
}
StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupSync(list, delegate
{
if (deck.IsDefaultDeck())
{
SleeveId = 3000011L;
loadKind = LOAD_KIND.MYPAGE_HOME_DEFAULT_DECK_DATA;
}
else
{
if (SleeveId == 0L)
{
SleeveId = 3000011L;
}
loadKind = LOAD_KIND.MYPAGE_HOME_CUSTOM_DECK;
}
StartCoroutine(CreateDeckData(layer, is2D, CardMaster.CardMasterId.Default, CardBasePrm.ClanType.NONE, own: false, onFinish));
isAssetAllReady = true;
}));
return true;
}
onFinish();
isAssetAllReady = true;
return false;
}
public IList<int> SelectCardIDInConditionMask(List<int> idList, FilterParameter filterParam, IFormatBehavior formatBehaviour, MyRotationInfo myRotationInfo, bool alreadySorted = false, bool isCraftMode = false, bool isDisableAllTribe = false)
{
CardMaster cardMaster = CardMaster.GetInstance(formatBehaviour.CardMasterId);
if (_keyWordCache == null)
{
_keyWordCache = new CardKeyWordCache();
}
if (_cardNameKeyWordCache == null)
{
_cardNameKeyWordCache = new CardKeyWordCache(CardKeyWordCache.Option.OnlyCardNames);
}
if (_cardNameKeyWordHiraganaCache == null)
{
_cardNameKeyWordHiraganaCache = new CardKeyWordCache(CardKeyWordCache.Option.OnlyCardNamesHiranaga);
}
Func<CardParameter, FilterParameter, bool> filters = null;
if (formatBehaviour.IsConventionMode)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)((CardParameter card, FilterParameter param) => formatBehaviour.GetPossessionCardNum(card.CardId, isIncludingSpotCard: true) > 0));
}
else
{
if (filterParam.Own != 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
int possessionCardNum = formatBehaviour.GetPossessionCardNum(card.CardId, isIncludingSpotCard: true);
return (param.Own & ((possessionCardNum > 0) ? 1 : 2)) != 0;
});
}
if (filterParam.Craftable != 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
int possessionCardNum = formatBehaviour.GetPossessionCardNum(card.CardId, isIncludingSpotCard: true);
int num = ((card.UseRedEther > 0) ? 1 : 2);
return possessionCardNum > 0 || (param.Craftable & num) != 0;
});
}
}
if (filterParam.Class != 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)((CardParameter card, FilterParameter param) => (param.Class & (1 << (int)card.Clan)) != 0));
}
if (filterParam.Cost != 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)((CardParameter card, FilterParameter param) => (param.Cost & (1 << Mathf.Min(card.Cost, 8))) != 0));
}
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.Attack != 0 && !CardBasePrm.IsFollowerCard(card.CharType))
{
return false;
}
return param.Attack == 0 || (param.Attack & (1 << Mathf.Min(card.Atk, 8))) != 0;
});
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.Life != 0 && !CardBasePrm.IsFollowerCard(card.CharType))
{
return false;
}
return param.Life == 0 || (param.Life & (1 << Mathf.Min(card.Life, 8))) != 0;
});
if (filterParam.Foil != 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)((CardParameter card, FilterParameter param) => (param.Foil & ((!card.IsFoil) ? 1 : 2)) != 0));
}
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.Type == 0)
{
return true;
}
int num = 0;
switch (card.CharType)
{
case CardBasePrm.CharaType.NORMAL:
case CardBasePrm.CharaType.EVOLUTION:
num = 1;
break;
case CardBasePrm.CharaType.SPELL:
num = 2;
break;
case CardBasePrm.CharaType.FIELD:
case CardBasePrm.CharaType.CHANT_FIELD:
num = 4;
break;
default:
return false;
}
return (param.Type & num) != 0;
});
if (filterParam.Rarity != 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)((CardParameter card, FilterParameter param) => (param.Rarity & (1 << card.Rarity - 1)) != 0));
}
if (filterParam.DisableCardSetidList.Count > 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)((CardParameter card, FilterParameter param) => !param.DisableCardSetidList.Contains(card.CardSetId)));
}
if (filterParam.CardSetIdList2.Count > 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.FormatState == Format.MyRotation)
{
if (card.IsPrizeCard)
{
card = cardMaster.GetCardParameterFromId(card.BaseCardId);
}
if (myRotationInfo.IsNotUseCard(card.BaseCardId))
{
return false;
}
if (myRotationInfo.IsRePrintCard(card.BaseCardId))
{
foreach (string item in param.CardSetIdList2)
{
if (myRotationInfo.IsRePrintCardAvailablePack(card.BaseCardId, item))
{
return true;
}
}
}
}
return param.CardSetIdList2.Contains(card.CardSetId) ? true : false;
});
}
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.CardSetIdList.Count == 0 && !param.IsEnabledPrizeCard && !param.IsEnabledPhantomCard)
{
return true;
}
string cardSetId = card.CardSetId;
if (card.IsCollaboCard)
{
cardSetId = CardMaster.GetInstance(formatBehaviour.CardMasterId).GetCardParameterFromId(card.BaseCardId).CardSetId;
}
if (param.CardSetIdList.Contains(cardSetId))
{
return true;
}
if (param.IsEnabledPrizeCard && card.IsPrizeCard)
{
return true;
}
return (param.IsEnabledPhantomCard && card.IsPhantomCard) ? true : false;
});
if (!filterParam.IsEnableResurgentCard)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)((CardParameter card, FilterParameter param) => !card.IsResurgentCard));
}
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.IsFavoriteState(FilterParameter.FavoriteBit.ALL))
{
return true;
}
bool flag = GameMgr.GetIns().GetDataMgr().FavoriteCardList.Contains(card.CardId);
return (param.IsFavoriteState(FilterParameter.FavoriteBit.NORMAL) && !flag) || (param.IsFavoriteState(FilterParameter.FavoriteBit.FAVORITE) && flag);
});
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.IsSpotState(FilterParameter.SpotBit.ALL) || (param.IsSpotState(FilterParameter.SpotBit.NORMAL) && param.IsSpotState(FilterParameter.SpotBit.SPOT)))
{
return true;
}
bool flag = GameMgr.GetIns().GetDataMgr().SpotCardData.ExistsSpotCard(card.CardId);
if (isCraftMode)
{
if (param.IsSpotState(FilterParameter.SpotBit.SPOT))
{
return flag;
}
return true;
}
return param.IsSpotState(FilterParameter.SpotBit.SPOT) ? flag : (GameMgr.GetIns().GetDataMgr().GetPossessionCardNum(card.CardId, isIncludingSpotCard: false) > 0);
});
if (filterParam.MyRotationInfoForFormatAvailable != null)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (card.IsPrizeCard)
{
card = cardMaster.GetCardParameterFromId(card.BaseCardId);
}
ClassType classType = ClassUtil.GetClassType(card, param.FormatState, param.FixedClassSet);
return card.IsAvailableFormat(param.FormatState, classType, myRotationInfo);
});
}
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.FormatState == Format.Unlimited || param.FormatState == Format.Rotation || param.FormatState == Format.PreRotation || param.FormatState == Format.Sealed || param.FormatState == Format.Crossover)
{
ClassType classType = ClassUtil.GetClassType(card, param.FormatState, param.FixedClassSet);
return card.IsAvailableFormat(param.FormatState, classType, myRotationInfo);
}
return true;
});
if (filterParam.KeyWordList != null && filterParam.KeyWordList.Count > 0)
{
List<string> filterKeywordList = filterParam.KeyWordList;
foreach (KeyValuePair<string, string> item2 in Data.Master.CardFilterKeywordReplaceDic)
{
if (filterKeywordList.Contains(item2.Value))
{
List<string> list = new List<string>(filterKeywordList.Count + 1);
list.AddRange(filterKeywordList);
list.Add(item2.Key);
filterKeywordList = list;
}
}
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
IList<string> list2 = _keyWordCache.Get(card, _keyWordCommonCache);
foreach (string item3 in filterKeywordList)
{
if (list2.Contains(item3))
{
return true;
}
}
return false;
});
}
if (filterParam.TypeFilter != null && filterParam.TypeFilter.Count > 0)
{
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (isDisableAllTribe && card.IsTribeAll)
{
return false;
}
foreach (CardBasePrm.TribeType item4 in param.TypeFilter)
{
if (card.Tribe.Contains(item4))
{
return true;
}
}
return false;
});
}
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)delegate(CardParameter card, FilterParameter param)
{
if (param.Word == null || param.Word.Length == 0)
{
return true;
}
List<string> list2 = new List<string> { CardBasePrm.GetCardTypeName(card.CharType) };
if (!card.Tribe.Contains(CardBasePrm.TribeType.ALL))
{
if (card.IsTribeAll)
{
list2.AddRange(Data.Master.GetAllTribeNameList());
}
else
{
list2.Add(card.TribeName);
}
}
list2.Add(Regex.Replace(card.ConvertedSkillDescription, "(\\[[a-zA-Z0-9\\/\\-]*(rub\\<[^\\>]*\\>)*\\])", ""));
list2.Add(Regex.Replace(card.ConvertedEvoSkillDescription, "(\\[[a-zA-Z0-9\\/\\-]*(rub\\<[^\\>]*\\>)*\\])", ""));
list2.Add(Regex.Replace(card.CardName, "(\\[[a-zA-Z0-9\\/\\-]*(rub\\<[^\\>]*\\>)*\\])", ""));
string[] array = param.Word.Replace('\u3000', ' ').Split(' ');
if (list2.Any((string src) => array.All((string req) => src.IndexOf(req, StringComparison.OrdinalIgnoreCase) >= 0)))
{
return true;
}
list2.Clear();
CompareInfo ci = CultureInfo.CurrentCulture.CompareInfo;
return list2.Any((string src) => array.All((string req) => ci.IndexOf(src, req, CompareOptions.IgnoreKanaType) >= 0));
});
filters = (Func<CardParameter, FilterParameter, bool>)Delegate.Combine(filters, (Func<CardParameter, FilterParameter, bool>)((CardParameter card, FilterParameter param) => string.IsNullOrEmpty(param.CharacterVoice) || card.CardVoice.IndexOf(param.CharacterVoice, StringComparison.OrdinalIgnoreCase) >= 0));
Func<CardParameter, FilterParameter, bool> callAllFilters = (CardParameter card, FilterParameter param) => filters.GetInvocationList().All((Delegate func) => ((Func<CardParameter, FilterParameter, bool>)func)(card, param));
if (alreadySorted)
{
return (from id in idList
let card = cardMaster.GetCardParameterFromId(id)
where callAllFilters(card, filterParam)
select id).ToList();
}
return (from id in idList
let card = CardMaster.GetInstance(formatBehaviour.CardMasterId).GetCardParameterFromId(id)
where callAllFilters(card, filterParam)
orderby new ComparableCard(card.CardId, formatBehaviour.CardMasterId)
select id).ToList();
}
public IList<int> SelectAllCardIDInConditionMask(FilterParameter filterParam, IFormatBehavior formatBehavior, MyRotationInfo myRotationInfo, bool isConventionMode, bool isCraftMode = false)
{
return SelectCardIDInConditionMask(formatBehavior.SortedDeckUsableCardList, filterParam, formatBehavior, myRotationInfo, alreadySorted: true, isCraftMode);
}
public List<int> SortIDList(IList<int> idList, CardMaster.CardMasterId cardMasterId)
{
return (from id in idList
let card = CardMaster.GetInstance(cardMasterId).GetCardParameterFromId(id)
orderby new ComparableCard(card.CardId, cardMasterId)
select id).ToList();
}
public void CrateSelectCard(GameObject returnObj, IList<int> cardIds, int layer, bool is2D, Action onFinish = null, bool isDefaultSleeve = false, CardMaster.CardMasterId cardMasterId = CardMaster.CardMasterId.Default)
{
isAssetAllReady = false;
if (is2D)
{
if (!UIManager.GetInstance().IsCurrentScene(UIManager.ViewScene.TwoPick))
{
Toolbox.ResourcesManager.RemoveAssetGroup(Toolbox.ResourcesManager.CardListAssetPathList);
Toolbox.ResourcesManager.CardListAssetPathList.Clear();
}
if (CardList2DDict == null)
{
CardList2DDict = new Dictionary<int, int>();
}
else
{
CardList2DDict.Clear();
}
}
SelectCardListObjs = null;
AddCardAssetPath(cardIds.ToList(), -1, 0, cardMasterId, is2D, !isDefaultSleeve);
bool preferSynchronousLoad = UIManager.GetInstance().IsLocked();
StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroup(Toolbox.ResourcesManager.CardListAssetPathList, delegate
{
CreateEndFlag = false;
if (isDefaultSleeve)
{
SleeveId = 3000011L;
}
else
{
SleeveId = ((_myPageHomeDeck == null) ? 3000011 : Toolbox.ResourcesManager.GetExistingSleeveId(_myPageHomeDeck.GetDeckSleeveID()));
}
loadKind = LOAD_KIND.SELECT_DATA;
StartCoroutine(CreateDeckData(layer, is2D, cardMasterId, CardBasePrm.ClanType.MAX, own: false, onFinish));
loadSelectIds = cardIds;
isAssetAllReady = true;
}, isProgress: true, preferSynchronousLoad));
}
public IEnumerator CreateGachaCardPack(GameObject returnObj, IList<int> cardIds, int layer, bool is2D, int sleeveId)
{
isAssetAllReady = false;
if (is2D)
{
if (!UIManager.GetInstance().IsCurrentScene(UIManager.ViewScene.TwoPick))
{
Toolbox.ResourcesManager.RemoveAssetGroup(Toolbox.ResourcesManager.CardListAssetPathList);
Toolbox.ResourcesManager.CardListAssetPathList.Clear();
}
if (CardList2DDict == null)
{
CardList2DDict = new Dictionary<int, int>();
}
else
{
CardList2DDict.Clear();
}
}
SelectCardListObjs = null;
Toolbox.ResourcesManager.CardListAssetPathList.Clear();
AddCardAssetPath(cardIds.ToList(), -1, 0, CardMaster.CardMasterId.Default, is2D, isAddSleeve: false);
SleeveId = Toolbox.ResourcesManager.GetExistingSleeveId(sleeveId);
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial);
if (!Toolbox.ResourcesManager.CardListAssetPathList.Contains(assetTypePath))
{
Toolbox.ResourcesManager.CardListAssetPathList.Add(assetTypePath);
Toolbox.ResourcesManager.CardListAssetPathList.Add(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture));
Toolbox.ResourcesManager.CardListAssetPathList.Add(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureAORefSpec));
Toolbox.ResourcesManager.CardListAssetPathList.Add(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_cardbase_s", ResourcesManager.AssetLoadPathType.SleeveSpecular));
if (Toolbox.ResourcesManager.IsExistSleeveNormalMap(sleeveId))
{
Toolbox.ResourcesManager.CardListAssetPathList.Add(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureNormalMap));
}
else
{
Toolbox.ResourcesManager.CardListAssetPathList.Add(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_tx_general_n", ResourcesManager.AssetLoadPathType.SleeveTextureBasePath));
}
if (Data.Master.SleeveMgr.Get(SleeveId).IsPremiumSleeve)
{
Toolbox.ResourcesManager.CardListAssetPathList.Add(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureMask));
}
}
bool isFinish = false;
StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupSync(Toolbox.ResourcesManager.CardListAssetPathList, delegate
{
isFinish = true;
}));
while (!isFinish)
{
yield return null;
}
CreateEndFlag = false;
loadKind = LOAD_KIND.SELECT_DATA_GACHA;
StartCoroutine(CreateDeckData(layer, is2D, CardMaster.CardMasterId.Default));
loadSelectIds = cardIds;
isAssetAllReady = true;
}
public static void CardStatusIconOnOff(CardObjData st, bool onoff)
{
GameObject cardObj = st.CardObj;
cardObj.transform.Find("Cost(Clone)").gameObject.SetActive(onoff);
if (st.EvolOk)
{
cardObj.transform.Find("Atk(Clone)").gameObject.SetActive(onoff);
cardObj.transform.Find("Life(Clone)").gameObject.SetActive(onoff);
}
}
public static void CardStatusZPointArranged(CardObjData st)
{
GameObject cardObj = st.CardObj;
GameObject obj = cardObj.transform.Find("Cost(Clone)").gameObject;
Vector3 localPosition = obj.transform.localPosition;
localPosition.z = -1f;
obj.transform.localPosition = localPosition;
GameObject obj2 = cardObj.transform.Find("Name(Clone)").gameObject;
Vector3 localPosition2 = obj2.transform.localPosition;
localPosition2.z = -1f;
obj2.transform.localPosition = localPosition2;
GameObject obj3 = cardObj.transform.Find("SkillDisc(Clone)").gameObject;
Vector3 localPosition3 = obj3.transform.localPosition;
obj3.transform.localPosition = localPosition3;
GameObject obj4 = cardObj.transform.Find("CardBase").gameObject;
obj4.transform.localScale = Global.CARD_BASE_SCALE;
Vector3 localPosition4 = obj4.transform.localPosition;
localPosition4.z = 1f;
obj4.transform.localPosition = localPosition4;
if (st.EvolOk)
{
GameObject obj5 = cardObj.transform.Find("Atk(Clone)").gameObject;
Vector3 localPosition5 = obj5.transform.localPosition;
localPosition5.z = -1f;
obj5.transform.localPosition = localPosition5;
GameObject obj6 = cardObj.transform.Find("Life(Clone)").gameObject;
Vector3 localPosition6 = obj6.transform.localPosition;
localPosition6.z = -1f;
obj6.transform.localPosition = localPosition6;
}
}
public static CardObjData cardDataCopy(CardObjData data, CardObjData data2)
{
data.Cost = data2.Cost;
data.CostNum = data2.CostNum;
data.lifes = data2.lifes;
data.ids = data2.ids;
data.Atks = data2.Atks;
data.Names = data2.Names;
data.Skills = data2.Skills;
data.Evo_Costs = data2.Evo_Costs;
data.Evo_lifes = data2.Evo_lifes;
data.Evo_Atks = data2.Evo_Atks;
data.Evo_Names = data2.Evo_Names;
data.Evo_Skills = data2.Evo_Skills;
data.EvolOk = data2.EvolOk;
data.cardType = data2.cardType;
data.isPremiere = data2.isPremiere;
return data;
}
private IEnumerator Load2D(int scene_layer, Action<CardPrefabs> SetCardPrefab)
{
yield return StartCoroutine(GameMgr.GetIns().GetPrefabMgr().LoadAync("Prefab/Cards/CardListTemplate"));
CardPrefabs cardPrefabs = new CardPrefabs();
cardPrefabs.UnitGameObj = (cardPrefabs.SpellGameObj = GameMgr.GetIns().GetPrefabMgr().Get("Prefab/Cards/CardListTemplate"));
GameObject spellGameObj = cardPrefabs.SpellGameObj;
int layer = (cardPrefabs.UnitGameObj.layer = scene_layer);
spellGameObj.layer = layer;
SetCardPrefab(cardPrefabs);
isReadyTemplate = true;
}
private IEnumerator Load3D(int scene_layer, Action<CardPrefabs> SetCardPrefab)
{
CardPrefabs cp = new CardPrefabs();
yield return StartCoroutine(GameMgr.GetIns().GetPrefabMgr().LoadAync("Prefab/CardDeco/Name"));
cp.m_NameIcon = GameMgr.GetIns().GetPrefabMgr().GetObj("Prefab/CardDeco/Name") as GameObject;
cp.m_AtkIcon = Resources.Load("Prefab/CardDeco/Atk") as GameObject;
cp.m_AtkIcon.layer = scene_layer;
cp.m_AtkIcon.name = "Atk";
cp.m_LifeIcon = Resources.Load("Prefab/CardDeco/Life") as GameObject;
cp.m_LifeIcon.layer = scene_layer;
cp.m_LifeIcon.name = "Life";
cp.m_CostIcon = Resources.Load("Prefab/CardDeco/Cost") as GameObject;
cp.m_CostIcon.layer = scene_layer;
cp.m_CostIcon.name = "Cost";
cp.RotationOnlyIcon = Resources.Load("Prefab/CardDeco/RotationOnlyIcon") as GameObject;
cp.RotationOnlyIcon.layer = scene_layer;
cp.RotationOnlyIcon.name = "RotationOnlyIcon";
cp.m_CardBase = Toolbox.ResourcesManager.LoadObject<GameObject>(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_CardBase", ResourcesManager.AssetLoadPathType.CardDeco, isfetch: true));
if (loadKind == LOAD_KIND.SELECT_DATA_GACHA)
{
Texture value = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureAORefSpec, isfetch: true)) as Texture;
Material material = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_cardbase_s", ResourcesManager.AssetLoadPathType.SleeveSpecular, isfetch: true)) as Material;
float value2 = 20f;
Texture value3;
if (Toolbox.ResourcesManager.IsExistSleeveNormalMap(SleeveId))
{
value3 = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureNormalMap, isfetch: true)) as Texture;
value2 = 40f;
}
else
{
value3 = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_tx_general_n", ResourcesManager.AssetLoadPathType.SleeveTextureBasePath, isfetch: true)) as Texture;
}
material.SetTexture("_AOREFSPEC", value);
material.SetTexture("_BumpMap", value3);
material.SetFloat("_SpecPow", value2);
cp.SpecularMaterial = material;
}
if (loadKind != LOAD_KIND.SELECT_DATA)
{
cp.BaseTexBase = Toolbox.ResourcesManager.LoadObject<Material>(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial, isfetch: true));
cp.BaseTexBase.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture, isfetch: true));
if (Data.Master.SleeveMgr.Get(SleeveId).IsPremiumSleeve)
{
Texture value4 = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(SleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureMask, isfetch: true));
cp.BaseTexBase.SetTexture("_MaskTex", value4);
}
cp.BaseTexBase.shader = Shader.Find(cp.BaseTexBase.shader.name);
DeckBaseTexBase = cp.BaseTexBase;
}
else
{
cp.BaseTexBase = Toolbox.ResourcesManager.LoadObject<Material>(Toolbox.ResourcesManager.GetAssetTypePath(3000011.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial, isfetch: true));
cp.BaseTexBase.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(3000011.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture, isfetch: true));
cp.BaseTexBase.shader = Shader.Find(cp.BaseTexBase.shader.name);
}
cp.m_CardBase.layer = scene_layer;
cp.m_CardBase.name = "CardBase";
cp.UnitGameObj = Toolbox.ResourcesManager.LoadObject<GameObject>(Toolbox.ResourcesManager.GetAssetTypePath("Unit", ResourcesManager.AssetLoadPathType.HandCard, isfetch: true));
cp.UnitSpecGameObj = Toolbox.ResourcesManager.LoadObject<GameObject>(Toolbox.ResourcesManager.GetAssetTypePath("SpecularUnit", ResourcesManager.AssetLoadPathType.HandCardSpecular, isfetch: true));
cp.UnitSpecGameObj.GetComponent<MeshFilter>().sharedMesh = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_unit_specular", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
cp.UnitGameObj.layer = scene_layer;
cp.SpellGameObj = Toolbox.ResourcesManager.LoadObject<GameObject>(Toolbox.ResourcesManager.GetAssetTypePath("Spell", ResourcesManager.AssetLoadPathType.HandCard, isfetch: true));
cp.SpellSpecGameObj = Toolbox.ResourcesManager.LoadObject<GameObject>(Toolbox.ResourcesManager.GetAssetTypePath("SpecularSpell", ResourcesManager.AssetLoadPathType.HandCardSpecular, isfetch: true));
cp.SpellSpecGameObj.GetComponent<MeshFilter>().sharedMesh = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_spell_specular", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
cp.SpellGameObj.layer = scene_layer;
cp.FieldGameObj = Toolbox.ResourcesManager.LoadObject<GameObject>(Toolbox.ResourcesManager.GetAssetTypePath("Field", ResourcesManager.AssetLoadPathType.HandCard, isfetch: true));
cp.FieldSpecGameObj = Toolbox.ResourcesManager.LoadObject<GameObject>(Toolbox.ResourcesManager.GetAssetTypePath("SpecularField", ResourcesManager.AssetLoadPathType.HandCardSpecular, isfetch: true));
cp.FieldSpecGameObj.GetComponent<MeshFilter>().sharedMesh = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_field_specular", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
cp.FieldGameObj.layer = scene_layer;
SetCardPrefab(cp);
isReadyTemplate = true;
}
private int ClearAndGetCount(CardBasePrm.ClanType clantype, bool own)
{
int result = 0;
if (loadKind == LOAD_KIND.SELECT_DATA || loadKind == LOAD_KIND.SELECT_DATA_GACHA)
{
SelectCardListObjs = new List<CardObjData>();
result = loadSelectIds.Count;
}
else if (loadKind == LOAD_KIND.MYPAGE_HOME_CUSTOM_DECK || loadKind == LOAD_KIND.MYPAGE_HOME_DEFAULT_DECK_DATA)
{
result = _myPageHomeDeck.GetCardIdList().Count;
}
return result;
}
private IEnumerator CreateDeckData(int scene_layer, bool is2D, CardMaster.CardMasterId cardMasterId, CardBasePrm.ClanType clantype = CardBasePrm.ClanType.NONE, bool own = false, Action onFinish = null)
{
CardPrefabs cp = null;
if (!is2D)
{
yield return StartCoroutine(Load3D(scene_layer, delegate(CardPrefabs v)
{
cp = v;
}));
}
else
{
if (CardList2DDict == null)
{
CardList2DDict = new Dictionary<int, int>();
}
else
{
CardList2DDict.Clear();
}
yield return StartCoroutine(Load2D(scene_layer, delegate(CardPrefabs v)
{
cp = v;
}));
}
while (!isAssetAllReady || !isReadyTemplate)
{
yield return null;
}
CardListObjs = new List<CardObjData>();
CardList2DObjs = new List<CardObjData>();
int num = ClearAndGetCount(clantype, own);
for (int num2 = 0; num2 < num; num2++)
{
AddCardResult addCardResult = createCard(num2, is2D, clantype, scene_layer, own, cp, cardMasterId);
if (addCardResult != AddCardResult.NOT_ADDED && addCardResult == AddCardResult.END)
{
break;
}
}
UIManager.GetInstance().LoadingViewManager.UpdateLoadingNum(100);
CreateEndFlag = true;
onFinish?.Invoke();
}
private bool getCardBaseStatus(int cardIndex, CardMaster.CardMasterId cardMasterId, ref CardParameter baseStatus)
{
Func<int, CardParameter> func = CardMaster.GetInstance(cardMasterId).GetCardParameterFromId;
if (loadKind == LOAD_KIND.SELECT_DATA || loadKind == LOAD_KIND.SELECT_DATA_GACHA)
{
baseStatus = func(loadSelectIds[cardIndex]);
}
else if (loadKind == LOAD_KIND.MYPAGE_HOME_CUSTOM_DECK || loadKind == LOAD_KIND.MYPAGE_HOME_DEFAULT_DECK_DATA)
{
int arg = _myPageHomeDeck.GetCardIdList()[cardIndex];
baseStatus = func(arg);
}
return true;
}
private AddCardResult createCard(int cardIndex, bool is2D, CardBasePrm.ClanType clantype, int scene_layer, bool own, CardPrefabs cp, CardMaster.CardMasterId cardMasterId)
{
CardObjData cardObjData = new CardObjData();
CardParameter baseStatus = null;
if (!getCardBaseStatus(cardIndex, cardMasterId, ref baseStatus))
{
return AddCardResult.END;
}
CardBasePrm.CharaType charaType = (cardObjData.cardType = baseStatus.CharType);
if (charaType == CardBasePrm.CharaType.CLASS)
{
return AddCardResult.ADDED;
}
if (DetailBasePrmList == null)
{
DetailBasePrmList = new Dictionary<int, CardParameter>();
}
if (!DetailBasePrmList.ContainsKey(baseStatus.ResourceCardId))
{
DetailBasePrmList.Add(baseStatus.ResourceCardId, baseStatus);
}
if (charaType != CardBasePrm.CharaType.SPELL && charaType != CardBasePrm.CharaType.FIELD && charaType != CardBasePrm.CharaType.CHANT_FIELD)
{
cardObjData.Evo_lifes = baseStatus.EvoLife.ToString();
cardObjData.Evo_Atks = baseStatus.EvoAtk.ToString();
cardObjData.Evo_Costs = baseStatus.Cost.ToString();
cardObjData.Evo_Names = baseStatus.CardName;
cardObjData.Evo_Skills = baseStatus.EvoSkillDescription;
cardObjData.Skills = baseStatus.SkillDescription;
cardObjData.EvolOk = true;
}
else
{
cardObjData.Skills = baseStatus.SkillDescription;
cardObjData.EvolOk = false;
}
cardObjData.lifes = baseStatus.Life.ToString();
cardObjData.LifesNum = baseStatus.Life;
cardObjData.Atks = baseStatus.Atk.ToString();
cardObjData.AtksNum = baseStatus.Atk;
cardObjData.Names = baseStatus.CardName;
cardObjData.Cost = baseStatus.Cost.ToString();
cardObjData.CostNum = baseStatus.Cost;
cardObjData.clan = baseStatus.Clan;
cardObjData.tribe = baseStatus.Tribe;
cardObjData.isPremiere = baseStatus.IsFoil;
cardObjData.ids = baseStatus.CardId;
string text = baseStatus.ResourceCardId.ToString();
int cardId = (cardObjData.ids = baseStatus.CardId);
cardObjData.mainCardNum = 1;
GameObject gameObject = null;
if (!(text == ""))
{
gameObject = ((!is2D) ? createNot2DCard(baseStatus, text, cp, scene_layer) : create2DCard(baseStatus, text, cp));
}
if (scene_layer != 0)
{
gameObject.layer = scene_layer;
}
CharIdx charIdx = gameObject.AddComponent<CharIdx>();
charIdx.SetIdx(loadCnt);
charIdx.SetCardId(cardId);
if (is2D)
{
CardSetUp2D(gameObject, baseStatus, cardObjData, cardIndex);
}
else
{
CardSetUp3D(gameObject, baseStatus, scene_layer, cardIndex, cp, cardObjData);
}
loadCnt++;
return AddCardResult.ADDED;
}
private void CardSetUp2D(GameObject GameObj, CardParameter cardParameter, CardObjData cardObjData, int cardIndex)
{
CardListTemplate component = GameObj.GetComponent<CardListTemplate>();
CardBasePrm.CharaType charType = cardParameter.CharType;
UILabel nameLabel = component._nameLabel;
nameLabel.text = cardParameter.CardName;
SetNameLabelStyle(nameLabel, cardParameter.IsFoil);
Global.SetRepositionNameLabel(nameLabel, cardParameter.CardName, is2D: true);
component.RotationOnlyIconVisible = cardParameter.IsResurgentCard;
if (GameMgr.GetIns().GetDataMgr().IsNewCard(cardParameter.CardId))
{
component._newLabel.gameObject.SetActive(value: true);
}
else
{
component._newLabel.gameObject.SetActive(value: false);
}
if (charType == CardBasePrm.CharaType.NORMAL)
{
component._atkLabel.text = cardParameter.Atk.ToString();
component._lifeLabel.text = cardParameter.Life.ToString();
SetNumberLabelStyle(component._atkLabel, cardParameter.IsFoil);
SetNumberLabelStyle(component._lifeLabel, cardParameter.IsFoil);
}
component._costLabel.text = cardParameter.Cost.ToString();
SetNumberLabelStyle(component._costLabel, cardParameter.IsFoil);
cardObjData.CardObj = GameObj;
CardList2DObjs.Add(cardObjData);
cardObjData.CardObj.name = loadKind.ToString() + " " + cardIndex;
}
private void CardSetUp3D(GameObject GameObj, CardParameter cardParameter, int scene_layer, int cardIndex, CardPrefabs cp, CardObjData cardObjData)
{
CardBasePrm.CharaType charType = cardParameter.CharType;
GameObject obj = GameMgr.GetIns().GetGameObjMgr().AddUIManagerChildPrefab(cp.m_CostIcon);
obj.transform.parent = GameObj.transform;
int cost = cardParameter.Cost;
UILabel component = obj.transform.Find("CostLabel").GetComponent<UILabel>();
component.text = cost.ToString();
obj.SetActive(value: true);
obj.transform.localPosition = Global.POSITION_COST_ICON;
obj.transform.localScale = Global.SCALE_CARD_ICON;
if (cardParameter.IsResurgentCard)
{
GameObject obj2 = GameMgr.GetIns().GetGameObjMgr().AddUIManagerChildPrefab(cp.RotationOnlyIcon);
obj2.transform.parent = GameObj.transform;
obj2.transform.localPosition = Vector3.zero;
obj2.transform.localScale = Vector3.one;
obj2.name = "RotationOnlyIcon";
}
SetNumberLabelStyle(component, cardParameter.IsFoil);
obj.gameObject.layer = scene_layer;
m_DCardList.Add(GameObj);
GameObj.gameObject.name = cardIndex.ToString();
GameObj.layer = scene_layer;
GameObject gameObject = GameMgr.GetIns().GetGameObjMgr().AddUIContainerChildPrefab(cp.m_CardBase);
gameObject.name = "CardBase";
gameObject.GetComponent<MeshFilter>().sharedMesh = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_md_Card", ResourcesManager.AssetLoadPathType.SleeveMesh, isfetch: true));
MeshRenderer component2 = gameObject.GetComponent<MeshRenderer>();
component2.sharedMaterial = cp.BaseTexBase;
component2.sharedMaterial.SetFloat("_CullMode", 2f);
component2.sharedMaterial.SetFloat("_ZWriteMode", 1f);
gameObject.transform.parent = GameObj.transform;
gameObject.transform.localPosition = new Vector3(Global.CARD_BASE_POS.x, Global.CARD_BASE_POS.y, Global.CARD_BASE_POS.z);
gameObject.transform.localRotation = Quaternion.Euler(Global.CARD_BASE_ROT.x, Global.CARD_BASE_ROT.y, Global.CARD_BASE_ROT.z);
gameObject.transform.localScale = new Vector3(1f, 1f, 1f);
Transform transform = gameObject.transform.Find("CardBase_Specular");
transform.GetComponent<MeshFilter>().sharedMesh = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_md_Card", ResourcesManager.AssetLoadPathType.SleeveMesh, isfetch: true));
if (cp.SpecularMaterial != null)
{
transform.GetComponent<MeshRenderer>().sharedMaterial = cp.SpecularMaterial;
}
GameObj.tag = "Card";
GameObj.layer = scene_layer;
GameObj.transform.localScale = DetailScale;
GameObj.AddComponent<UIDragScrollView>();
TweenScale tweenScale = GameObj.AddComponent<TweenScale>();
m_CardList.Add(GameObj.GetComponent<TweenScale>());
tweenScale.from = NormalScale;
tweenScale.to = ZoomedScale;
tweenScale.duration = 0.2f;
tweenScale.enabled = false;
GameObj.transform.parent = ScrollViewHorGrid;
GameObj.gameObject.SetActive(value: false);
if (charType != CardBasePrm.CharaType.SPELL && charType != CardBasePrm.CharaType.FIELD && charType != CardBasePrm.CharaType.CHANT_FIELD)
{
GameObject gameObject2 = GameMgr.GetIns().GetGameObjMgr().AddUIManagerChildPrefab(cp.m_LifeIcon);
UILabel component3 = gameObject2.transform.Find("LifeLabel").GetComponent<UILabel>();
gameObject2.transform.parent = GameObj.transform;
component3.text = cardParameter.Life.ToString();
gameObject2.transform.localPosition = Global.POSITION_LIFE_ICON;
SetNumberLabelStyle(component3, cardParameter.IsFoil);
GameObject gameObject3 = GameMgr.GetIns().GetGameObjMgr().AddUIManagerChildPrefab(cp.m_AtkIcon);
UILabel component4 = gameObject3.transform.Find("AtkLabel").GetComponent<UILabel>();
gameObject3.transform.parent = GameObj.transform;
component4.text = cardParameter.Atk.ToString();
gameObject3.transform.localPosition = Global.POSITION_ATK_ICON;
SetNumberLabelStyle(component4, cardParameter.IsFoil);
Transform obj3 = gameObject2.transform;
Vector3 localScale = (gameObject3.transform.localScale = Global.SCALE_CARD_ICON);
obj3.localScale = localScale;
if (scene_layer != 0)
{
gameObject3.layer = scene_layer;
gameObject2.layer = scene_layer;
}
gameObject3.SetActive(value: true);
gameObject2.SetActive(value: true);
}
GameObject gameObject4 = GameMgr.GetIns().GetGameObjMgr().AddUIContainerChildPrefab(cp.m_NameIcon);
gameObject4.transform.parent = GameObj.transform;
UILabel component5 = gameObject4.transform.Find("NameLabel").GetComponent<UILabel>();
component5.text = cardParameter.CardName;
SetNameLabelStyle(component5, cardParameter.IsFoil);
Global.SetRepositionNameLabel(component5, cardParameter.CardName, is2D: false);
gameObject4.transform.localScale = Global.SCALE_NAME_TEXT;
gameObject4.transform.localPosition = Global.POSITION_NAME_TEXT;
if (scene_layer != 0)
{
gameObject4.layer = scene_layer;
gameObject.layer = scene_layer;
}
cardObjData.CardObj = GameObj;
if (loadKind == LOAD_KIND.SELECT_DATA || loadKind == LOAD_KIND.SELECT_DATA_GACHA)
{
SelectCardListObjs.Add(cardObjData);
}
else
{
CardListObjs.Add(cardObjData);
}
}
private GameObject create2DCard(CardParameter prm, string PrefabPath, CardPrefabs cp)
{
GameObject gameObject = GameMgr.GetIns().GetGameObjMgr().AddUIContainerChildPrefab((prm.CharType == CardBasePrm.CharaType.NORMAL) ? cp.UnitGameObj : cp.SpellGameObj);
Material material = Get2dCardMaterial(prm);
if (material != null)
{
material.shader = Shader.Find(material.shader.name);
}
SetCardTexture(gameObject, material, prm);
return gameObject;
}
public static Material Get2dCardMaterial(CardParameter param)
{
ResourcesManager.AssetLoadPathType type;
switch (param.CharType)
{
case CardBasePrm.CharaType.NORMAL:
type = ResourcesManager.AssetLoadPathType.UnitCardMaterial;
break;
case CardBasePrm.CharaType.FIELD:
case CardBasePrm.CharaType.CHANT_FIELD:
case CardBasePrm.CharaType.SPELL:
type = (CardMaster.IsMutationCardCheck(param.BaseCardId) ? ResourcesManager.AssetLoadPathType.UnitCardMaterial : ResourcesManager.AssetLoadPathType.SpellCardMaterial);
break;
default:
type = ResourcesManager.AssetLoadPathType.UnitCardMaterial;
break;
}
return Toolbox.ResourcesManager.FindCardMaterial(param.ResourceCardId, type);
}
private void SetCardTexture(GameObject GameObj, Material material, CardParameter prm)
{
CardListTemplate component = GameObj.GetComponent<CardListTemplate>();
component._cardTexture.material = material;
component._cardTexture.uvRect = Global.CARD_2D_UV_RECT;
component.SetFrame(prm);
SetupClassIcon(component, prm);
}
private void SetupClassIcon(CardListTemplate obj, CardParameter prm)
{
obj._classIconTexture.mainTexture = ClassCharaPrm.GetClassIconTexture((int)prm.Clan);
}
private GameObject createNot2DCard(CardParameter prm, string PrefabPath, CardPrefabs cp, int scene_layer)
{
GameObject gameObject = null;
ResourcesManager.AssetLoadPathType type = ResourcesManager.AssetLoadPathType.SpellCardMaterial;
Mesh mesh = null;
Mesh mesh2 = null;
MeshFilter[] componentsInChildren;
if (prm.CharType == CardBasePrm.CharaType.SPELL)
{
gameObject = GameMgr.GetIns().GetGameObjMgr().AddUIContainerChildPrefab(cp.SpellGameObj);
gameObject.name = "Spell";
NGUITools.AddChild(gameObject, cp.SpellSpecGameObj).name = "SpecularSpell";
componentsInChildren = gameObject.GetComponentsInChildren<MeshFilter>();
mesh = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_spell", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
mesh2 = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_spell_low", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
if (CardMaster.IsMutationCardCheck(prm.BaseCardId))
{
type = ResourcesManager.AssetLoadPathType.UnitCardMaterial;
}
}
else
{
if (prm.CharType != CardBasePrm.CharaType.FIELD && prm.CharType != CardBasePrm.CharaType.CHANT_FIELD)
{
return create3DFollowerCard(prm, cp, scene_layer);
}
gameObject = GameMgr.GetIns().GetGameObjMgr().AddUIContainerChildPrefab(cp.FieldGameObj);
gameObject.name = "Field";
NGUITools.AddChild(gameObject, cp.FieldSpecGameObj).name = "SpecularField";
componentsInChildren = gameObject.GetComponentsInChildren<MeshFilter>();
mesh = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_field", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
mesh2 = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_field_low", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
if (CardMaster.IsMutationCardCheck(prm.BaseCardId))
{
type = ResourcesManager.AssetLoadPathType.UnitCardMaterial;
}
}
componentsInChildren[0].sharedMesh = mesh;
componentsInChildren[1].sharedMesh = mesh2;
Transform obj = componentsInChildren[0].transform;
Quaternion rotation = (componentsInChildren[1].transform.rotation = Quaternion.Euler(componentsInChildren[0].transform.rotation.x, componentsInChildren[0].transform.rotation.y + 180f, componentsInChildren[0].transform.rotation.z));
obj.rotation = rotation;
gameObject.transform.localScale = new Vector3(gameObject.transform.localScale.x, gameObject.transform.localScale.y, 1f);
Material material = Toolbox.ResourcesManager.FindCardMaterial(prm.ResourceCardId, type);
if (material != null)
{
CardShaderDefine.ReplaceBaseShader(material, prm.IsFoil);
}
Material[] sharedMaterials = new Material[3]
{
_3dCardFrameManager.GetFrameMaterial(prm.IsPhantomCard, prm.CharType, prm.Rarity),
material,
CardCreatorBase.GetSharedClassIconMaterial(prm.Clan)
};
LOD[] lODs = gameObject.GetComponent<LODGroup>().GetLODs();
for (int i = 0; i < lODs.Length; i++)
{
lODs[i].renderers[0].sharedMaterials = sharedMaterials;
}
UIManager.GetInstance().SetLayerRecursive(gameObject.transform, scene_layer);
return gameObject;
}
private GameObject create3DFollowerCard(CardParameter prm, CardPrefabs cp, int scene_layer)
{
GameObject gameObject = GameMgr.GetIns().GetGameObjMgr().AddUIContainerChildPrefab(cp.UnitGameObj);
gameObject.name = "Unit";
NGUITools.AddChild(gameObject, cp.UnitSpecGameObj).name = "SpecularUnit";
Material material = Toolbox.ResourcesManager.FindCardMaterial(prm.ResourceCardId, ResourcesManager.AssetLoadPathType.UnitCardMaterial);
Material material2 = Toolbox.ResourcesManager.FindCardMaterial(prm.ResourceCardId, ResourcesManager.AssetLoadPathType.UnitCardMaterial, isEvol: true);
if (material != null && material2 != null)
{
CardShaderDefine.ReplaceBaseShader(material, prm.IsFoil);
CardShaderDefine.ReplaceBaseShader(material2, prm.IsFoil);
}
gameObject.transform.localScale = new Vector3(gameObject.transform.localScale.x, gameObject.transform.localScale.y, 1f);
MeshFilter[] componentsInChildren = gameObject.GetComponentsInChildren<MeshFilter>();
Mesh sharedMesh = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_unit", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
Mesh sharedMesh2 = Toolbox.ResourcesManager.LoadObject<Mesh>(Toolbox.ResourcesManager.GetAssetTypePath("md_card_unit_low", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true));
componentsInChildren[0].sharedMesh = sharedMesh;
componentsInChildren[1].sharedMesh = sharedMesh2;
Transform obj = componentsInChildren[0].transform;
Quaternion rotation = (componentsInChildren[1].transform.rotation = Quaternion.Euler(componentsInChildren[0].transform.rotation.x, componentsInChildren[0].transform.rotation.y + 180f, componentsInChildren[0].transform.rotation.z));
obj.rotation = rotation;
Material[] sharedMaterials = new Material[3]
{
_3dCardFrameManager.GetFrameMaterial(prm.IsPhantomCard, prm.CharType, prm.Rarity),
material,
CardCreatorBase.GetSharedClassIconMaterial(prm.Clan)
};
LOD[] lODs = gameObject.GetComponent<LODGroup>().GetLODs();
for (int i = 0; i < lODs.Length; i++)
{
lODs[i].renderers[0].sharedMaterials = sharedMaterials;
}
UIManager.GetInstance().SetLayerRecursive(gameObject.transform, scene_layer);
return gameObject;
}
public List<CardObjData> getCardListObjs()
{
return CardListObjs;
}
public List<CardObjData> getCardList2DObjs()
{
return CardList2DObjs;
}
public List<CardObjData> getAllCardList2DObjs()
{
return AllCardList2DObjs;
}
public List<CardObjData> getSelectedCardList2DObjs()
{
return SelectedCardList2DObjs;
}
public IList<int> getSelectedCardIDList()
{
return SelectedCardIDList;
}
public List<CardObjData> getSelectCardListObjs()
{
return SelectCardListObjs;
}
public Material GetUIBaseSleeveTexture()
{
if (DeckBaseTexBase == null)
{
DeckBaseTexBase = Toolbox.ResourcesManager.LoadObject<Material>(Toolbox.ResourcesManager.GetAssetTypePath(3000011.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial, isfetch: true));
}
return DeckBaseTexBase;
}
public IEnumerator LoadResident()
{
_loadList.AddRange(_3dCardFrameManager.GetCommonLoadAssetList());
_loadList.AddRange(_3dCardFrameManager.GetLoadAssetList(_3dCardFrameManager.eFrameKind.Normal));
_loadList.AddRange(GetAddUnitPathList());
_loadList.AddRange(GetAddSpellPathList());
_loadList.AddRange(GetAddFieldPathList());
_loadList.Add(Toolbox.ResourcesManager.GetAssetTypePath("CardFrameClassIcon", ResourcesManager.AssetLoadPathType.CardFrameMaterialPlus));
_loadList.Add(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_CardBase", ResourcesManager.AssetLoadPathType.CardDeco));
_loadList.Add(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_md_Card", ResourcesManager.AssetLoadPathType.SleeveMesh));
_loadList.Add(Toolbox.ResourcesManager.GetAssetTypePath("sleeve_cardbase_d", ResourcesManager.AssetLoadPathType.SleeveSpecular));
_loadList.Add(Toolbox.ResourcesManager.GetAssetTypePath("foiltextures", ResourcesManager.AssetLoadPathType.FoilTextures));
_loadList.Add(Toolbox.ResourcesManager.GetAssetTypePath(3000011.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial));
_loadList.Add(Toolbox.ResourcesManager.GetAssetTypePath(3000011.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture));
for (int i = 0; i < 9; i++)
{
_loadList.Add(Toolbox.ResourcesManager.GetAssetTypePath("class_card_" + i.ToString("00"), ResourcesManager.AssetLoadPathType.CardFrameClassIcon));
}
_loadList.Add(UIManager.GetInstance().GetSceneAssetPath(UIAtlasManager.AssetBundleNames.CardFrame));
yield return StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupSync(_loadList, delegate
{
UIManager.GetInstance().AddResidentAtlas(UIAtlasManager.AssetBundleNames.CardFrame);
_3dCardFrameManager.InitFrameMaterials(_3dCardFrameManager.eFrameKind.Normal);
}));
}
public void SetNumberLabelStyle(UILabel inLabel, bool inIsPremiere)
{
UIFont bitmapFont;
Material material;
if (inIsPremiere)
{
bitmapFont = _PremiereCardFont;
material = _PremiereCardFont.material;
}
else
{
bitmapFont = _NormalCardFont;
material = _NormalCardFont.material;
}
inLabel.bitmapFont = bitmapFont;
inLabel.applyGradient = false;
if (inLabel.material.name != material.name)
{
inLabel.material = material;
}
}
public void SetNameLabelStyle(UILabel inLabel, bool inIsPremiere)
{
if (inIsPremiere)
{
inLabel.applyGradient = true;
inLabel.gradientTop = PREMIERE_GRADIENT_TOP_COLOR;
inLabel.gradientBottom = PREMIERE_GRADIENT_BOTTOM_COLOR;
inLabel.effectStyle = UILabel.Effect.Outline8;
inLabel.effectDistance = new Vector2(2f, 2f);
inLabel.effectColor = EFFECT_COLOR;
}
else
{
inLabel.applyGradient = false;
inLabel.effectStyle = UILabel.Effect.None;
}
}
public void SetSleeveTexture(UITexture inTargetTexture, long inSleeveId)
{
SetSleeveTextureSub(inTargetTexture, inSleeveId, enablePremiumSleeve: true);
}
public void SetSleeveTextureWithoutPremium(UITexture inTargetTexture, long inSleeveId)
{
SetSleeveTextureSub(inTargetTexture, inSleeveId, enablePremiumSleeve: false);
}
private void SetSleeveTextureSub(UITexture inTargetTexture, long inSleeveId, bool enablePremiumSleeve)
{
inSleeveId = Toolbox.ResourcesManager.GetExistingSleeveId(inSleeveId);
Sleeve sleeve = Data.Master.SleeveMgr.Get(inSleeveId);
Texture texture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(inSleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture, isfetch: true)) as Texture;
if (sleeve.IsPremiumSleeve && enablePremiumSleeve)
{
inTargetTexture.mainTexture = null;
inTargetTexture.material = Toolbox.ResourcesManager.LoadObject<Material>(Toolbox.ResourcesManager.GetAssetTypePath(inSleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial, isfetch: true));
inTargetTexture.material.SetTexture("_MainTex", texture);
Texture value = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath(inSleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureMask, isfetch: true));
inTargetTexture.material.SetTexture("_MaskTex", value);
}
else
{
inTargetTexture.mainTexture = texture;
inTargetTexture.material = null;
}
}
public void AddPremireSleevePath(ref List<string> loadPath, Sleeve sleeveData)
{
loadPath.Add(Toolbox.ResourcesManager.GetAssetTypePath(sleeveData.sleeve_id.ToString(), ResourcesManager.AssetLoadPathType.SleeveTextureMask));
loadPath.Add(Toolbox.ResourcesManager.GetAssetTypePath(sleeveData.sleeve_id.ToString(), ResourcesManager.AssetLoadPathType.SleeveMaterial));
}
public void AddKeyWordCache(List<int> cardPool, CardMaster.CardMasterId cardMasterId)
{
if (_keyWordCache == null)
{
_keyWordCache = new CardKeyWordCache();
}
if (_cardNameKeyWordCache == null)
{
_cardNameKeyWordCache = new CardKeyWordCache(CardKeyWordCache.Option.OnlyCardNames);
}
if (_cardNameKeyWordHiraganaCache == null)
{
_cardNameKeyWordHiraganaCache = new CardKeyWordCache(CardKeyWordCache.Option.OnlyCardNamesHiranaga);
}
if (_keyWordCommonCache == null)
{
_keyWordCommonCache = new CardKeyWordCommonCache();
}
CardMaster instance = CardMaster.GetInstance(cardMasterId);
foreach (int item in cardPool)
{
_keyWordCommonCache.CacheKeyWord(instance.GetCardParameterFromId(item));
}
}
public void ClearKeyWordCache()
{
_keyWordCache = null;
_cardNameKeyWordCache = null;
_cardNameKeyWordHiraganaCache = null;
_keyWordCommonCache = null;
}
public IList<string> GetKeyword(CardParameter param)
{
if (_keyWordCommonCache != null)
{
return _keyWordCommonCache.GetCloneList(param);
}
return BattleKeywordInfoListMgr.GetKeywords(param);
}
}