using FairyGUI; using UI.FieldGuide; using UI.CommonGame; using System.Collections.Generic; using UI.ClothingSynthetic; using UnityEngine; using System; namespace GFGGame { public class SuitGuideDetailView : BaseWindow { private UI_SuitGuideDetailUI _ui; private List _suitIds; private int _suitTypeId; private bool _startInAnim; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_SuitGuideDetailUI.PACKAGE_NAME; _ui = UI_SuitGuideDetailUI.Create(); this.viewCom = _ui.target; isfullScreen = true; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("tjbg"); _ui.m_listSuit.itemRenderer = RenderListSuitItem; _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_btnSearch.onClick.Add(OnClickBtnSearch); _startInAnim = true; } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide); EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateSuitStatus); EventAgent.AddEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitStatus); EventAgent.AddEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateListSuit); EventAgent.AddEventListener(ConstMessage.DRESS_SEARCH, FilterItems); EventAgent.AddEventListener(ConstMessage.DRESS_FILTER, FilterItems); } protected override void OnShown() { base.OnShown(); _suitTypeId = (int)viewData; UpdateListSuit(); if (_startInAnim) { _startInAnim = false; _ui.m_In.Play(); } } protected override void OnHide() { base.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide); EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateSuitStatus); EventAgent.RemoveEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitStatus); EventAgent.RemoveEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateListSuit); EventAgent.RemoveEventListener(ConstMessage.DRESS_SEARCH, FilterItems); EventAgent.RemoveEventListener(ConstMessage.DRESS_FILTER, FilterItems); } private void FilterItems(EventContext context) { UpdateListSuit(); if (context.data.ToString() == ConstMessage.DRESS_SEARCH) { _suitIds = DressUpMenuItemDataManager.DressSearch(_suitIds); } else if (context.data.ToString() == ConstMessage.DRESS_FILTER) { _suitIds = DressUpMenuItemDataManager.DressFilter(_suitIds); } ViewManager.Hide(); _ui.m_listSuit.numItems = _suitIds.Count; } private void OnClickBtnBack() { _startInAnim = true; ViewManager.GoBackFrom(typeof(SuitGuideDetailView).FullName); } private void OnClickBtnSearch() { ViewManager.Show(new object[] { 0, 2 }, new object[] { typeof(SuitGuideDetailView).FullName }); } private void UpdateListSuit() { _suitIds = SuitUtil.GetSuitIdList(true, true, _suitTypeId, 0); int haveCount = SuitUtil.GetSuitIdList(false, true, _suitTypeId, 0).Count; int totalCount = _suitIds.Count; SuitGuideMenuCfg cfg = SuitGuideMenuCfgArray.Instance.GetCfg(_suitTypeId); _ui.m_title.text = cfg.name; _ui.m_progress.target.value = haveCount; _ui.m_progress.target.max = totalCount; _ui.m_progress.m_title1.SetVar("value", haveCount.ToString()).SetVar("max", totalCount.ToString()).FlushVars(); _ui.m_progress.m_rate.SetVar("rate", FieldGuideView.ProgressCalculate(haveCount, totalCount).ToString()).FlushVars(); _ui.m_listSuit.numItems = _suitIds.Count; _ui.m_listSuit.scrollPane.ScrollTop(); } private void RenderListSuitItem(int index, GObject item) { UI_CompSuitItem listItem = UI_CompSuitItem.Proxy(item); int suitId = _suitIds[index]; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId); listItem.m_txtName.text = suitCfg.name; listItem.m_loaderPic.url = ResPathUtil.GetFieldGuideIconPath(suitCfg.res); listItem.m_c1.SetSelectedIndex(suitCfg.rarity - 1); RarityIconController.UpdateRarityIcon(listItem.m_rarity, suitId, false, true); listItem.target.data = suitId; UpdateSuitStatusView(listItem); listItem.m_loaderBonusBox.target.onClick.Clear(); listItem.m_loaderBonusBox.target.onClick.Add(() => { SuitUtil.ShowSuitGuideBonus(suitId); }); UI_CompSuitItem.ProxyEnd(); } private void UpdateSuitStatus(EventContext eventContext) { int num = _ui.m_listSuit.numChildren; for (int i = 0; i < num; i++) { UI_CompSuitItem listItem = UI_CompSuitItem.Proxy(_ui.m_listSuit.GetChildAt(i)); UpdateSuitStatusView(listItem); UI_CompSuitItem.ProxyEnd(); } } private void UpdateSuitStatusView(UI_CompSuitItem listItem) { int suitId = (int)listItem.target.data; int count = 0; int totalCount = 0; DressUpMenuSuitDataManager.GetSuitProgressBySuitId(suitId, out count, out totalCount); listItem.m_progBar.max = totalCount; listItem.m_progBar.value = count; bool haveSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitId); listItem.m_unlockMask.visible = !haveSuit; int status = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(suitId); RedDotController.Instance.SetComRedDot(listItem.m_loaderBonusBox.target, status == ConstBonusStatus.CAN_GET, "", 12, -8); if (status == ConstBonusStatus.CAN_GET) { listItem.m_loaderBonusBox.m_loaderBonusBox.url = "ui://FieldGuide/tujian_lw_1"; } else { listItem.m_loaderBonusBox.m_loaderBonusBox.url = "ui://FieldGuide/tujian_lw_2"; } listItem.m_bg.onClick.Clear(); listItem.m_bg.onClick.Add(() => { if (haveSuit) { ViewManager.Show(new object[] { _suitTypeId, suitId, _suitIds }, new object[] { typeof(SuitGuideDetailView).FullName, this.viewData }); } else { ViewManager.Show(suitId, new object[] { typeof(SuitGuideDetailView).FullName, this.viewData }); } }); } } }