using System; using System.Collections; using System.Collections.Generic; using System.Linq; using Cute; using UnityEngine; using Wizard; using Wizard.UI.Common; using Wizard.UI.Profile; public class DeckIntroduction : MonoBehaviour { private static readonly Dictionary FORMAT_TO_FORMAT_CATEGORY = new Dictionary { { Format.Rotation, FormatChangeUI.FormatCategory.Rotation }, { Format.Unlimited, FormatChangeUI.FormatCategory.Unlimited }, { Format.Crossover, FormatChangeUI.FormatCategory.Crossover } }; [SerializeField] private TabList _tabList; private Format _formatState; [SerializeField] private GameObject _dialogAttachRoot; private DialogBase _dialog; private DeckIntroductionTask _introductionTask; private bool _isUpdateDeckList = true; private FormatChangeUI _formatChangeUI; private int _seriesId; public static void Create(GameObject prefab, GameObject parent, int seriesId = -1, Format format = Format.Max) { GameObject obj = NGUITools.AddChild(parent, prefab); DeckIntroduction component = obj.GetComponent(); component.SetSeriesId(seriesId); component._formatState = format; DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose(); dialogBase.AddButton(DialogBase.ButtonType.Gray, isReflect: false, Data.SystemText.Get("OtherTop_0065")); dialogBase.ClickSe_Btn1 = 0; dialogBase.isNotCloseWindowButton1 = true; dialogBase.onPushButton1 = component.CreateSelectSeriesIdDialog; dialogBase.AddButton(DialogBase.ButtonType.Close); dialogBase.TitleOnOff(flag: false); dialogBase.CloseOnOff(flag: false); dialogBase.SetSize(DialogBase.Size.XL); dialogBase.OnClose = (Action)Delegate.Combine(dialogBase.OnClose, (Action)delegate { UnityEngine.Object.Destroy(obj); }); dialogBase.SetObj(component._dialogAttachRoot); component._dialog = dialogBase; dialogBase.gameObject.SetActive(value: false); } private void SetSeriesId(int seriesId) { _seriesId = seriesId; } private IEnumerator StartDeckIntroductionTask() { _introductionTask = new DeckIntroductionTask(); if (_seriesId != -1) { _introductionTask.SetParameter(_seriesId); } bool isSuccess = false; yield return StartCoroutine(Toolbox.NetworkManager.Connect(_introductionTask, delegate { isSuccess = true; })); while (!isSuccess) { yield return null; } } private void CreateSelectSeriesIdDialog() { int prevSeriesId = _seriesId; List seriesIdList = _introductionTask.ResultDeckSeriesIdList; _ = _introductionTask.ResultDeckSeriesNameList; seriesIdList.IndexOf(_seriesId); DialogBase dialogBase = DeckIntroductionPeriodSelectDialog.Create(_seriesId, _introductionTask, delegate(int newId) { _seriesId = newId; }); int num = _dialogAttachRoot.GetComponentInChildren().depth + 5; dialogBase.SetPanelDepth(num); dialogBase.InsideObject.GetComponent().depth = num + 1; UIPanel[] componentsInChildren = dialogBase.InsideObject.GetComponentsInChildren(); for (int num2 = 0; num2 < componentsInChildren.Length; num2++) { componentsInChildren[num2].depth += num + 2; } dialogBase.SetTitleLabel(Data.SystemText.Get("OtherTop_0066")); dialogBase.SetButtonLayout(DialogBase.ButtonLayout.DecisionBtn); dialogBase.ClickSe_Btn1 = 0; dialogBase.onPushButton1 = delegate { if (_seriesId != prevSeriesId) { StartCoroutine(ChangeDeckIntroductionSeries()); } }; dialogBase.onCloseWithoutSelect = delegate { _seriesId = prevSeriesId; }; } private IEnumerator ChangeDeckIntroductionSeries() { yield return StartCoroutine(StartDeckIntroductionTask()); UpdateFormatChangeUI(); UpdateClassTab(); } private void UpdateClassTab() { _isUpdateDeckList = true; CardBasePrm.ClanType clanType = CardBasePrm.ClanType.NONE; for (int i = 1; i < 9; i++) { CardBasePrm.ClanType clanType2 = (CardBasePrm.ClanType)i; if (_introductionTask.IsExistClass(clanType2, _formatState)) { if (clanType == CardBasePrm.ClanType.NONE) { clanType = clanType2; } _tabList.SetTabToGrayByIndex(i - 1, disable: false); } else { _tabList.SetTabToGrayByIndex(i - 1, disable: true); } } _tabList.Reset(); _tabList.SelectTabByIndex((int)(clanType - 1), isForceSet: true); } private void UpdateFormatChangeUI() { bool flag = _introductionTask.IsExistFormat(Format.Rotation); bool flag2 = _introductionTask.IsExistFormat(Format.Unlimited); bool flag3 = _introductionTask.IsExistFormat(Format.Crossover); _formatChangeUI.SetEnableFormatButton(FORMAT_TO_FORMAT_CATEGORY[Format.Rotation], flag); _formatChangeUI.SetEnableFormatButton(FORMAT_TO_FORMAT_CATEGORY[Format.Unlimited], flag2); _formatChangeUI.UpdateAnotherFormatButton(flag3 ? FORMAT_TO_FORMAT_CATEGORY[Format.Crossover] : FormatChangeUI.FormatCategory.Invalid); if (_formatState == Format.Crossover && !flag3) { _formatState = Format.Rotation; } if (!flag) { _formatState = Format.Unlimited; } else if (!flag2) { _formatState = Format.Rotation; } _formatChangeUI.ChangeFormat(FORMAT_TO_FORMAT_CATEGORY[_formatState]); } }