using System; using System.Collections; using System.Collections.Generic; using Cute; using UnityEngine; using Wizard; using Wizard.Dialog.Setting; using Wizard.RoomMatch; public class DeckDecisionUI : MonoBehaviour { [SerializeField] private GameObject _uiCardListPrefab; [SerializeField] private GameObject _cardDetailPrefab; protected List _loadCardAssetList; protected static int DetailLayer; private ConventionDeckList conventionDeckList; public bool IsCanShowQRCode = true; private IFormatBehavior _formatBehavior; public DeckData DeckData { get; private set; } public string DeckName { get; set; } public Action CardListCustomize { get; set; } protected CardDetailUI CardDetail { get; set; } protected UICardList UiCardList { get; set; } public Action CardDetailCustomize { get; set; } public bool IsShowSimpleStageOption { get; set; } public void SetDeckData(DeckData deck, ConventionDeckList deckList) { DeckData = deck; conventionDeckList = deckList; _formatBehavior = FormatBehaviorManager.Create(deck.Format, deckList); } public void OnClickCreateCardList() { CheckTimeSlipRotationPeriodTask task = new CheckTimeSlipRotationPeriodTask(); StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate { UIManager.GetInstance().createInSceneCenterLoading(); if (CardDetail == null) { CardDetail = UnityEngine.Object.Instantiate(_cardDetailPrefab).GetComponent(); CardDetail.transform.parent = base.transform.parent.parent; CardDetail.transform.localPosition = new Vector3(0f, 0f, -300f); CardDetail.transform.localScale = Vector3.one; CardDetail.Initialize(DetailLayer, _formatBehavior.CardMasterId, _formatBehavior); CardDetail.IsShowFlavorTextButton = true; CardDetail.IsShowVoiceButton = true; CardDetail.IsShowEvolutionButton = true; CardDetail.IsCardTextDialogLayerSet = false; CardDetailCustomize.Call(CardDetail); UIManager.GetInstance().SetLayerRecursive(CardDetail.gameObject.transform, DetailLayer); } if (UiCardList == null) { bool in_DetailCameraUse = false; UiCardList = UnityEngine.Object.Instantiate(_uiCardListPrefab).GetComponent(); UIManager.ViewScene currentScene = UIManager.GetInstance().GetCurrentScene(); if (currentScene != UIManager.ViewScene.MyPage && currentScene != UIManager.ViewScene.QuestSelectionPage) { in_DetailCameraUse = true; } else { UiCardList.SetCamera(UIManager.GetInstance().MyPageUICameraObj.GetComponent()); } int in_MaxCardNum = 40; if (DeckData.Format == Format.Windfall) { in_MaxCardNum = 35; } UiCardList.Init(base.transform.parent.parent.gameObject, CardDetail, null, DeckViewClose, LayerMask.LayerToName(DetailLayer), in_DetailCameraUse, null, in_MaxCardNum); UiCardList.SetActive(in_Active: false); } CardListCustomize.Call(UiCardList); CardDetail.gameObject.SetActive(value: false); StartCoroutine(CardLoadCoroutine(DeckData)); })); } private IEnumerator CardLoadCoroutine(DeckData inDeckData) { RoomBase.StartDialogLoading(); IList cardIdList = inDeckData.GetCardIdList(); inDeckData.GetDeckName(); UiCardList.RemoveData(); UiCardList._loadingEnd = false; _loadCardAssetList = UiCardList.GetLoadFileList(cardIdList as List); yield return StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(_loadCardAssetList, null)); UiCardList.SetDeck(inDeckData, conventionDeckList); yield return null; DialogSetDisp(inDisp: false); if (IsCanShowQRCode) { UiCardList.SetQRSmallTexture(); } UiCardList.SetActive(in_Active: true); UIManager.GetInstance().closeInSceneCenterLoading(); UiCardList._loadingEnd = true; RoomBase.FinishDiloagLoading(); } protected void DeckViewClose() { UiCardList.SetActive(in_Active: false); if (_loadCardAssetList != null) { Toolbox.ResourcesManager.RemoveAssetGroup(_loadCardAssetList); _loadCardAssetList = null; } DialogSetDisp(inDisp: true); UnityEngine.Object.Destroy(UiCardList.gameObject); UnityEngine.Object.Destroy(CardDetail.gameObject); UiCardList = null; CardDetail = null; } protected void DialogSetDisp(bool inDisp) { UIManager.GetInstance().ActiveChangeDialogAll(inDisp); } }