using System.Collections; using UnityEngine; using UI.ClothingSynthetic; using FairyGUI; using System.Collections.Generic; namespace GFGGame { public class SuitSyntheticView : BaseWindow { private UI_ClothingSyntheticListUI _ui; private List _suitListIds; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ClothingSyntheticListUI.PACKAGE_NAME; _ui = UI_ClothingSyntheticListUI.Create(); this.viewCom = _ui.target; isfullScreen = true; _ui.m_listSuit.itemRenderer = ListSuitItemRenderer; _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_listMenu.onClickItem.Add(OnClickListMenuItem); _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("hz_bjbj"); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitBoxStatus); EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedDot); } protected override void OnShown() { base.OnShown(); _ui.m_listMenu.selectedIndex = 0; if (this.viewData != null) { int suitId = (int)this.viewData; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId); _ui.m_listMenu.selectedIndex = suitCfg.syntheticType - 1; } // _ui.m_listMenu.GetChildAt(1).visible = false; UpdateSuitList(); UpdateRedDot(); Timers.inst.AddUpdate(CheckGuide); } protected override void OnHide() { base.OnHide(); Timers.inst.Remove(CheckGuide); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitBoxStatus); EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedDot); } private void OnClickBtnBack() { ViewManager.GoBackFrom(ViewName.SUIT_SYNTHETIC_LIST_VIEW); } private void OnClickListMenuItem() { UpdateSuitList(); } private void UpdateSuitList() { if (_suitListIds == null) { _suitListIds = new List(); } else { _suitListIds.Clear(); } int index = _ui.m_listMenu.selectedIndex; var suitCfgs = SuitCfgArray.Instance.GetCfgsBysyntheticType(index + 1); foreach (var suitCfg in suitCfgs) { _suitListIds.Add(suitCfg.id); } _ui.m_listSuit.numItems = _suitListIds.Count; } private void ListSuitItemRenderer(int index, GObject item) { UI_SuitListItem listItem = UI_SuitListItem.Proxy(item); int suitId = _suitListIds[index]; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId); listItem.m_txtName.text = suitCfg.name; listItem.m_loaderPic.url = ResPathUtil.GetFieldGuideIconPath(suitCfg.res); int count = 0; int totalCount = 0; DressUpMenuSuitDataManager.GetSuitProgressBySuitId(suitId, out count, out totalCount); listItem.m_progBar.max = totalCount; listItem.m_progBar.value = count; RarityIconController.UpdateRarityIcon(listItem.m_rarity, suitId, false, true); bool haveSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitId); bool isLock = false; // SuitCfg suitSyntheticCfg = SuitCfgArray.Instance.GetCfg(suitId); if (suitCfg.syntheticStoryLevelId > 0) { //int chapter = 0; //int level = 0; //CalculateHelper.GetStoryChapterLevel(suitSyntheticCfg.storyLevelId, out var chapter, out var level); bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfg.syntheticStoryLevelId); if (!isLevelPass) { isLock = true; var levelCfg = StoryLevelCfgArray.Instance.GetCfg(suitCfg.syntheticStoryLevelId); string str = ""; if (levelCfg.type == ConstInstanceZonesType.Studio && levelCfg.subType == ConstInstanceZonesSubType.Hard3) { StoryLevelCfg cfg = StoryLevelCfgArray.Instance.GetCfg(suitCfg.syntheticStoryLevelId); str = string.Format("通关查阅建档 {0}", cfg.name); } else { var chapterCfg = StoryChapterCfgArray.Instance.GetCfg(levelCfg.chapterId); str = string.Format("通关第{0}章第{1}关", chapterCfg.order, levelCfg.order); } listItem.m_txtLockDesc.text = str; } } if (suitCfg.syntheticPreSuitId > 0) { bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.syntheticPreSuitId); if (!hasPreSuit) { isLock = true; string preSuitName = SuitUtil.GetSuitName(suitCfg.syntheticPreSuitId); listItem.m_txtLockDesc.text = string.Format("集齐{0}套装", preSuitName); } } listItem.m_groupLock.visible = isLock; listItem.target.data = suitId; UpdateSuitBoxStatusView(listItem); int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId); RedDotController.Instance.SetComRedDot(listItem.target, status == ConstBonusStatus.CAN_GET && !isLock, "", -20, 670); listItem.m_loaderBonusBox.onClick.Clear(); listItem.m_loaderBonusBox.onClick.Add(() => { SuitUtil.ShowSuitSyntheticBonus(suitId); }); listItem.m_bg.onClick.Clear(); listItem.m_bg.onClick.Add(() => { if (!isLock) { ViewManager.Show(new object[] { suitId }, new object[] { ViewName.SUIT_SYNTHETIC_LIST_VIEW, suitId }); } }); RedDotController.Instance.SetComRedDot(listItem.target, RedDotDataManager.Instance.GetClothingSyntheticRed(suitId), "", 0, 0); UI_SuitListItem.ProxyEnd(); } private void UpdateSuitBoxStatus(EventContext eventContext) { int suitId = (int)eventContext.data; int num = _ui.m_listSuit.numChildren; for (int i = 0; i < num; i++) { UI_SuitListItem listItem = UI_SuitListItem.Proxy(_ui.m_listSuit.GetChildAt(i)); int tempSuitId = (int)listItem.target.data; if (tempSuitId == suitId) { UpdateSuitBoxStatusView(listItem); } UI_SuitListItem.ProxyEnd(); } } private void UpdateSuitBoxStatusView(UI_SuitListItem listItem) { listItem.m_iconGot.visible = false; int suitId = (int)listItem.target.data; int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId); if (status == ConstBonusStatus.CAN_GET) { listItem.m_loaderBonusBox.grayed = false; } else { listItem.m_loaderBonusBox.grayed = true; if (status == ConstBonusStatus.GOT) { listItem.m_iconGot.visible = true; } RedDotController.Instance.SetComRedDot(listItem.target, false, "", -20, 670); } } private void UpdateRedDot() { RedDotController.Instance.SetComRedDot(_ui.m_listMenu.GetChildAt(0).asCom, RedDotDataManager.Instance.GetClothingSyntheticTabRed(1), "", 0, 0); RedDotController.Instance.SetComRedDot(_ui.m_listMenu.GetChildAt(1).asCom, RedDotDataManager.Instance.GetClothingSyntheticTabRed(2), "", 0, 0); RedDotController.Instance.SetComRedDot(_ui.m_listMenu.GetChildAt(2).asCom, RedDotDataManager.Instance.GetClothingSyntheticTabRed(3), "", 0, 0); } private void CheckGuide(object param) { if (GuideDataManager.IsGuideFinish(ConstGuideId.CLOTHING_SYNTHETIC) <= 0) { UpdateToCheckGuide(null); } else { Timers.inst.Remove(CheckGuide); } } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; int suitId = 200042; int suitIndex = 0; for (int i = 0; i < _suitListIds.Count; i++) { if (_suitListIds[i] == suitId) { suitIndex = i; break; } } GuideController.TryGuide(_ui.m_listSuit, ConstGuideId.CLOTHING_SYNTHETIC, 3, "查看已解锁的图谱。", suitIndex); } } }