From 8e6dbad56b7f54953c8ec35a525c453363de8014 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Fri, 3 Jul 2026 22:32:22 -0400 Subject: [PATCH] =?UTF-8?q?cull(engine-cleanup):=20pass-8=20phase-2=20?= =?UTF-8?q?=E2=80=94=20stub=20CardDetailUI=20to=20live=20surface?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SVSim.BattleEngine/Engine/CardDetailUI.cs | 2455 +-------------------- 1 file changed, 33 insertions(+), 2422 deletions(-) diff --git a/SVSim.BattleEngine/Engine/CardDetailUI.cs b/SVSim.BattleEngine/Engine/CardDetailUI.cs index ff8f5b16..c5d70d9c 100644 --- a/SVSim.BattleEngine/Engine/CardDetailUI.cs +++ b/SVSim.BattleEngine/Engine/CardDetailUI.cs @@ -1,2429 +1,40 @@ using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; -using Cute; using UnityEngine; using Wizard; -using Wizard.Battle.View; +// PASS-8/Phase-2 STUB: 2,429-line client-side card-inspection popup reduced to the +// compile-time surface external callers touch. Held alive by deck editor, card +// collection, gacha reveal, and shop paths referencing CardDetailUI instances. +// Seventeen members preserved (all missed by static-ref grep because callers reach them +// via typed local variables). See Task 2b of PASS8-PLAN.md. public class CardDetailUI : UIBase { - private class CardVoiceData - { - - public readonly string MainVoiceId; - - public readonly List _acceleratedVoiceIdList = new List(); - - public readonly List _voiceListBeforeEvo; - - public readonly List _voiceListAfterEvo; - - private CardMaster.CardMasterId _cardMasterId; - - private List _splitVoiceList; - - public CardVoiceData(CardParameter cardParam, CardMaster.CardMasterId cardMasterId) - { - _cardMasterId = cardMasterId; - VoiceDictionaries voiceDictionaries = new VoiceDictionaries(cardParam.CardId, _cardMasterId); - MainVoiceId = voiceDictionaries.VoiceId; - List list = new List(); - List normalPlayVoices = voiceDictionaries.GetNormalPlayVoices(); - list.AddRange(normalPlayVoices); - list.AddRange(voiceDictionaries.atkVoices.GetAllVoiceList()); - list.AddRange(voiceDictionaries.destroyVoices.GetAllVoiceList()); - AddVoiceList(list, voiceDictionaries.skillVoices); - SkillOptionValue skillOptionValue = new SkillOptionValue(cardParam.SkillOption); - string option = skillOptionValue.GetOption(SkillFilterCreator.ContentKeyword.skill); - if (!string.IsNullOrEmpty(option)) - { - Skill_attach_skill.AttachOptionInfo attachOptionInfo = new Skill_attach_skill.AttachOptionInfo(option); - if (attachOptionInfo.Voice != string.Empty) - { - VoiceDictionary item = new VoiceDictionary(attachOptionInfo.Voice); - voiceDictionaries.attachSkillVoices.Add(item); - } - } - bool flag = skillOptionValue.GetOption(SkillFilterCreator.ContentKeyword.is_evolve, "false") == "true"; - if (voiceDictionaries.attachSkillVoices.Count > 0 && !flag) - { - AddVoiceList(list, voiceDictionaries.attachSkillVoices, list); - } - MatchCollection matchCollection = new Regex("card_id=(?80\\d*)").Matches(cardParam.SkillOption); - _acceleratedVoiceIdList.Clear(); - for (int i = 0; i < matchCollection.Count; i++) - { - VoiceDictionaries voiceDictionaries2 = new VoiceDictionaries(int.Parse(matchCollection[i].Groups["ACC_CARD_ID"].Value), _cardMasterId); - list.AddRange(voiceDictionaries2.playVoices.GetAllVoiceList()); - string voiceId = voiceDictionaries2.VoiceId; - if (!string.IsNullOrEmpty(voiceId)) - { - _acceleratedVoiceIdList.Add(voiceId); - } - } - _voiceListBeforeEvo = GetPlayableVoiceList(list); - List list2 = new List(); - list2.AddRange(voiceDictionaries.evoVoices.GetAllVoiceList()); - list2.AddRange(voiceDictionaries.evoAtkVoices.GetAllVoiceList()); - list2.AddRange(voiceDictionaries.evoDestroyVoices.GetAllVoiceList()); - AddVoiceList(list2, voiceDictionaries.evoSkillVoices, list); - if (voiceDictionaries.attachSkillVoices.Count > 0 && flag) - { - AddVoiceList(list2, voiceDictionaries.attachSkillVoices, list2); - } - _voiceListAfterEvo = GetPlayableVoiceList(list2); - } - - private List GetPlayableVoiceList(List voiceList) - { - List list = new List(); - for (int i = 0; i < voiceList.Count; i++) - { - if (!Data.Master.CardDetailVoiceIgnoreList.Contains(voiceList[i])) - { - list.Add(voiceList[i]); - } - } - return list; - } - - private void AddVoiceList(List tempVoiceList, List voices, List normalVoiceList = null) - { - if (_splitVoiceList != null && normalVoiceList != null) - { - if (voices == null) - { - voices = _splitVoiceList; - } - else - { - for (int num = _splitVoiceList.Count - 1; num >= 0; num--) - { - voices.Insert(0, _splitVoiceList[num]); - } - } - } - if (voices == null || voices.Count <= 0) - { - return; - } - for (int i = 0; i < voices.Count; i++) - { - string[] allVoiceList = voices[i].GetAllVoiceList(); - foreach (string text in allVoiceList) - { - if (text.Contains("none") || tempVoiceList.Contains(text)) - { - continue; - } - if (text.Contains('|')) - { - if (_splitVoiceList == null) - { - _splitVoiceList = new List(); - _splitVoiceList.Add(voices[i]); - } - else if (!_splitVoiceList.Contains(voices[i])) - { - _splitVoiceList.Add(voices[i]); - } - string[] array = text.Split('|'); - if (array.Length == 2) - { - string item = ((normalVoiceList == null) ? array[0] : array[1]); - tempVoiceList.Add(item); - } - } - else if (normalVoiceList == null) - { - tempVoiceList.Add(text); - } - else if (!normalVoiceList.Contains(text)) - { - tempVoiceList.Add(text); - } - } - } - } - } - - private class CardVoiceManager - { - private int _cardId; - - private bool _isPlayEvoVoice; - - private CardVoiceData _voiceData; - - private int _playIndex; - - private List _playVoiceList; - - private List _loadVoiceIdList = new List(); - - private List _unloadVoiceIdList = new List(); - - private List _loadedVoiceIdList = new List(); - - public void SequentiallyPlay(CardParameter cardParam, bool isPlayEvoVoice, CardMaster.CardMasterId cardMasterId) - { - int cardId = cardParam.CardId; - if (cardId == _cardId) - { - if (isPlayEvoVoice != _isPlayEvoVoice) - { - _isPlayEvoVoice = isPlayEvoVoice; - _playIndex = 0; - _playVoiceList = (isPlayEvoVoice ? _voiceData._voiceListAfterEvo : _voiceData._voiceListBeforeEvo); - } - else - { - _playIndex = (_playIndex + 1) % _playVoiceList.Count; - } - Stop(); - Play(); - return; - } - _cardId = cardId; - _isPlayEvoVoice = isPlayEvoVoice; - CardVoiceData voiceData = _voiceData; - _voiceData = new CardVoiceData(cardParam, cardMasterId); - _playIndex = 0; - _playVoiceList = (isPlayEvoVoice ? _voiceData._voiceListAfterEvo : _voiceData._voiceListBeforeEvo); - float unloadWaitTime = Stop(); - LoadAndUnload(_voiceData, voiceData, unloadWaitTime, delegate - { - Play(); - }); - } - - private void Play() - { - - } - - public float Stop() - { - return 0f; - } - - private void LoadAndUnload(CardVoiceData loadData, CardVoiceData unloadData, float unloadWaitTime = 0f, Action onFinishLoad = null) - { - _loadVoiceIdList.Clear(); - if (loadData != null) - { - _loadVoiceIdList.Add(loadData.MainVoiceId); - _loadVoiceIdList.AddRange(loadData._acceleratedVoiceIdList); - _loadVoiceIdList = _loadVoiceIdList.Distinct().ToList(); - } - _unloadVoiceIdList.Clear(); - if (unloadData != null) - { - _unloadVoiceIdList.Add(unloadData.MainVoiceId); - _unloadVoiceIdList.AddRange(unloadData._acceleratedVoiceIdList); - _unloadVoiceIdList = _unloadVoiceIdList.Distinct().ToList(); - } - List list = _loadVoiceIdList.Intersect(_unloadVoiceIdList).ToList(); - if (list.Count > 0) - { - _loadVoiceIdList = _loadVoiceIdList.Except(list).ToList(); - _unloadVoiceIdList = _unloadVoiceIdList.Except(list).ToList(); - } - onFinishLoad.Call(); - if (_loadVoiceIdList.Count > 0) - { - _loadedVoiceIdList.AddRange(_loadVoiceIdList); - } - for (int num = 0; num < _unloadVoiceIdList.Count; num++) - { - string unloadId = _unloadVoiceIdList[num]; - UIManager.GetInstance().StartCoroutine(Timer.DelayMethod(unloadWaitTime, delegate - { - - })); - _loadedVoiceIdList.Remove(unloadId); - } - } - - public void UnloadAll(float unloadWaitTime = 0f) - { - for (int i = 0; i < _loadedVoiceIdList.Count; i++) - { - string unloadId = _loadedVoiceIdList[i]; - UIManager.GetInstance().StartCoroutine(Timer.DelayMethod(unloadWaitTime, delegate - { - - })); - } - _loadedVoiceIdList.Clear(); - } - } - - private static readonly string RELATION_CARD_DISABLE_CARD_ID_HEADER = "80"; - - private static readonly int[] RELATION_CARD_BUTTON_DISABLE_CARD_IDS = new int[2] { 810014010, 810034010 }; - - private readonly List RELATION_CARD_SKILLOPTION_EXCLUDED_OPTIONS = new List { "effect_path", "se_path", "skill_voice" }; - - private readonly char[] RELATION_CARD_SKILLOPTION_SEPARATORS = new char[2] { '(', ')' }; - - [SerializeField] - private GameObject DarkPanel; - - [SerializeField] - private GameObject Frame; - - [SerializeField] - private GameObject CardTexture; - - [SerializeField] - private GameObject CardNum; - - [SerializeField] - private GameObject CardText; - - [SerializeField] - private GameObject CardViewBG; - - [SerializeField] - private GameObject CardShadow; - - [SerializeField] - private GameObject UnitCardStatusObj; - - [SerializeField] - private GameObject UnitCardIntroductionObj; - - [SerializeField] - private GameObject SettingCardStatusObj; - - [SerializeField] - private GameObject SettingCardIntroductionObj; - - [SerializeField] - private GameObject SpellCardStatusObj; - - [SerializeField] - private GameObject SpellCardIntroductionObj; - - [SerializeField] - private UIScrollView UnitCardTextScrollView; - - [SerializeField] - private UIScrollView SpellCardTextScrollView; - - [SerializeField] - private UIScrollView SettingCardTextScrollView; - - [SerializeField] - private UILabel UnitCardSkill; - - [SerializeField] - private UILabel UnitCardEvoSkill; - - [SerializeField] - private UILabel UnitCardAtkRight; - - [SerializeField] - private UILabel UnitCardLifeRight; - - [SerializeField] - private UILabel UnitCardEvoAtkRight; - - [SerializeField] - private UILabel UnitCardEvoLifeRight; - - [SerializeField] - private UILabel UnitCardIntroduction; - - [SerializeField] - private UILabel SpellCardSkill; - - [SerializeField] - private UILabel SpellCardIntroduction; - - [SerializeField] - private UILabel SettingCardSkill; - - [SerializeField] - private UILabel SettingCardIntroduction; - - [SerializeField] - private GameObject ReturnButton; - - [SerializeField] - private GameObject CardIntroductionButton; - - [SerializeField] - private UIButton _favoriteButton; - - [SerializeField] - private UIButton _voiceButton; - - [SerializeField] - private GameObject CardEvolButton; - - [SerializeField] - private UIButton _premiumCardConversionButton; - - [SerializeField] - private GameObject RelationWrapperObj; - - [SerializeField] - private GameObject RelationCardButton; - - [SerializeField] - private GameObject RightButton; - - [SerializeField] - private GameObject LeftButton; - - [SerializeField] - private GameObject RelationBackButton; - - [SerializeField] - private UILabel DialogTitleLabel; - - [SerializeField] - private UILabel _cardNumLabel; - - [SerializeField] - private UILabel _nameValueLabel; - - [SerializeField] - private UILabel _classValueLabel; - - [SerializeField] - private UILabel _typeValueLabel; - - [SerializeField] - private UILabel _redEtherHaveValueLabel; - - [SerializeField] - private UILabel _evolutionButtonLabel; - - [SerializeField] - private GameObject _cardVoiceLabelRoot; - - [SerializeField] - private UILabel _cardVoiceValueLabel; - - [SerializeField] - private GameObject _cardSetLabelRoot; - - [SerializeField] - private UILabel _cardSetValueLabel; - - [SerializeField] - private GameObject RedEtherIcon; - - [SerializeField] - private GameObject QuestionMark; - - [SerializeField] - private PurchaseConfirm PurchaseConfirmPrefab; - - [SerializeField] - private PremiumCardConversionDialogParts _premiumCardConversionDialogPrefab; - - [SerializeField] - private CardCraftPanel _craftPanel; - - [SerializeField] - private UIButton _blankColliderButton; - - private GameObject _rotationOnlyIconSpell; - - private GameObject _rotationOnlyIconFollower; - - private GameObject _rotationOnlyIconAmulet; - - private static readonly float kCARD_SCALE = 90f; - - private static readonly float kCARD_POS_Z = -4f; - - private readonly Vector3 CardViewScale = new Vector3(110f, 110f, 1f); - - private static readonly Color CARD_LIQUEFY_PARTICLE_COLOR = new Color(1f, 0.2509804f, 0.2509804f); - - private static readonly Color CARD_CREATE_PARTICLE_COLOR = new Color(1f, 0.2509804f, 0.2509804f); - - private static readonly Color PREMIUM_CARD_CONVERSION_PARTICLE_COLOR = new Color(14f / 85f, 32f / 85f, 0.5568628f); - - private static readonly Vector3 KEYWORD_DIALOG_BACK_VIEW_POSITION = new Vector3(0f, 0f, -5f); - - private GameObject UnitCardObject; - - private GameObject SpellCardObject; - - private GameObject FieldCardObject; - - private GameObject ViewCardObject; - - private UILabel UnitCost; - - private UILabel UnitAtk; - - private UILabel UnitLife; - - private UILabel UnitName; - - private UILabel SpellCost; - - private UILabel SpellName; - - private UILabel FieldCost; - - private UILabel FieldName; - - private BoxCollider UnitCardCollider; - - private BoxCollider SpellCardCollider; - - private BoxCollider FieldCardCollider; - - private bool _isFavorite; - - private bool _isFavoriteButtonEnabled; - - private bool _isEvolCard; - - private bool _isShowCardAblityText = true; - - private bool _shouldResetTextScrollView; - - private bool isCardViewMode; - - private bool isAnimation; - - [SerializeField] - private TextLineCreater _cardSkillTextLineCreater; - - [SerializeField] - private TextLineCreater _cardEvoSkillTextLineCreater; - - [SerializeField] - private TextLineCreater _cardSpellTextLineCreater; - - [SerializeField] - private TextLineCreater _cardAmuletTextLineCreater; - - [SerializeField] - private GameObject _evolveInfoObjectRoot; - - [SerializeField] - private UILabel _normalTitleLavel; - - private int _relationIndex; - - private List _relationCardIds = new List(); - - private Dictionary> _relationCardParentDict = new Dictionary>(); - - private GameObject _relationCardBaseGameObject; - - private int LayerDetail = 14; - - private bool isDetailOn; - - private ParticleSystem _evolEffect; - - private bool IsAnimationPlaying; - - private DialogBase _craftDialog; - - private DialogBase _keyWordDialog; - - private List _assetPathList = new List(); - - private List _assetTokenPathList = new List(); - - private CardVoiceManager _cardVoiceManager = new CardVoiceManager(); - - private bool _isAbleTapDialogObject = true; - - private static Shader _normalShader = null; - - private static Shader _premiumShader = null; - - private DialogBase _dialogForClose; - - private Material _cardMaterial; - - private int _originalCardId; - - private CardMaster.CardMasterId _cardMasterId; - - private UIButton[] _enableButtonList; - - private IFormatBehavior _formatBehaviorForCardPoolChange; - - public Action OnCardSellId; - - public Action OnCardBuy; - - public Action OnClose; - - public Action OnDragCard; - - public Action OnLiquefyAllCard; - - public Action OnChangeCardFavoriteState; - - public Action OnConvertedPremiumCard; - - public Action OnCreateFirstCard; - - private bool _isCardTextDialogLayerSet = true; - - private bool _isOwnCardNum; - - public CardParameter CardData { get; private set; } - - public Action OnDetailCardUpdate { get; set; } - - public Action OnCardNumChange { get; set; } - - private bool IsAbleToCraft - { - get - { - if (PlayerStaticData.UserRedEtherCount >= CardData.UseRedEther && !CardData.IsFoil) - { - if (GetPossessionCardNum(isIncludingSpotCard: true) >= 3) - { - return GetPossessionCardNum() == 0; - } - return true; - } - return false; - } - } - - private bool IsAbleToDestruct => GetPossessionCardNum() > 0; - - public bool IsShowFlavorTextButton { get; set; } - - public bool IsShowFavoriteButton { get; set; } - - public bool IsShowVoiceButton { get; set; } - - public bool IsShowEvolutionButton { get; set; } - - public bool IsShowCraftButtons { get; set; } - - public bool IsShowPremiumCardConversionButton { get; set; } - - public bool IsPopularityVote { get; set; } - - public bool IsCardTextDialogLayerSet - { - get - { - return _isCardTextDialogLayerSet; - } - set - { - _isCardTextDialogLayerSet = value; - } - } - - public bool IsOwnCardNum - { - get - { - return _isOwnCardNum; - } - set - { - _isOwnCardNum = value; - } - } - - public bool IsShortageUI { get; set; } - - public bool IsRelationCardViewing => RelationWrapperObj.activeSelf; - - public bool LeftButtonVisible - { - set - { - LeftButton.SetActive(value); - } - } - - public bool RightButtonVisible - { - set - { - RightButton.SetActive(value); - } - } - - public bool IsEnableShowDetail - { - get - { - if (IsAnimationPlaying) - { - return false; - } - return true; - } - } - - protected override void OnDestroy() - { - Toolbox.ResourcesManager.RemoveAssetGroup(_assetPathList); - _assetPathList.Clear(); - Toolbox.ResourcesManager.RemoveAssetGroup(_assetTokenPathList); - _assetTokenPathList.Clear(); - float unloadWaitTime = _cardVoiceManager.Stop(); - _cardVoiceManager.UnloadAll(unloadWaitTime); - if (_keyWordDialog != null) - { - _keyWordDialog.Close(); - } - if (_cardMaterial != null) - { - UnityEngine.Object.Destroy(_cardMaterial); - } - DestroyDialogObject(); - base.OnDestroy(); - } - - private void DestroyDialogObject() - { - if (_dialogForClose != null) - { - UnityEngine.Object.Destroy(_dialogForClose.gameObject); - _dialogForClose = null; - } - } - - public void Initialize(int DetailLayer, CardMaster.CardMasterId cardMasterId, IFormatBehavior formatBehaviorForCardPoolChange = null) - { - _formatBehaviorForCardPoolChange = formatBehaviorForCardPoolChange; - ChangeCardMaster(cardMasterId); - LayerDetail = DetailLayer; - base.gameObject.layer = LayerDetail; - InitializeCard(); - SetButtonEvent(); - SetDisableArrowButton(); - _enableButtonList = GetComponentsInChildren(includeInactive: true); - } - - public void ChangeCardMaster(CardMaster.CardMasterId cardMasterId) - { - _cardMasterId = cardMasterId; - } - - private void InitializeCard() - { - InitializeCardObject(); - InitializeCardMesh(); - InitializeCardDecoration(); - } - - private void InitializeCardObject() - { - UnitCardObject = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("Unit", ResourcesManager.AssetLoadPathType.HandCard, isfetch: true)) as GameObject; - SpellCardObject = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("Spell", ResourcesManager.AssetLoadPathType.HandCard, isfetch: true)) as GameObject; - FieldCardObject = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("Field", ResourcesManager.AssetLoadPathType.HandCard, isfetch: true)) as GameObject; - UnitCardObject = NGUITools.AddChild(CardTexture, UnitCardObject); - UnitCardObject.SetActive(value: false); - SpellCardObject = NGUITools.AddChild(CardTexture, SpellCardObject); - SpellCardObject.SetActive(value: false); - FieldCardObject = NGUITools.AddChild(CardTexture, FieldCardObject); - FieldCardObject.SetActive(value: false); - Transform obj = SpellCardObject.transform; - Vector3 localPosition = (FieldCardObject.transform.localPosition = new Vector3(0f, 0f, -500f)); - obj.localPosition = localPosition; - UIManager.GetInstance().SetLayerRecursive(UnitCardObject.transform, LayerDetail); - UIManager.GetInstance().SetLayerRecursive(SpellCardObject.transform, LayerDetail); - UIManager.GetInstance().SetLayerRecursive(FieldCardObject.transform, LayerDetail); - UnitCardCollider = UnitCardObject.AddComponent(); - SpellCardCollider = SpellCardObject.AddComponent(); - FieldCardCollider = FieldCardObject.AddComponent(); - BoxCollider unitCardCollider = UnitCardCollider; - BoxCollider spellCardCollider = SpellCardCollider; - Vector3 vector2 = (FieldCardCollider.size = new Vector3(3.6f, 5.5f, 1f)); - localPosition = (spellCardCollider.size = vector2); - unitCardCollider.size = localPosition; - UIWidget uIWidget = UnitCardObject.AddComponent(); - UIWidget uIWidget2 = SpellCardObject.AddComponent(); - UIWidget uIWidget3 = FieldCardObject.AddComponent(); - int num = (uIWidget3.depth = 1); - int depth = (uIWidget2.depth = num); - uIWidget.depth = depth; - GameObject prefab = Resources.Load("Prefab/CardDeco/RotationOnlyIcon") as GameObject; - _rotationOnlyIconSpell = NGUITools.AddChild(SpellCardObject, prefab); - _rotationOnlyIconFollower = NGUITools.AddChild(UnitCardObject, prefab); - _rotationOnlyIconAmulet = NGUITools.AddChild(FieldCardObject, prefab); - } - - private void InitializeCardMesh() - { - MeshFilter[] componentsInChildren = UnitCardObject.GetComponentsInChildren(); - Mesh sharedMesh = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("md_card_unit", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true)); - Mesh sharedMesh2 = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("md_card_unit_low", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true)); - componentsInChildren[0].sharedMesh = sharedMesh; - componentsInChildren[1].sharedMesh = sharedMesh2; - Quaternion quaternion = Quaternion.Euler(0f, componentsInChildren[0].transform.rotation.y + 180f, 0f); - Transform obj = componentsInChildren[0].transform; - Quaternion rotation = (componentsInChildren[1].transform.rotation = quaternion); - obj.rotation = rotation; - MeshFilter[] componentsInChildren2 = SpellCardObject.GetComponentsInChildren(); - Mesh sharedMesh3 = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("md_card_spell", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true)); - Mesh sharedMesh4 = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("md_card_spell_low", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true)); - componentsInChildren2[0].sharedMesh = sharedMesh3; - componentsInChildren2[1].sharedMesh = sharedMesh4; - Quaternion quaternion3 = Quaternion.Euler(0f, componentsInChildren2[0].transform.rotation.y + 180f, 0f); - Transform obj2 = componentsInChildren2[0].transform; - rotation = (componentsInChildren2[1].transform.rotation = quaternion3); - obj2.rotation = rotation; - MeshFilter[] componentsInChildren3 = FieldCardObject.GetComponentsInChildren(); - Mesh sharedMesh5 = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("md_card_field", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true)); - Mesh sharedMesh6 = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("md_card_field_low", ResourcesManager.AssetLoadPathType.CardFrameMesh, isfetch: true)); - componentsInChildren3[0].sharedMesh = sharedMesh5; - componentsInChildren3[1].sharedMesh = sharedMesh6; - Quaternion quaternion5 = Quaternion.Euler(0f, componentsInChildren3[0].transform.rotation.y + 180f, 0f); - Transform obj3 = componentsInChildren3[0].transform; - rotation = (componentsInChildren3[1].transform.rotation = quaternion5); - obj3.rotation = rotation; - } - - private void InitializeCardDecoration() - { - GameObject prefab = Resources.Load("Prefab/CardDeco/Cost") as GameObject; - GameObject prefab2 = Resources.Load("Prefab/CardDeco/Atk") as GameObject; - GameObject prefab3 = Resources.Load("Prefab/CardDeco/Life") as GameObject; - GameObject prefab4 = Resources.Load("Prefab/CardDeco/Name") as GameObject; - GameObject gameObject = NGUITools.AddChild(UnitCardObject, prefab); - GameObject gameObject2 = NGUITools.AddChild(UnitCardObject, prefab2); - GameObject gameObject3 = NGUITools.AddChild(UnitCardObject, prefab3); - GameObject gameObject4 = NGUITools.AddChild(UnitCardObject, prefab4); - GameObject gameObject5 = NGUITools.AddChild(SpellCardObject, prefab); - GameObject gameObject6 = NGUITools.AddChild(SpellCardObject, prefab4); - GameObject gameObject7 = NGUITools.AddChild(FieldCardObject, prefab); - GameObject gameObject8 = NGUITools.AddChild(FieldCardObject, prefab4); - Transform obj = gameObject.transform; - Transform obj2 = gameObject5.transform; - Vector3 vector = (gameObject7.transform.localPosition = Global.POSITION_COST_ICON); - Vector3 localPosition = (obj2.localPosition = vector); - obj.localPosition = localPosition; - Transform obj3 = gameObject.transform; - Transform obj4 = gameObject5.transform; - vector = (gameObject7.transform.localScale = Global.SCALE_CARD_ICON); - localPosition = (obj4.localScale = vector); - obj3.localScale = localPosition; - Transform obj5 = gameObject4.transform; - Transform obj6 = gameObject6.transform; - vector = (gameObject8.transform.localPosition = Global.POSITION_NAME_TEXT); - localPosition = (obj6.localPosition = vector); - obj5.localPosition = localPosition; - Transform obj7 = gameObject4.transform; - Transform obj8 = gameObject6.transform; - vector = (gameObject8.transform.localScale = Global.SCALE_NAME_TEXT); - localPosition = (obj8.localScale = vector); - obj7.localScale = localPosition; - gameObject2.transform.localPosition = Global.POSITION_ATK_ICON; - gameObject3.transform.localPosition = Global.POSITION_LIFE_ICON; - Transform obj9 = gameObject2.transform; - localPosition = (gameObject3.transform.localScale = Global.SCALE_CARD_ICON); - obj9.localScale = localPosition; - UnitCost = gameObject.transform.Find("CostLabel").GetComponent(); - UnitAtk = gameObject2.transform.Find("AtkLabel").GetComponent(); - UnitLife = gameObject3.transform.Find("LifeLabel").GetComponent(); - UnitName = gameObject4.transform.Find("NameLabel").GetComponent(); - SpellCost = gameObject5.transform.Find("CostLabel").GetComponent(); - SpellName = gameObject6.transform.Find("NameLabel").GetComponent(); - FieldCost = gameObject7.transform.Find("CostLabel").GetComponent(); - FieldName = gameObject8.transform.Find("NameLabel").GetComponent(); - } - - private void SetButtonEvent() - { - UIEventListener uIEventListener = UIEventListener.Get(ReturnButton); - uIEventListener.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener.onClick, new UIEventListener.VoidDelegate(OnPushCardDetailOn)); - UIEventListener uIEventListener2 = UIEventListener.Get(_blankColliderButton.gameObject); - uIEventListener2.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener2.onClick, new UIEventListener.VoidDelegate(OnPushCardDetailOn)); - UIEventListener uIEventListener3 = UIEventListener.Get(DarkPanel.gameObject); - uIEventListener3.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener3.onClick, new UIEventListener.VoidDelegate(OnPushCardDetailOn)); - UIEventListener uIEventListener4 = UIEventListener.Get(Frame.gameObject); - uIEventListener4.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener4.onClick, new UIEventListener.VoidDelegate(OnPushCardDetailOn)); - UIEventListener uIEventListener5 = UIEventListener.Get(CardIntroductionButton); - uIEventListener5.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener5.onClick, new UIEventListener.VoidDelegate(OnClickChangeCardTextTypeButton)); - UIEventListener uIEventListener6 = UIEventListener.Get(CardViewBG); - uIEventListener6.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener6.onClick, new UIEventListener.VoidDelegate(OnCloseCardViewMode)); - UIEventListener uIEventListener7 = UIEventListener.Get(UnitCardObject); - uIEventListener7.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener7.onClick, new UIEventListener.VoidDelegate(OnOpenCardViewMode)); - UIEventListener uIEventListener8 = UIEventListener.Get(SpellCardObject); - uIEventListener8.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener8.onClick, new UIEventListener.VoidDelegate(OnOpenCardViewMode)); - UIEventListener uIEventListener9 = UIEventListener.Get(FieldCardObject); - uIEventListener9.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener9.onClick, new UIEventListener.VoidDelegate(OnOpenCardViewMode)); - UIEventListener uIEventListener10 = UIEventListener.Get(_favoriteButton.gameObject); - uIEventListener10.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener10.onClick, new UIEventListener.VoidDelegate(OnClickFavoriteButton)); - UIEventListener uIEventListener11 = UIEventListener.Get(_voiceButton.gameObject); - uIEventListener11.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener11.onClick, new UIEventListener.VoidDelegate(OnClickVoiceButton)); - UIEventListener uIEventListener12 = UIEventListener.Get(_premiumCardConversionButton.gameObject); - uIEventListener12.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener12.onClick, new UIEventListener.VoidDelegate(OnClickPremiumCardConversionButton)); - UIEventListener uIEventListener13 = UIEventListener.Get(CardEvolButton); - uIEventListener13.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener13.onClick, new UIEventListener.VoidDelegate(OnClickEvolutionButton)); - UIEventListener uIEventListener14 = UIEventListener.Get(UnitCardObject); - uIEventListener14.onDrag = (UIEventListener.VectorDelegate)Delegate.Combine(uIEventListener14.onDrag, new UIEventListener.VectorDelegate(OnSwipeCard)); - UIEventListener uIEventListener15 = UIEventListener.Get(SpellCardObject); - uIEventListener15.onDrag = (UIEventListener.VectorDelegate)Delegate.Combine(uIEventListener15.onDrag, new UIEventListener.VectorDelegate(OnSwipeCard)); - UIEventListener uIEventListener16 = UIEventListener.Get(FieldCardObject); - uIEventListener16.onDrag = (UIEventListener.VectorDelegate)Delegate.Combine(uIEventListener16.onDrag, new UIEventListener.VectorDelegate(OnSwipeCard)); - UIEventListener uIEventListener17 = UIEventListener.Get(Frame); - uIEventListener17.onDrag = (UIEventListener.VectorDelegate)Delegate.Combine(uIEventListener17.onDrag, new UIEventListener.VectorDelegate(OnSwipeCard)); - UIEventListener uIEventListener18 = UIEventListener.Get(CardText); - uIEventListener18.onDrag = (UIEventListener.VectorDelegate)Delegate.Combine(uIEventListener18.onDrag, new UIEventListener.VectorDelegate(OnSwipeCard)); - UIEventListener uIEventListener19 = UIEventListener.Get(QuestionMark); - uIEventListener19.onDrag = (UIEventListener.VectorDelegate)Delegate.Combine(uIEventListener19.onDrag, new UIEventListener.VectorDelegate(OnSwipeCard)); - UIEventListener uIEventListener20 = UIEventListener.Get(RelationCardButton); - uIEventListener20.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener20.onClick, new UIEventListener.VoidDelegate(OnPushRelationCardButton)); - UIEventListener uIEventListener21 = UIEventListener.Get(RelationBackButton); - uIEventListener21.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener21.onClick, new UIEventListener.VoidDelegate(OnPushRelationBackButton)); - UIEventListener uIEventListener22 = UIEventListener.Get(RightButton); - uIEventListener22.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener22.onClick, new UIEventListener.VoidDelegate(OnPushRightButton)); - UIEventListener uIEventListener23 = UIEventListener.Get(LeftButton); - uIEventListener23.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener23.onClick, new UIEventListener.VoidDelegate(OnPushLeftButton)); - Action onClickDestructBtn = delegate - { - - CreateDialog(StartCardDestruct, buy: false); - }; - Action onClickCreateBtn = delegate - { - - CreateDialog(StartCardCraft, buy: true); - }; - _craftPanel.Init(onClickCreateBtn, onClickDestructBtn); - UIEventListener.Get(QuestionMark).onClick = delegate - { - if (_isAbleTapDialogObject) - { - - UILabel keyWordLabel = GetKeyWordLabel(); - string empty = string.Empty; - empty = ((!CardData.IsEvolveChoiceCard) ? (CardData.ConvertedSkillDescription + CardData.ConvertedEvoSkillDescription) : CardData.ConvertedEvoSkillDescription); - _keyWordDialog = BattlePlayerView.CreateKeyPanel(empty, keyWordLabel, _cardMasterId); - UIManager.ViewScene currentScene = UIManager.GetInstance().GetCurrentScene(); - if ((currentScene == UIManager.ViewScene.Battle || currentScene == UIManager.ViewScene.LoginBonus || currentScene == UIManager.ViewScene.Colosseum || currentScene == UIManager.ViewScene.LotteryPage || currentScene == UIManager.ViewScene.QuestSelectionPage) && IsCardTextDialogLayerSet) - { - _keyWordDialog.SetPanelDepth(120); - Vector3 localPosition = _keyWordDialog.gameObject.transform.localPosition; - localPosition.z = -5f; - localPosition.y = 0f; - _keyWordDialog.gameObject.transform.localPosition = localPosition; - ChangeLayer(_keyWordDialog.gameObject, LayerDetail); - _keyWordDialog.SetBackViewLayer(LayerDetail); - _keyWordDialog.SetBackViewPosition(KEYWORD_DIALOG_BACK_VIEW_POSITION); - UIPanel[] componentsInChildren = _keyWordDialog.InsideObject.GetComponentsInChildren(); - for (int i = 0; i < componentsInChildren.Length; i++) - { - componentsInChildren[i].depth += 120; - } - } - } - }; - UIEventListener uIEventListener24 = UIEventListener.Get(QuestionMark); - uIEventListener24.onPress = (UIEventListener.BoolDelegate)Delegate.Combine(uIEventListener24.onPress, (UIEventListener.BoolDelegate)delegate(GameObject g, bool b) - { - UILabel keyWordLabel = GetKeyWordLabel(); - if (keyWordLabel != null) - { - BattlePlayerView.PressKeyWordColorChange(keyWordLabel, b); - } - }); - UIEventListener uIEventListener25 = UIEventListener.Get(QuestionMark); - uIEventListener25.onDragStart = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener25.onDragStart, (UIEventListener.VoidDelegate)delegate - { - if (UnitCardTextScrollView.gameObject.activeInHierarchy) - { - BattlePlayerView.SetKeyWordLabelColor(UnitCardSkill); - BattlePlayerView.SetKeyWordLabelColor(UnitCardEvoSkill); - } - else - { - UILabel keyWordLabel = GetKeyWordLabel(); - if (keyWordLabel != null) - { - BattlePlayerView.SetKeyWordLabelColor(keyWordLabel); - } - } - }); - } - - private UILabel GetKeyWordLabel() - { - if (UnitCardTextScrollView.gameObject.activeInHierarchy) - { - Transform parent = UnitCardSkill.transform.parent; - UnitCardSkill.transform.SetParent(base.transform); - Vector3 vector = UnitCardSkill.transform.localPosition - new Vector3(0f, UnitCardSkill.printedSize.y, 0f); - UnitCardSkill.transform.SetParent(parent); - Vector3 vector2 = base.transform.InverseTransformPoint(UICamera.lastHit.point); - if (vector.y < vector2.y) - { - if (!string.IsNullOrEmpty(UnitCardSkill.text) && UnitCardSkill.text != " ") - { - return UnitCardSkill; - } - if (!string.IsNullOrEmpty(UnitCardEvoSkill.text) && UnitCardEvoSkill.text != " ") - { - return UnitCardEvoSkill; - } - } - else - { - if (!string.IsNullOrEmpty(UnitCardEvoSkill.text) && UnitCardEvoSkill.text != " ") - { - return UnitCardEvoSkill; - } - if (!string.IsNullOrEmpty(UnitCardSkill.text) && UnitCardSkill.text != " ") - { - return UnitCardSkill; - } - } - } - else - { - if (SpellCardTextScrollView.gameObject.activeInHierarchy) - { - return SpellCardSkill; - } - if (SettingCardTextScrollView.gameObject.activeInHierarchy) - { - return SettingCardSkill; - } - } - return null; - } - - public void OnPushCardDetailOn(GameObject g) - { - if (_isAbleTapDialogObject && ShowCardDetail(g)) - { - - } - } - - public bool ShowCardDetail(GameObject g) - { - if (isDetailOn) - { - CloseDefault(playSe: true); - return false; - } - if (!IsEnableShowDetail) - { - return false; - } - CharIdx component = g.GetComponent(); - if (!component) - { - return false; - } - isDetailOn = true; - IsAnimationPlaying = true; - base.gameObject.SetActive(value: true); - DarkPanel.SetActive(value: true); - DestroyDialogObject(); - _dialogForClose = UIManager.GetInstance().DialogManager.CreateDialogBaseOpenCardDetail(this); - SetCardDetail(component.GetCardId(), g); - OpenCardAnimation(); - return true; - } - - private void OpenCardAnimation() - { - iTween.Stop(CardNum.gameObject); - if (GetPossessionCardNum(isIncludingSpotCard: true) > 0) - { - CardNum.transform.localScale = new Vector3(0.01f, 0.01f, 1f); - iTween.ScaleTo(CardNum.gameObject, iTween.Hash("scale", new Vector3(1f, 1f, 1f), "time", 0.3f)); - } - else - { - CardNum.transform.localScale = new Vector3(1f, 1f, 1f); - } - GameObject gameObject = null; - CardBasePrm.CharaType charType = CardData.CharType; - gameObject = (CardBasePrm.IsFollowerCard(charType) ? UnitCardObject : ((!CardBasePrm.IsSpellCard(charType)) ? FieldCardObject : SpellCardObject)); - gameObject.transform.localScale = new Vector3(1f, 1f, 1f); - iTween.Stop(gameObject); - iTween.ScaleTo(gameObject, iTween.Hash("islocal", true, "scale", new Vector3(kCARD_SCALE, kCARD_SCALE, 1f), "time", 0.3f, "easetype", iTween.EaseType.easeOutExpo)); - iTween.MoveTo(gameObject, iTween.Hash("islocal", true, "x", 0f, "y", 0f, "z", kCARD_POS_Z, "time", 0.3f, "oncompletetarget", base.gameObject, "oncomplete", "OnAnimationOver", "easetype", iTween.EaseType.easeOutExpo)); - } - - private void OnAnimationOver() - { - IsAnimationPlaying = false; - BoxCollider unitCardCollider = UnitCardCollider; - BoxCollider spellCardCollider = SpellCardCollider; - Vector3 vector = (FieldCardCollider.size = new Vector3(3.6f, 5.5f, 1f)); - Vector3 size = (spellCardCollider.size = vector); - unitCardCollider.size = size; - } - - public void CloseDefault(bool playSe) - { - if (!isDetailOn || isAnimation || IsAnimationPlaying) - { - return; - } - if (isCardViewMode) - { - OnCloseCardViewMode(); - return; - } - isDetailOn = false; - DarkPanel.SetActive(value: false); - if (base.gameObject.activeSelf && playSe) - { - - } - base.gameObject.SetActive(value: false); - if (_evolEffect != null) - { - UnityEngine.Object.Destroy(_evolEffect.gameObject); - } - Toolbox.ResourcesManager.RemoveAssetGroup(_assetPathList); - Toolbox.ResourcesManager.RemoveAssetGroup(_assetTokenPathList); - _assetTokenPathList.Clear(); - DestroyDialogObject(); - OnClose.Call(); - } - - private void SetCardDetail(int cardId, GameObject card2dObj = null, bool isUpdateRelation = true) - { - CardData = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(cardId); - if (isUpdateRelation) - { - RelationWrapperObj.SetActive(value: false); - } - iTween.Stop(base.gameObject); - _isEvolCard = CardData.IsEvolveChoiceCard; - _isShowCardAblityText = true; - UpdateCardImage(); - SystemText systemText = Data.SystemText; - _nameValueLabel.text = CardData.CardName; - string key = "Common_01" + ((int)(4 + CardData.Clan)).ToString("00"); - _classValueLabel.text = systemText.Get(key); - _typeValueLabel.text = CardData.TribeName; - if (_typeValueLabel.text == "ALL") - { - _typeValueLabel.text = "-"; - } - UpdateCardText(); - _isFavoriteButtonEnabled = true; - UpdateButtonState(); - UpdateCreateLiquefyButton(); - if (isUpdateRelation) - { - UpdateRelation(cardId); - DialogTitleLabel.text = Data.SystemText.Get("Card_0135"); - } - UpdateCardNum(card2dObj); - if (!IsRelationCardViewing) - { - _relationCardBaseGameObject = card2dObj; - OnDetailCardUpdate.Call(); - } - } - - private void UpdateRelation(int cardId) - { - _relationCardIds.Clear(); - _relationCardParentDict.Clear(); - _relationIndex = 0; - _originalCardId = cardId; - if (RELATION_CARD_BUTTON_DISABLE_CARD_IDS.Contains(cardId)) - { - RelationCardButton.SetActive(value: false); - return; - } - CardMaster instance = CardMaster.GetInstance(_cardMasterId); - if (instance != null) - { - List allParams = new List(instance.GetAllParameters()); - ParseIdsFunc(allParams, cardId); - } - IDictionary> relationCardSortDic = Data.Master.RelationCardSortDic; - CardParameter cardParameterFromId = CardMaster.GetInstanceForBattle().GetCardParameterFromId(cardId); - if (relationCardSortDic.ContainsKey(cardParameterFromId.NormalCardId)) - { - _relationCardIds = new List(relationCardSortDic[cardParameterFromId.NormalCardId]); - } - else - { - _relationCardIds = SortRelationCardByKeyWordTextOrder(_relationCardIds); - } - bool flag = false; - foreach (int relationCardId in _relationCardIds) - { - if (relationCardSortDic.ContainsKey(relationCardId)) - { - flag = true; - break; - } - } - if (!relationCardSortDic.ContainsKey(cardParameterFromId.NormalCardId) && flag) - { - _relationCardIds = SortPartOfRelationCard(_relationCardIds, cardParameterFromId.NormalCardId); - } - } - - private static List SortPartOfRelationCard(List originalList, int cardId) - { - List list = new List(); - list.AddRange(originalList); - IDictionary> relationCardSortDic = Data.Master.RelationCardSortDic; - foreach (int original in originalList) - { - if (!relationCardSortDic.TryGetValue(original, out var value)) - { - continue; - } - List list2 = new List(); - for (int i = 0; i < value.Count; i++) - { - int num = value[i]; - for (int j = 0; j < originalList.Count; j++) - { - if (originalList[j] == num) - { - list2.Add(j); - break; - } - } - } - list2.Sort(); - for (int k = 0; k < list2.Count; k++) - { - int index = list2[k]; - list[index] = value[k]; - } - } - return list; - } - - private List SortRelationCardByKeyWordTextOrder(List originalList) - { - if (originalList.Count < 2) - { - return originalList; - } - List sortedCardIdList = new List(); - List keywordListInCard = GetKeywordListInCard(CardData.CardId); - for (int i = 0; i < keywordListInCard.Count; i++) - { - List cardIdsInKeyword = GetCardIdsInKeyword(keywordListInCard[i]); - if (cardIdsInKeyword.Count == 0) - { - continue; - } - int num = cardIdsInKeyword[0]; - if (!originalList.Contains(num)) - { - continue; - } - if (!sortedCardIdList.Contains(num)) - { - sortedCardIdList.Add(num); - } - List keywordListInCard2 = GetKeywordListInCard(num); - for (int j = 0; j < keywordListInCard2.Count; j++) - { - List cardIdsInKeyword2 = GetCardIdsInKeyword(keywordListInCard2[j]); - if (cardIdsInKeyword2.Count == 0) - { - continue; - } - for (int k = 0; k < cardIdsInKeyword2.Count; k++) - { - int num2 = cardIdsInKeyword2[k]; - if (originalList.Contains(num2) && !sortedCardIdList.Contains(num2)) - { - sortedCardIdList.Add(num2); - } - if (k > 0) - { - AddNonAppearedRelationCardId(num2, ref sortedCardIdList); - } - } - AddNonAppearedRelationCardId(cardIdsInKeyword2[0], ref sortedCardIdList); - } - AddNonAppearedRelationCardId(num, ref sortedCardIdList); - } - foreach (int original in originalList) - { - if (!sortedCardIdList.Contains(original)) - { - sortedCardIdList.Add(original); - } - } - return sortedCardIdList; - } - - private void AddNonAppearedRelationCardId(int parentCardId, ref List sortedCardIdList) - { - if (!_relationCardParentDict.TryGetValue(parentCardId, out var value)) - { - return; - } - foreach (int item in value) - { - if (!sortedCardIdList.Contains(item)) - { - sortedCardIdList.Add(item); - } - } - } - - private List GetKeywordListInCard(int cardId) - { - CardParameter cardParameterFromId = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(cardId); - List list = BattleKeywordInfoListMgr.GetKeywords(cardParameterFromId.ConvertedSkillDescription).ToList(); - if (CardBasePrm.IsFollowerCard(CardData.CharType)) - { - list.AddRange(BattleKeywordInfoListMgr.GetKeywords(cardParameterFromId.ConvertedEvoSkillDescription).ToList()); - } - return list; - } - - private List GetCardIdsInKeyword(string keyword) - { - List list = new List(); - if (Data.Master.BattleKeyWordDic.ContainsKey(keyword)) - { - list.AddRange(BattleKeywordInfoListMgr.GetCardIdsInDesc(Data.Master.BattleKeyWordDic[keyword])); - } - return list; - } - - private void UpdateCardImage() - { - CardMaster instance = CardMaster.GetInstance(_cardMasterId); - int cardId = CardData.CardId; - CardParameter cardParameterFromId = instance.GetCardParameterFromId(cardId); - int resourceCardId = cardParameterFromId.ResourceCardId; - int rarity = CardData.Rarity; - CardBasePrm.CharaType charType = CardData.CharType; - GameObject gameObject = null; - Material material = null; - bool flag = CardBasePrm.IsFollowerCard(charType); - bool flag2 = CardBasePrm.IsSpellCard(charType); - bool flag3 = CardBasePrm.IsAmuletCard(charType); - UnitCardObject.SetActive(flag && !flag2 && !flag3); - SpellCardObject.SetActive(!flag && flag2 && !flag3); - FieldCardObject.SetActive(!flag && !flag2 && flag3); - if (flag2) - { - gameObject = SpellCardObject; - try - { - material = Toolbox.ResourcesManager.FindCardMaterial(resourceCardId, ResourcesManager.AssetLoadPathType.SpellCardMaterial, isEvol: false, CardMaster.IsMutationCardCheck(instance.GetCardParameterFromId(cardId).BaseCardId), instance.GetCardParameterFromId(resourceCardId).CharType); - CardShaderDefine.ReplaceShader(material); - } - catch (Exception ex) - { - Debug.LogError(ex.ToString()); - LocalLog.AccumulateTraceLog(ex.ToString()); - } - _rotationOnlyIconSpell.SetActive(cardParameterFromId.IsResurgentCard); - SpellCost.text = CardData.Cost.ToString(); - SpellName.text = CardData.CardName; - Global.SetRepositionNameLabel(SpellName, CardData.CardName, is2D: false); - UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(SpellCost, CardData.IsFoil); - UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(SpellName, CardData.IsFoil); - } - else if (flag3) - { - gameObject = FieldCardObject; - try - { - material = Toolbox.ResourcesManager.FindCardMaterial(resourceCardId, ResourcesManager.AssetLoadPathType.SpellCardMaterial, isEvol: false, CardMaster.IsMutationCardCheck(instance.GetCardParameterFromId(cardId).BaseCardId), instance.GetCardParameterFromId(resourceCardId).CharType); - CardShaderDefine.ReplaceShader(material); - } - catch (Exception ex2) - { - Debug.LogError(ex2.ToString()); - LocalLog.AccumulateTraceLog(ex2.ToString()); - } - _rotationOnlyIconAmulet.SetActive(cardParameterFromId.IsResurgentCard); - FieldCost.text = CardData.Cost.ToString(); - FieldName.text = CardData.CardName; - Global.SetRepositionNameLabel(FieldName, CardData.CardName, is2D: false); - UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(FieldCost, CardData.IsFoil); - UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(FieldName, CardData.IsFoil); - } - else if (flag) - { - gameObject = UnitCardObject; - try - { - material = Toolbox.ResourcesManager.FindCardMaterial(resourceCardId, ResourcesManager.AssetLoadPathType.UnitCardMaterial, _isEvolCard); - CardShaderDefine.ReplaceShader(material); - } - catch (Exception ex3) - { - Debug.LogError(ex3.ToString()); - LocalLog.AccumulateTraceLog(ex3.ToString()); - } - _rotationOnlyIconFollower.SetActive(cardParameterFromId.IsResurgentCard); - UnitCost.text = CardData.Cost.ToString(); - UnitAtk.text = (_isEvolCard ? CardData.EvoAtk.ToString() : CardData.Atk.ToString()); - UnitLife.text = (_isEvolCard ? CardData.EvoLife.ToString() : CardData.Life.ToString()); - UnitName.text = CardData.CardName; - Global.SetRepositionNameLabel(UnitName, CardData.CardName, is2D: false); - UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(UnitCost, CardData.IsFoil); - UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(UnitAtk, CardData.IsFoil); - UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(UnitLife, CardData.IsFoil); - UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(UnitName, CardData.IsFoil); - } - if (material != null) - { - if (cardParameterFromId.IsFoil) - { - if (_premiumShader == null) - { - _premiumShader = Shader.Find("Wizard/VariantCardShader"); - } - if (material.shader != _premiumShader) - { - material.shader = _premiumShader; - material.color = Color.white; - } - } - else - { - if (_normalShader == null) - { - _normalShader = Shader.Find("Wizard/Card/Basic_Front0_Back0_Normal"); - } - if (material.shader != _normalShader) - { - material.shader = _normalShader; - material.color = Color.white; - } - } - } - if (_cardMaterial != null) - { - UnityEngine.Object.Destroy(_cardMaterial); - } - Material cardMaterial = ((material != null) ? UnityEngine.Object.Instantiate(material) : null); - Material[] sharedMaterials = new Material[3] - { - UIManager.GetInstance().getUIBase_CardManager()._3dCardFrameManager.GetFrameMaterial(cardParameterFromId.IsPhantomCard, charType, rarity), - _cardMaterial = cardMaterial, - CardCreatorBase.GetSharedClassIconMaterial(CardData.Clan) - }; - LOD[] lODs = gameObject.GetComponent().GetLODs(); - for (int i = 0; i < lODs.Length; i++) - { - lODs[i].renderers[0].sharedMaterials = sharedMaterials; - } - AttachShadow(gameObject, CardShadow.gameObject); - bool active = UIManager.GetInstance().GetCurrentScene() == UIManager.ViewScene.CardAllList && GetPossessionCardNum(isIncludingSpotCard: true) <= 0; - CardShadow.SetActive(active); - } - - private static void AttachShadow(GameObject parentObj, GameObject shadowObj) - { - Transform parent = parentObj.transform; - Transform obj = shadowObj.transform; - obj.parent = parent; - obj.localPosition = new Vector3(0f, 0f, kCARD_POS_Z - 1f); - obj.localRotation = Quaternion.identity; - obj.localScale = new Vector3(1f / kCARD_SCALE, 1f / kCARD_SCALE, 1f); - shadowObj.layer = parentObj.layer; - } - - private void UpdateCardNum(GameObject card2dObj = null) - { - if (_isOwnCardNum || card2dObj == null) - { - // Pre-Phase-5b: reached GameMgr.DataMgr.SpotCardData to determine spot-card num. - // Headless has no user inventory or spot-card seed — collapse to the else branch - // so the label reflects the (zero) owned-card count. - SetCardNumLabel(GetPossessionCardNum()); - return; - } - CardListTemplate component = card2dObj.GetComponent(); - if (component != null && component.IsShowNum()) - { - if (component.IsIncludingSpotCard) - { - SetCardNumLabel(component.GetNum(), component.GetSpotCardNum()); - } - else - { - SetCardNumLabel(component.GetNum()); - } - } - else - { - SetCardNumLabel(0); - } - } - - private static bool IsTokenId(int cardId) - { - return cardId / 100000000 == 9; - } - - private int GetPossessionCardNumOnRelationCard(bool isIncludingSpotCard) - { - if (IsTokenId(CardData.CardId)) - { - return GetPosessionCardNum(_originalCardId, isIncludingSpotCard); - } - int posessionCardNum = GetPosessionCardNum(_originalCardId, isIncludingSpotCard); - int posessionCardNum2 = GetPosessionCardNum(CardData.CardId, isIncludingSpotCard); - if (posessionCardNum > 0 || posessionCardNum2 > 0) - { - return 1; - } - return 0; - } - - private int GetPosessionCardNum(int cardId, bool isIncludingSpotCard) - { - if (_formatBehaviorForCardPoolChange != null) - { - return _formatBehaviorForCardPoolChange.GetPossessionCardNum(cardId, isIncludingSpotCard); - } - return 0; // Pre-Phase-5b: headless has no user inventory - } - - private int GetPossessionCardNum(bool isIncludingSpotCard = false) - { - if (IsRelationCardViewing) - { - return GetPossessionCardNumOnRelationCard(isIncludingSpotCard); - } - return GetPosessionCardNum(CardData.CardId, isIncludingSpotCard); - } - - private void SetCardNumLabel(int num) - { - SetCardNumActive(num > 0); - _cardNumLabel.text = num.ToString(); - } - - private void SetCardNumLabel(int cardNum, int spotCardNum) - { - SetCardNumActive(cardNum + spotCardNum > 0); - _cardNumLabel.text = $"{cardNum}[fcd24a]+{spotCardNum}"; - } - - private void SetCardNumActive(bool isEnabled) - { - if (IsRelationCardViewing) - { - CardNum.SetActive(value: false); - } - else - { - CardNum.SetActive(isEnabled); - } - } - - private void UpdateCardText() - { - if (_isShowCardAblityText) - { - UpdateCardAbilityText(); - StartCoroutine(DelayResetScrollViewPosition()); - _shouldResetTextScrollView = true; - } - else - { - UpdateCardFlavorText(); - if (_shouldResetTextScrollView) - { - ResetScrollViewPosition(); - _shouldResetTextScrollView = false; - } - } - CardBasePrm.CharaType charType = CardData.CharType; - bool flag = CardBasePrm.IsFollowerCard(charType); - bool flag2 = CardBasePrm.IsSpellCard(charType); - bool flag3 = CardBasePrm.IsAmuletCard(charType); - UnitCardTextScrollView.gameObject.SetActive(flag && !flag2 && !flag3); - if (UnitCardTextScrollView.gameObject.activeSelf) - { - UnitCardStatusObj.gameObject.SetActive(_isShowCardAblityText); - UnitCardIntroductionObj.gameObject.SetActive(!_isShowCardAblityText); - } - SpellCardTextScrollView.gameObject.SetActive(!flag && flag2 && !flag3); - if (SpellCardTextScrollView.gameObject.activeSelf) - { - SpellCardStatusObj.gameObject.SetActive(_isShowCardAblityText); - SpellCardIntroductionObj.gameObject.SetActive(!_isShowCardAblityText); - } - SettingCardTextScrollView.gameObject.SetActive(!flag && !flag2 && flag3); - if (SettingCardTextScrollView.gameObject.activeSelf) - { - SettingCardStatusObj.gameObject.SetActive(_isShowCardAblityText); - SettingCardIntroductionObj.gameObject.SetActive(!_isShowCardAblityText); - } - _cardVoiceLabelRoot.gameObject.SetActive(!_isShowCardAblityText && CardData.CardVoice != string.Empty); - _cardSetLabelRoot.gameObject.SetActive(!_isShowCardAblityText); - } - - private void UpdateCardAbilityText() - { - CardBasePrm.CharaType charType = CardData.CharType; - string convertedSkillDescription = CardData.ConvertedSkillDescription; - if (CardBasePrm.IsFollowerCard(charType)) - { - FollowerCardAbilityTexActive(); - } - else if (CardBasePrm.IsSpellCard(charType)) - { - SpellCardSkill.SetWrapText(convertedSkillDescription); - SpellCardSkill.gameObject.SetActive(value: false); - SpellCardSkill.gameObject.SetActive(value: true); - _cardSpellTextLineCreater.ShowLines(GetLineNumber(SpellCardSkill), isOriginalActive: true); - } - else if (CardBasePrm.IsAmuletCard(charType)) - { - SettingCardSkill.SetWrapText(convertedSkillDescription); - SettingCardSkill.gameObject.SetActive(value: false); - SettingCardSkill.gameObject.SetActive(value: true); - _cardAmuletTextLineCreater.ShowLines(GetLineNumber(SettingCardSkill), isOriginalActive: true); - } - } - - private void FollowerCardAbilityTexActive() - { - bool isEvolveChoiceCard = CardData.IsEvolveChoiceCard; - UILabel normalTitleLavel = _normalTitleLavel; - string text3; - if (!isEvolveChoiceCard) - { - string text = (_normalTitleLavel.text = Data.SystemText.Get("Card_0037")); - text3 = text; - } - else - { - text3 = Data.SystemText.Get("Card_0038"); - } - normalTitleLavel.text = text3; - _evolveInfoObjectRoot.gameObject.SetActive(!isEvolveChoiceCard); - UnitCardSkill.SetWrapText(isEvolveChoiceCard ? CardData.ConvertedEvoSkillDescription : CardData.ConvertedSkillDescription); - UnitCardEvoSkill.SetWrapText(isEvolveChoiceCard ? string.Empty : CardData.ConvertedEvoSkillDescription); - UnitCardAtkRight.text = (isEvolveChoiceCard ? CardData.EvoAtk.ToString() : CardData.Atk.ToString()); - UnitCardLifeRight.text = (isEvolveChoiceCard ? CardData.EvoLife.ToString() : CardData.Life.ToString()); - UnitCardEvoAtkRight.text = (isEvolveChoiceCard ? string.Empty : CardData.EvoAtk.ToString()); - UnitCardEvoLifeRight.text = (isEvolveChoiceCard ? string.Empty : CardData.EvoLife.ToString()); - UnitCardSkill.gameObject.SetActive(value: false); - UnitCardSkill.gameObject.SetActive(value: true); - UnitCardEvoSkill.gameObject.SetActive(value: false); - UnitCardEvoSkill.gameObject.SetActive(!isEvolveChoiceCard); - _cardSkillTextLineCreater.ShowLines(GetLineNumber(UnitCardSkill)); - _cardEvoSkillTextLineCreater.ShowLines(GetLineNumber(UnitCardEvoSkill)); - } - - private int GetLineNumber(UILabel uILabel) - { - return Global.GetTextLineCount(uILabel.text); - } - - private void UpdateCardFlavorText() - { - string wrapText = "???"; - NGUIText.Alignment alignment = NGUIText.Alignment.Center; - if (IsPopularityVote || GetPossessionCardNum(isIncludingSpotCard: true) > 0) - { - wrapText = (_isEvolCard ? CardData.EvoDescription : CardData.Description); - alignment = NGUIText.Alignment.Left; - } - CardBasePrm.CharaType charType = CardData.CharType; - UILabel uILabel = null; - if (CardBasePrm.IsFollowerCard(charType)) - { - uILabel = UnitCardIntroduction; - } - else if (CardBasePrm.IsSpellCard(charType)) - { - uILabel = SpellCardIntroduction; - } - else if (CardBasePrm.IsAmuletCard(charType)) - { - uILabel = SettingCardIntroduction; - } - uILabel.SetWrapText(wrapText); - uILabel.alignment = alignment; - _cardVoiceValueLabel.text = CardData.CardVoice; - _cardSetValueLabel.text = Data.Master.CardSetNameMgr.Get(CardData.CardSetId).LongName; - } - - private void UpdateButtonState() - { - UpdateFavoriteButton(); - UpdateVoiceButton(); - CardIntroductionButton.SetActive(IsShowFlavorTextButton); - UpdateEvolutionButton(); - UpdatePremiumCardConversionButton(); - QuestionMark.SetActive(_isShowCardAblityText && BattlePlayerView.HasKeyword(CardData)); - } - - private void OnSwipeCard(GameObject g, Vector2 dir) - { - if (IsRelationCardViewing) - { - if (_relationCardIds.Count > 1) - { - if (dir.x >= 70f) - { - OnPushLeftButton(LeftButton); - } - if (dir.x <= -70f) - { - OnPushRightButton(RightButton); - } - } - } - else if (!IsAnimationPlaying && (!(_craftDialog != null) || !_craftDialog.IsOpen())) - { - OnDragCard.Call(dir); - } - } - - private void ParseIdsFunc(List allParams, int cardId) - { - foreach (CardParameter allParam in allParams) - { - if (allParam.CardId == cardId) - { - ParseIds(allParams, allParam.Skill, cardId); - ParseIds(allParams, allParam.SkillCondition, cardId); - ParseIds(allParams, allParam.SkillOption, cardId, RELATION_CARD_SKILLOPTION_EXCLUDED_OPTIONS, RELATION_CARD_SKILLOPTION_SEPARATORS); - ParseIds(allParams, allParam.SkillPreprocess, cardId); - ParseIds(allParams, allParam.SkillTarget, cardId); - break; - } - } - } - - private void ParseIds(List allParams, string str, int cardId, List excludedOptions = null, char[] separators = null) - { - CardParameter cardParameterFromId = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(cardId); - string normalSkillText = Global.ConvertToWithoutBBCode(cardParameterFromId.SkillDescription); - string evolSkillText = Global.ConvertToWithoutBBCode(cardParameterFromId.EvoSkillDescription); - if (excludedOptions != null && separators != null) - { - string[] sub = str.Split(separators, StringSplitOptions.RemoveEmptyEntries); - int i; - for (i = 0; i < sub.Length; i++) - { - if (excludedOptions.Any((string x) => sub[i].Contains(x))) - { - continue; - } - foreach (Match item in Regex.Matches(sub[i], "\\d{9}")) - { - int validateCardId = int.Parse(item.Value); - ValidateAddId(validateCardId, cardParameterFromId, normalSkillText, evolSkillText, allParams); - } - } - } - else - { - foreach (Match item2 in Regex.Matches(str, "\\d{9}")) - { - int validateCardId2 = int.Parse(item2.Value); - ValidateAddId(validateCardId2, cardParameterFromId, normalSkillText, evolSkillText, allParams); - } - } - if (_relationCardIds.Count > 0) - { - RelationCardButton.SetActive(value: true); - UpdateRelationCount(); - } - else - { - RelationCardButton.SetActive(value: false); - } - } - - private void ValidateAddId(int validateCardId, CardParameter refRootCardParam, string normalSkillText, string evolSkillText, List allParams) - { - CardParameter cardParameterFromId = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(_originalCardId); - CardParameter cardParameterFromId2 = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(validateCardId); - int validateBaseCardId = cardParameterFromId2.BaseCardId; - if ((validateBaseCardId == cardParameterFromId.BaseCardId && !cardParameterFromId2.IsEvolveChoiceCard) || validateCardId == 0 || _relationCardIds.Contains(validateCardId) || validateCardId == refRootCardParam.CardId || validateCardId == refRootCardParam.NormalCardId) - { - return; - } - if (refRootCardParam.CardId != _originalCardId) - { - int num = _relationCardIds.FindIndex((int cardId) => CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(cardId).BaseCardId == validateBaseCardId); - if (num >= 0) - { - CardParameter cardParameterFromId3 = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(_relationCardIds[num]); - if (cardParameterFromId3.BaseCardId == cardParameterFromId3.CardId || validateBaseCardId != validateCardId) - { - return; - } - _relationCardIds.RemoveAt(num); - } - } - if (validateCardId == 100011010) - { - string value = Global.ConvertToWithoutBBCode(CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(validateCardId).CardName); - if (!normalSkillText.Contains(value) && !evolSkillText.Contains(value)) - { - return; - } - } - if (!validateCardId.ToString().StartsWith(RELATION_CARD_DISABLE_CARD_ID_HEADER, StringComparison.Ordinal)) - { - _relationCardIds.Add(validateCardId); - if (!_relationCardParentDict.TryGetValue(refRootCardParam.CardId, out var value2)) - { - value2 = new List(); - _relationCardParentDict.Add(refRootCardParam.CardId, value2); - } - value2.Add(validateCardId); - } - ParseIdsFunc(allParams, validateCardId); - } - - private void OnPushRelationCardButton(GameObject g) - { - - if (!IsAnimationPlaying) - { - IsAnimationPlaying = true; - RelationCardButton.SetActive(value: false); - RelationWrapperObj.SetActive(value: true); - _relationIndex = 0; - RereshRelation(g); - } - } - - private void OnPushRelationBackButton(GameObject g) - { - - if (!IsAnimationPlaying) - { - RelationWrapperObj.SetActive(value: false); - IsAnimationPlaying = true; - _relationIndex = 0; - SetCardDetail(_originalCardId, _relationCardBaseGameObject); - OpenCardAnimation(); - DialogTitleLabel.text = Data.SystemText.Get("Card_0135"); - } - } - - private void OnPushRightButton(GameObject g) - { - if (IsRelationCardViewing) - { - if (!IsAnimationPlaying) - { - IsAnimationPlaying = true; - _relationIndex++; - if (_relationIndex >= _relationCardIds.Count) - { - _relationIndex = 0; - } - RereshRelation(g); - - } - } - else - { - OnDragCard.Call(new Vector2(-70f, 0f)); - } - } - - private void OnPushLeftButton(GameObject g) - { - if (IsRelationCardViewing) - { - if (!IsAnimationPlaying) - { - IsAnimationPlaying = true; - _relationIndex--; - if (_relationIndex < 0) - { - _relationIndex = _relationCardIds.Count - 1; - } - RereshRelation(g); - - } - } - else - { - OnDragCard.Call(new Vector2(70f, 0f)); - } - } - - private void UpdateRelationCount() - { - CardParameter cardParameterFromId = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(_originalCardId); - DialogTitleLabel.text = string.Format(Data.SystemText.Get("Card_0217") + "\u3000({1}/{2})", cardParameterFromId.CardName, _relationIndex + 1, _relationCardIds.Count); - } - - private void RereshRelation(GameObject g) - { - UpdateRelationCount(); - if (IsRelationCardViewing) - { - bool active = _relationCardIds.Count > 1; - RightButton.SetActive(active); - LeftButton.SetActive(active); - } - Toolbox.ResourcesManager.RemoveAssetGroup(_assetTokenPathList); - _assetTokenPathList.Clear(); - CardParameter cardParameterFromId = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(_originalCardId); - int id = _relationCardIds[_relationIndex]; - CardParameter cardParameterFromId2 = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(id); - if (cardParameterFromId.IsFoil) - { - id = cardParameterFromId2.FoilCardId; - } - AddResourceList(cardParameterFromId2); - CardTexture.SetActive(value: false); - SetEnableButtons(isEnable: false); - Toolbox.ResourcesManager.StartCoroutine_LoadAssetGroupAsync(_assetTokenPathList, delegate - { - CardTexture.SetActive(value: true); - SetCardDetail(id, g, isUpdateRelation: false); - OpenCardAnimation(); - SetEnableButtons(isEnable: true); - }); - } - - private void AddResourceList(CardParameter CardPrm) - { - int resourceCardId = CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(CardPrm.NormalCardId).ResourceCardId; - switch (CardPrm.CharType) - { - case CardBasePrm.CharaType.NORMAL: - { - string assetTypePath3 = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.UnitCardMaterial); - _assetTokenPathList.Add(assetTypePath3); - break; - } - case CardBasePrm.CharaType.SPELL: - { - string assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.SpellCardMaterial); - _assetTokenPathList.Add(assetTypePath2); - break; - } - default: - { - string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(resourceCardId.ToString(), ResourcesManager.AssetLoadPathType.SpellCardMaterial); - _assetTokenPathList.Add(assetTypePath); - break; - } - } - } - - private void OnOpenCardViewMode(GameObject g) - { - if (_isAbleTapDialogObject && !IsAnimationPlaying && !isAnimation && !isCardViewMode && (UIManager.GetInstance().GetCurrentScene() != UIManager.ViewScene.CardAllList || GetPossessionCardNum(isIncludingSpotCard: true) > 0)) - { - isCardViewMode = true; - IsAnimationPlaying = true; - CardViewBG.SetActive(value: true); - - CardBasePrm.CharaType charType = CardData.CharType; - if (CardBasePrm.IsSpellCard(charType)) - { - ViewCardObject = NGUITools.AddChild(base.gameObject, SpellCardObject); - } - else if (CardBasePrm.IsAmuletCard(charType)) - { - ViewCardObject = NGUITools.AddChild(base.gameObject, FieldCardObject); - } - else if (CardBasePrm.IsFollowerCard(charType)) - { - ViewCardObject = NGUITools.AddChild(base.gameObject, UnitCardObject); - } - iTween.ScaleTo(ViewCardObject, iTween.Hash("Scale", CardViewScale, "time", 0.3f)); - iTween.RotateTo(ViewCardObject, iTween.Hash("z", 0f, "time", 0.3f, "oncompletetarget", base.gameObject, "oncomplete", "OnAnimationOver")); - ViewCardObject.transform.localPosition = new Vector3(0f, 0f, -100f); - } - } - - private void OnCloseCardViewMode() - { - if (!IsAnimationPlaying && isCardViewMode) - { - IsAnimationPlaying = true; - RemoveCardViewMode(); - - CardBasePrm.CharaType charType = CardData.CharType; - GameObject target = null; - if (CardBasePrm.IsSpellCard(charType)) - { - target = SpellCardObject; - } - else if (CardBasePrm.IsAmuletCard(charType)) - { - target = FieldCardObject; - } - else if (CardBasePrm.IsFollowerCard(charType)) - { - target = UnitCardObject; - } - iTween.MoveTo(target, iTween.Hash("islocal", true, "z", kCARD_POS_Z, "time", 0.3f, "oncompletetarget", base.gameObject, "oncomplete", "OnAnimationOver")); - } - } - - private void RemoveCardViewMode() - { - if (isCardViewMode) - { - UnityEngine.Object.Destroy(ViewCardObject); - CardViewBG.SetActive(value: false); - isCardViewMode = false; - } - } - - private void OnCloseCardViewMode(GameObject g) - { - OnCloseCardViewMode(); - } - - private void UpdateFavoriteButton() - { - _isFavorite = false; // Pre-Phase-5b: headless has no user favorites - _favoriteButton.gameObject.SetActive(IsShowFavoriteButton && GetPossessionCardNum() > 0 && CardData.IsEnableFavorite && !IsRelationCardViewing); - SetFavoriteButtonSprite(_isFavorite); - } - - private void SetFavoriteButtonSprite(bool isFavorite) - { - string text = "btn_favorite_"; - string text2 = "off"; - string text3 = "on"; - _favoriteButton.normalSprite = text + (isFavorite ? text3 : text2); - _favoriteButton.pressedSprite = text + (isFavorite ? text2 : text3); - } - - private void OnClickFavoriteButton(GameObject g) - { - if (_isFavoriteButtonEnabled && GetPossessionCardNum() > 0) - { - _isFavoriteButtonEnabled = false; - StartCoroutine(Timer.DelayMethod(0.9f, delegate - { - _isFavoriteButtonEnabled = true; - })); - bool flag = !_isFavorite; - - ChangeFavoriteState(); - } - } - - private void ChangeFavoriteState() - { - bool is_protected = !_isFavorite; - CardProtectTask cardProtectTask = new CardProtectTask(); - cardProtectTask.SetParameter(CardData.CardId, is_protected); - StartCoroutine(Toolbox.NetworkManager.Connect(cardProtectTask, OnSuccessProtectCard, null, OnErrorProtectCard)); - } - - private void OnSuccessProtectCard(NetworkTask.ResultCode code) - { - UpdateButtonState(); - UpdateCreateLiquefyButton(); - OnChangeCardFavoriteState.Call(); - } - - private void OnErrorProtectCard(int code) - { - UpdateButtonState(); - UpdateCreateLiquefyButton(); - } - - private void UpdateVoiceButton() - { - CardVoiceData cardVoiceData = new CardVoiceData(CardData, _cardMasterId); - bool flag = (!_isEvolCard && cardVoiceData._voiceListBeforeEvo.Count > 0) || (_isEvolCard && cardVoiceData._voiceListAfterEvo.Count > 0); - _voiceButton.gameObject.SetActive(flag && IsShowVoiceButton && (IsPopularityVote || GetPossessionCardNum(isIncludingSpotCard: true) > 0)); - } - - private void OnClickVoiceButton(GameObject g) - { - _cardVoiceManager.SequentiallyPlay(CardData, _isEvolCard, _cardMasterId); - } - - private void OnClickChangeCardTextTypeButton(GameObject g) - { - - _isShowCardAblityText = !_isShowCardAblityText; - UpdateCardText(); - UpdateButtonState(); - } - - private void UpdateEvolutionButton() - { - if (CardBasePrm.IsFollowerCard(CardData.CharType) && !CardData.IsEvolveChoiceCard) - { - CardEvolButton.gameObject.SetActive(IsShowEvolutionButton && (IsPopularityVote || GetPossessionCardNum(isIncludingSpotCard: true) > 0)); - _evolutionButtonLabel.text = Data.SystemText.Get(_isEvolCard ? "Card_0067" : "Card_0030"); - } - else - { - CardEvolButton.gameObject.SetActive(value: false); - } - } - - private void OnClickEvolutionButton(GameObject g) - { - - _isEvolCard = !_isEvolCard; - UpdateCardImage(); - UpdateCardText(); - UpdateButtonState(); - _cardVoiceManager.Stop(); - if (_evolEffect != null) - { - _evolEffect.Play(); - return; - } - string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath("cmn_deckedit_evo_1", ResourcesManager.AssetLoadPathType.Effect2D); - _assetPathList.Add(assetTypePath); - StartCoroutine(Toolbox.ResourcesManager.LoadAssetAsync(assetTypePath, delegate - { - GameObject gameObject = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath("cmn_deckedit_evo_1", ResourcesManager.AssetLoadPathType.Effect2D, isfetch: true)) as GameObject; - if (gameObject != null) - { - ParticleSystem component = gameObject.GetComponent(); - ParticleSystem.MainModule main = component.main; - main.playOnAwake = false; - _evolEffect = UnityEngine.Object.Instantiate(component); - _evolEffect.transform.parent = CardTexture.transform; - _evolEffect.transform.localPosition = Vector3.back * 10f; - _evolEffect.transform.localRotation = Quaternion.identity; - _evolEffect.transform.localScale = Vector3.one * 600f; - _evolEffect.gameObject.layer = base.gameObject.layer; - Transform[] componentsInChildren = _evolEffect.GetComponentsInChildren(); - for (int i = 0; i < componentsInChildren.Length; i++) - { - componentsInChildren[i].gameObject.layer = base.gameObject.layer; - } - // Pre-Phase-5b: SetUIParticleShader swapped the evol effect's shader then triggered - // its playback via the callback. Headless has no EffectMgr; the SetActive/Play - // calls below produce no visible effect but preserve the state machine. - if ((bool)_evolEffect) - { - _evolEffect.gameObject.SetActive(value: true); - _evolEffect.Play(); - } - } - })); - } - - private void UpdatePremiumCardConversionButton() - { - GameObject gameObject = _premiumCardConversionButton.gameObject; - UIManager.SetObjectToGrey(gameObject, PlayerStaticData.UserOrbNum <= 0); - if (!IsShowPremiumCardConversionButton || IsRelationCardViewing || GetPossessionCardNum() <= 0 || CardData.IsFoil || (CardData.IsNotCraftDestruct && !CardData.IsPreReleaseCard)) - { - gameObject.SetActive(value: false); - } - else - { - gameObject.SetActive(value: true); - } - } - - private void OnClickPremiumCardConversionButton(GameObject g) - { - if (GetPossessionCardNum() <= 0) - { - return; - } - - if (isAnimation) - { - return; - } - SystemText systemText = Data.SystemText; - if (PlayerStaticData.UserOrbNum <= 0) - { - DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose(); - dialogBase.SetTitleLabel(systemText.Get("Card_0163_1")); - dialogBase.SetText(systemText.Get("Card_0163_2")); - dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn); - } - else if (false /* Pre-Phase-5b: headless has no user foil card count */) - { - DialogBase dialogBase2 = UIManager.GetInstance().CreateDialogClose(); - dialogBase2.SetTitleLabel(systemText.Get("Card_0164_1")); - dialogBase2.SetText(systemText.Get("Card_0164_2")); - dialogBase2.SetButtonLayout(DialogBase.ButtonLayout.OkBtn); - } - else if (_isFavorite) - { - DialogBase dialogBase3 = UIManager.GetInstance().CreateDialogClose(); - dialogBase3.SetTitleLabel(systemText.Get("Card_0165_1")); - dialogBase3.SetText(systemText.Get("Card_0165_2")); - dialogBase3.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn); - dialogBase3.SetButtonText(systemText.Get("Card_0165_3")); - dialogBase3.onPushButton1 = delegate - { - CreatePremiumCardConversionDialog(); - }; - } - else - { - CreatePremiumCardConversionDialog(); - } - } - - private void CreatePremiumCardConversionDialog() - { - SystemText systemText = Data.SystemText; - DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose(); - PremiumCardConversionDialogParts premiumCardConversionDialogParts = UnityEngine.Object.Instantiate(_premiumCardConversionDialogPrefab); - premiumCardConversionDialogParts.Initialize(CardData); - dialogBase.SetObj(premiumCardConversionDialogParts.gameObject); - dialogBase.SetSize(DialogBase.Size.M); - dialogBase.SetTitleLabel(systemText.Get("Card_0162_1")); - dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn); - dialogBase.SetButtonText(systemText.Get("Card_0162_7")); - dialogBase.onPushButton1 = delegate - { - if (!_isFavorite) - { - ConvertPremiumCard(); - } - else - { - ChangeFavoriteState(); - OnChangeCardFavoriteState = (Action)Delegate.Combine(OnChangeCardFavoriteState, new Action(ConvertPremiumCard)); - } - }; - } - - private void ConvertPremiumCard() - { - OnChangeCardFavoriteState = (Action)Delegate.Remove(OnChangeCardFavoriteState, new Action(ConvertPremiumCard)); - PremiumCardConversionTask premiumCardConversionTask = new PremiumCardConversionTask(); - premiumCardConversionTask.SetParameter(CardData.CardId, GetPossessionCardNum()); - StartCoroutine(Toolbox.NetworkManager.Connect(premiumCardConversionTask, OnSuccessPremiumCardConversion)); - } - - private void OnSuccessPremiumCardConversion(NetworkTask.ResultCode code) - { - OnConvertedPremiumCard.Call(CardData); - StartCoroutine(StartPremiumCardConversionAnimation()); - } - - private IEnumerator StartPremiumCardConversionAnimation() - { - isAnimation = true; - - yield return StartCoroutine(PlayCardCreateEffect(PREMIUM_CARD_CONVERSION_PARTICLE_COLOR, _premiumCardConversionButton.transform.position, _cardNumLabel.transform.position, 4)); - SetCardDetail(CardData.FoilCardId); - isAnimation = false; - } - - private void UpdateCreateLiquefyButton(bool isUpdateHaveRedether = true) - { - if (IsShowCraftButtons && !IsRelationCardViewing) - { - _craftPanel.gameObject.SetActive(value: true); - _craftPanel.UpdateCraftPanel(CardData, isUpdateHaveRedether); - } - else - { - _craftPanel.gameObject.SetActive(value: false); - } - } - - private void StartCardDestruct() - { - if (!IsAbleToDestruct) - { - return; - } - CardMake component = base.gameObject.GetComponent(); - component.OnCardSell = delegate - { - if (GetPossessionCardNum() <= 0) - { - OnLiquefyAllCard.Call(CardData); - } - StartCoroutine(RunCardDestruct()); - }; - component.StartCardDestruct(CardData.CardId); - } - - private IEnumerator RunCardDestruct() - { - isAnimation = true; - - yield return StartCoroutine(PlayCardLiquefyEffect(CARD_LIQUEFY_PARTICLE_COLOR, _cardNumLabel.transform.position, RedEtherIcon.transform.position, CardData.Rarity)); - iTween.ValueTo(base.gameObject, iTween.Hash("from", int.Parse(_redEtherHaveValueLabel.text), "to", PlayerStaticData.UserRedEtherCount, "time", 0.5f, "onupdate", "OnUpdateRedEther", "oncomplete", "OnCompleteRedEther", "easetype", iTween.EaseType.easeOutQuad)); - UpdateCardNum(); - CardShadow.gameObject.SetActive(GetPossessionCardNum(isIncludingSpotCard: true) <= 0 && !IsShortageUI); - UpdateCardText(); - UpdateButtonState(); - OnCardNumChange.Call(); - UpdateCreateLiquefyButton(isUpdateHaveRedether: false); - OnCardSellId.Call(CardData.CardId); - yield return new WaitForSeconds(0.2f); - isAnimation = false; - } - - // Pre-Phase-5b: coroutine driving card-craft liquefy particles (Stop/Start on several - // CMN_CRAFT_* effects + iTween bezier moves). All Unity3D UI VFX — headless has no - // EffectMgr; kept the shape as a single-yield stub so callers' coroutine flow still runs. - private IEnumerator PlayCardLiquefyEffect(Color particleColor, Vector3 particleStartPos, Vector3 particleEndPos, int particleNum) - { - yield return new WaitForSeconds(0.5f); - } - - private void StartCardCraft() - { - if (!IsAbleToCraft) - { - return; - } - CardMake component = base.gameObject.GetComponent(); - component.OnCardBuy = delegate - { - if (GetPossessionCardNum(isIncludingSpotCard: true) == 1) - { - OnCreateFirstCard.Call(); - } - StartCoroutine(RunCardCraft()); - }; - component.StartCardCraft(CardData.CardId); - } - - private IEnumerator RunCardCraft() - { - isAnimation = true; - - yield return StartCoroutine(PlayCardCreateEffect(CARD_CREATE_PARTICLE_COLOR, RedEtherIcon.transform.position, _cardNumLabel.transform.position, CardData.Rarity)); - iTween.ValueTo(base.gameObject, iTween.Hash("from", int.Parse(_redEtherHaveValueLabel.text), "to", PlayerStaticData.UserRedEtherCount, "time", 0.5f, "onupdate", "OnUpdateRedEther", "oncomplete", "OnCompleteRedEther", "easetype", iTween.EaseType.easeOutQuad)); - UpdateCardNum(); - CardShadow.gameObject.SetActive(value: false); - UpdateCardText(); - UpdateButtonState(); - UpdateCreateLiquefyButton(isUpdateHaveRedether: false); - OnCardNumChange.Call(); - OnCardBuy.Call(); - yield return new WaitForSeconds(0.2f); - isAnimation = false; - } - - // Pre-Phase-5b: coroutine driving card-craft create particles (Stop/Start on several - // CMN_CRAFT_* effects + iTween bezier moves). See PlayCardLiquefyEffect for rationale. - private IEnumerator PlayCardCreateEffect(Color particleColor, Vector3 particleStartPos, Vector3 particleEndPos, int particleNum) - { - yield return new WaitForSeconds(0.5f); - } - - private void OnUpdateRedEther(int value) - { - _redEtherHaveValueLabel.text = value.ToString(); - } - - private void OnCompleteRedEther() - { - _redEtherHaveValueLabel.text = PlayerStaticData.UserRedEtherCount.ToString(); - } - - private void CreateDialog(Action onOk, bool buy) - { - if (!isAnimation) - { - _craftDialog = UIManager.GetInstance().CreateDialogClose(); - _craftDialog.onPushButton1 = onOk; - PurchaseConfirm purchaseConfirm = UnityEngine.Object.Instantiate(PurchaseConfirmPrefab); - _craftDialog.SetObj(purchaseConfirm.gameObject); - int userRedEtherCount = PlayerStaticData.UserRedEtherCount; - SystemText systemText = Data.SystemText; - if (buy) - { - _craftDialog.SetTitleLabel(systemText.Get("Card_0081")); - _craftDialog.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn); - _craftDialog.SetButtonText(systemText.Get("Dia_CardList_003_Button")); - int useRedEther = CardData.UseRedEther; - purchaseConfirm.SetCardBuy(systemText.Get("Common_0205"), userRedEtherCount, useRedEther, CardData); - } - else - { - _craftDialog.SetTitleLabel(systemText.Get("Card_0080")); - _craftDialog.SetButtonLayout(DialogBase.ButtonLayout.RedBtn_CancelBtn); - _craftDialog.SetButtonText(systemText.Get("Dia_CardList_002_Button")); - int getRedEther = CardData.GetRedEther; - purchaseConfirm.SetCardSell(systemText.Get("Common_0205"), userRedEtherCount, getRedEther, CardData.CardName, CardData.IsFoil); - } - } - } - - private IEnumerator DelayResetScrollViewPosition() - { - yield return null; - ResetScrollViewPosition(); - } - - private void ResetScrollViewPosition() - { - UnitCardTextScrollView.ResetPosition(); - SpellCardTextScrollView.ResetPosition(); - SettingCardTextScrollView.ResetPosition(); - UnitCardTextScrollView.UpdateScrollbars(recalculateBounds: true); - SpellCardTextScrollView.UpdateScrollbars(recalculateBounds: true); - SettingCardTextScrollView.UpdateScrollbars(recalculateBounds: true); - } - - private void ChangeLayer(GameObject o, int layer) - { - o.layer = layer; - for (int i = 0; i < o.transform.childCount; i++) - { - ChangeLayer(o.transform.GetChild(i).gameObject, layer); - } - } - - public bool GetIsDetailOn() - { - return isDetailOn; - } - - public void SetDisableArrowButton() - { - OnDetailCardUpdate = delegate - { - RightButtonVisible = false; - LeftButtonVisible = false; - }; - } - - public void SetEnableButtons(bool isEnable) - { - for (int i = 0; i < _enableButtonList.Length; i++) - { - _enableButtonList[i].isEnabled = isEnable; - } - _isAbleTapDialogObject = isEnable; - if (isEnable) - { - UpdateButtonState(); - UpdateCreateLiquefyButton(); - } - } + // Event delegates + public Action OnCardSellId; + public Action OnCardBuy; + public Action OnClose; + public Action OnDragCard; + public Action OnDetailCardUpdate { get; set; } + + // Data + public CardParameter CardData { get; private set; } + + // Settable flags + public bool IsShowFlavorTextButton { get; set; } + public bool IsShowVoiceButton { get; set; } + public bool IsShowEvolutionButton { get; set; } + public bool IsShowCraftButtons { get; set; } + public bool IsOwnCardNum { get; set; } + public bool IsShortageUI { get; set; } + public bool LeftButtonVisible { get; set; } + public bool RightButtonVisible { get; set; } + public bool IsEnableShowDetail { get; set; } + + // Methods + public void Initialize(int detailLayer, CardMaster.CardMasterId cardMasterId, IFormatBehavior formatBehaviorForCardPoolChange = null) { } + public void OnPushCardDetailOn(GameObject g) { } + public bool GetIsDetailOn() => false; + public void ChangeCardMaster(CardMaster.CardMasterId cardMasterId) { } + public bool ShowCardDetail(GameObject g) => false; + public void CloseDefault(bool playSe) { } }