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() { 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); } protected override void OnShown() { base.OnShown(); _ui.m_listMenu.selectedIndex = 0; UpdateSuitList(); EventAgent.AddEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitBoxStatus); GuideController.TryGuideSuitSyntheticViewList(_ui.m_listSuit); Timers.inst.AddUpdate(UpdateToCheckGuide); } protected override void OnHide() { base.OnHide(); Timers.inst.Remove(UpdateToCheckGuide); EventAgent.RemoveEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitBoxStatus); } 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; SuitSyntheticMenuCfg menuCfg = SuitSyntheticMenuCfgArray.Instance.GetCfg(index); if (menuCfg.suitIds.Length > 0) { string[] values = menuCfg.suitIds.Split(';'); foreach (string value in values) { if (value.Length > 0) { int suitId = int.Parse(value); if (suitId > 0) { _suitListIds.Add(suitId); } } } } _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; SuitSyntheticCfg suitSyntheticCfg = SuitSyntheticCfgArray.Instance.GetCfg(suitId); if (suitSyntheticCfg.storyLevelId.Length > 0) { int chapter = 0; int level = 0; StoryUtil.GetStoryLevelId(suitSyntheticCfg.storyLevelId, out chapter, out level); bool isLevelPass = StoryDataManager.CheckLevelPass(chapter, level); if (!isLevelPass) { isLock = true; listItem.m_txtLockDesc.text = string.Format("通关第{0}章第{1}关", chapter, level); } } if (suitSyntheticCfg.preSuitId > 0) { bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitSyntheticCfg.preSuitId); if (!hasPreSuit) { isLock = true; string preSuitName = SuitUtil.GetSuitName(suitSyntheticCfg.preSuitId); listItem.m_txtLockDesc.text = string.Format("集齐{0}套装", preSuitName); } } listItem.m_groupLock.visible = isLock; listItem.target.data = suitId; UpdateSuitBoxStatusView(listItem); 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(ViewName.CLOTHING_SYNTHETIC_VIEW, suitId, new object[] { ViewName.SUIT_SYNTHETIC_LIST_VIEW, this.viewData }); } }); } 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); } } } 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; } } } private void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_listSuit, ConstGuideId.CLOTHING_SYNTHETIC, 7, "查看已解锁的图谱", true, 0); } } }