using FairyGUI; using UI.FieldGuide; using UI.CommonGame; using System.Collections.Generic; using UI.ClothingSynthetic; namespace GFGGame { public class SuitGuideView : BaseWindow { private UI_SuitGuideUI _ui; private ValueBarController _valueBarController; private int _menuType = ConstSuitGuideTypeId.TYPE_1; private int[] _menuTypeDataArray; private List _suitIds; private int _suitTypeId; public override void Dispose() { if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_SuitGuideUI.PACKAGE_NAME; _ui = UI_SuitGuideUI.Create(); this.viewCom = _ui.target; isfullScreen = true; _valueBarController = new ValueBarController(_ui.m_valueBar); _ui.m_listSuit.itemRenderer = ListSuitItemRenderer; _ui.m_listType.itemRenderer = ListTypeItemRenderer; _ui.m_comBoxSort.items = new string[] { "默认排序", "稀有度高", "稀有度低", "收集度高", "收集度低" }; _ui.m_listType.onClickItem.Add(OnClickListTypeItem); _ui.m_comBoxSort.onChanged.Add(OnComboBoxSortChanged); _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_btnSwitch.onClick.Add(OnClickBtnSwitch); _ui.m_btnHaveGot.onChanged.Add(OnClickBtnHaveGot); _ui.m_btnNotGet.onChanged.Add(OnClickBtnNotGet); } 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, UpdateSuitBoxStatus); } protected override void OnShown() { base.OnShown(); _valueBarController.OnShown(); _ui.m_btnHaveGot.selected = true; _ui.m_btnNotGet.selected = true; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("gxhd_bjbj"); UpdateListType(); } protected override void OnHide() { base.OnHide(); _valueBarController.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.AddEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide); EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateSuitStatus); EventAgent.RemoveEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitBoxStatus); } private void OnClickListTypeItem() { UpdateListSuit(); } private void OnComboBoxSortChanged() { UpdateListSuit(); } private void OnClickBtnBack() { // this.Hide(); ViewManager.GoBackFrom(ViewName.SUIT_GUIDE_VIEW); } private void OnClickBtnSwitch() { _menuType = 3 - _menuType; UpdateListType(); } private void OnClickBtnHaveGot() { if (!_ui.m_btnHaveGot.selected) { _ui.m_btnNotGet.selected = true; } UpdateListSuit(); } private void OnClickBtnNotGet() { if (!_ui.m_btnNotGet.selected) { _ui.m_btnHaveGot.selected = true; } UpdateListSuit(); } private void UpdateSuitBoxStatus(EventContext eventContext) { int suitId = (int)eventContext.data; int num = _ui.m_listSuit.numChildren; for (int i = 0; i < num; i++) { UI_CompSuitItem listItem = UI_CompSuitItem.Proxy(_ui.m_listSuit.GetChildAt(i)); int tempSuitId = (int)listItem.target.data; if (tempSuitId == suitId) { UpdateSuitStatusView(listItem); } UI_CompSuitItem.ProxyEnd(); } } private void UpdateListType() { _ui.m_listType.RemoveChildrenToPool(); switch (_menuType) { case ConstSuitGuideTypeId.TYPE_1: _menuTypeDataArray = new int[] { 0, 1, 2, 3, 4, 5 }; break; default: _menuTypeDataArray = new int[] { 6, 7, 8, 9, 10 }; break; } _ui.m_listType.numItems = _menuTypeDataArray.Length; _ui.m_listType.selectedIndex = 0; UpdateListSuit(); } private void ListTypeItemRenderer(int index, object item) { UI_ButtonSuitType listItem = UI_ButtonSuitType.Proxy(item as GObject); int typeId = _menuTypeDataArray[index]; SuitGuideMenuCfg cfg = SuitGuideMenuCfgArray.Instance.GetCfg(typeId); listItem.target.title = cfg.name; listItem.target.data = typeId; listItem.m_imgLine.visible = (index != 0); UI_ButtonSuitType.ProxyEnd(); } private void UpdateListSuit() { _ui.m_listSuit.RemoveChildrenToPool(); UI_ButtonSuitType listItem = UI_ButtonSuitType.Proxy(_ui.m_listType.GetChildAt(_ui.m_listType.selectedIndex)); _suitTypeId = (int)listItem.target.data; _suitIds = SuitUtil.GetSuitIdList(_ui.m_btnNotGet.selected, _ui.m_btnHaveGot.selected, _suitTypeId, _ui.m_comBoxSort.selectedIndex); _ui.m_listSuit.numItems = _suitIds.Count; _ui.m_listSuit.scrollPane.ScrollTop(); UI_ButtonSuitType.ProxyEnd(); } private void ListSuitItemRenderer(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); RarityIconController.UpdateRarityIcon(listItem.m_rarity, suitId, false, true); listItem.target.data = suitId; UpdateSuitStatusView(listItem); listItem.m_loaderBonusBox.onClick.Clear(); listItem.m_loaderBonusBox.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_imgLock.visible = listItem.m_imgLockBg.visible = !haveSuit; int status = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(suitId); RedDotController.Instance.SetComRedDot(listItem.target, status == ConstBonusStatus.CAN_GET, "", 4, 402); if (status == ConstBonusStatus.CAN_GET) { listItem.m_loaderBonusBox.url = "ui://FieldGuide/tujian_lw_1"; } else { listItem.m_loaderBonusBox.url = "ui://FieldGuide/tujian_lw_2"; } listItem.m_bg.onClick.Clear(); listItem.m_bg.onClick.Add(() => { if (haveSuit) { ViewManager.Show(ViewName.SUIT_SHOW_VIEW, new object[] { _suitTypeId, suitId, _suitIds }, new object[] { ViewName.SUIT_GUIDE_VIEW, this.viewData }); } else { ViewManager.Show(ViewName.SUIT_PARTS_DETAIL_VIEW, suitId, new object[] { ViewName.SUIT_GUIDE_VIEW, this.viewData }); } }); } } }