using System.Collections; using System.Collections.Generic; using FairyGUI; using UI.ClothingFoster; using UI.CommonGame; using UnityEngine; using ET; namespace GFGGame { public class ClothingView : BaseWindow { private UI_ClothingUI _ui; private ValueBarController _valueBarController; private DressUpObjUI _dressUpObjUI; private EffectUI _effectUI1; private List _suitIds;//已解锁套装列表 private SortedList _propertyList = new SortedList(); private SortedList _addPropertyList = new SortedList(); private int _suitId; private int _index; private bool _canRenew; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_dressUpObjUI != null) { _dressUpObjUI.Dispose(); _dressUpObjUI = null; } EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; _propertyList.Clear(); _addPropertyList.Clear(); base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ClothingUI.PACKAGE_NAME; _ui = UI_ClothingUI.Create(); this.viewCom = _ui.target; // this.viewCom.Center(); isfullScreen = true; isReturnView = true; // this.clickBlankToClose = false; _valueBarController = new ValueBarController(_ui.m_valueBar); _dressUpObjUI = new DressUpObjUI("SceneSuitFoster"); _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_comRenewReward.target.onClick.Add(OnClickRenewRewardItem); _ui.m_btnLeft.onClick.Add(() => { OnClickBtnDirection(-1); }); _ui.m_btnRight.onClick.Add(() => { OnClickBtnDirection(1); }); _ui.m_comFosterReward.target.onClick.Add(OnClickComFosterReward); _ui.m_btnPropertyShow.onClick.Add(OnClickBtnPropertyShow); _ui.m_listFoster.itemRenderer = ListFosterItemRender; _ui.m_listFoster.onClickItem.Add(OnClickListFosterItem); _ui.m_listProperty.itemRenderer = ListPropertyItemRender; _ui.m_listRenewMaterial.itemRenderer = ListRenewMaterialItemRender; _ui.m_listRenewMaterial.onClickItem.Add(OnListRenewMaterialsItem); _ui.m_btnRenew.onClick.Add(OnClickBtnRenew); _ui.m_c1.onChanged.Add(OnTabChange); // EventAgent.AddEventListener(ConstMessage.GET_SUIT_INFOS) } protected override void AddEventListener() { EventAgent.AddEventListener(ConstMessage.MAINTAIN_SUIT, OnListenerFoster); EventAgent.AddEventListener(ConstMessage.GET_MAINTAIN_SUIT_BONUS, OnListenerGetFosterReward); EventAgent.AddEventListener(ConstMessage.MAKE_NEW_SUIT, OnListenerRenew); EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateFosterList); EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedDot); } protected override void OnShown() { base.OnShown(); object[] datas = this.viewData as object[]; _suitId = (int)datas[0]; List suitIds = datas[1] as List; _suitIds = new List(); foreach (int suitId in suitIds) { if (DressUpMenuSuitDataManager.CheckHaveSuit(suitId)) { _suitIds.Add(suitId); } } _valueBarController.OnShown(); _index = SuitFosterDataManager.Instance.GetSuitFosterData(_suitId).maintainStep; _ui.m_c1.selectedIndex = 0; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("fzsj_bg"); UpdateView(); UpdateRedDot(); Timers.inst.AddUpdate(CheckGuide); } protected override void OnHide() { base.OnHide(); _valueBarController.OnHide(); Timers.inst.Remove(CheckGuide); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.MAINTAIN_SUIT, OnListenerFoster); EventAgent.RemoveEventListener(ConstMessage.GET_MAINTAIN_SUIT_BONUS, OnListenerGetFosterReward); EventAgent.RemoveEventListener(ConstMessage.MAKE_NEW_SUIT, OnListenerRenew); EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateFosterList); EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedDot); } private void OnClickBtnBack() { ViewManager.GoBackFrom(typeof(ClothingView).FullName); } private void OnTabChange() { if (_ui.m_c1.selectedIndex == 0) { UpdateFoster(); } else { UpdateRenew(); } } private void UpdateView() { SuitCfg cfg = SuitCfgArray.Instance.GetCfg(_suitId); _ui.m_loaRarity.url = ResPathUtil.GetCommonGameResPath("hd_sxicon_" + cfg.rarity);// "ui://LuckyBox/; UpdateArrows(); UpdateSuitView(); UpdateFoster(); UpdateRenew(); } private void UpdateArrows() { int index = _suitIds.IndexOf(_suitId); int count = _suitIds.Count; _ui.m_btnRight.visible = (index + 1 < count); _ui.m_btnLeft.visible = (index - 1 >= 0); } private void UpdateSuitView(bool isPic = true) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_suitId); _ui.m_txtName.text = suitCfg.name; _dressUpObjUI.ResetSceneObj(100, false, true, null, false); _dressUpObjUI.dressUpObj.PutOnSuitCfg(_suitId, isPic, new int[] { ConstDressUpItemType.BEI_JING }); _dressUpObjUI.UpdateWrapper(_ui.m_holder); } private void OnClickBtnDirection(int direction) { int index = _suitIds.IndexOf(_suitId); int targetIndex = index + direction; if (targetIndex >= 0 && direction == -1 || targetIndex < _suitIds.Count && direction == 1) { _suitId = _suitIds[targetIndex]; _index = SuitFosterDataManager.Instance.GetSuitFosterData(_suitId).maintainStep; UpdateView(); } } /*************************************************养护************************************************/ private void UpdateFoster() { _index = SuitFosterDataManager.Instance.GetSuitFosterData(_suitId).maintainStep; UpdateFosterReward(); _propertyList.Clear(); _addPropertyList.Clear(); UpdateFosterList(); _propertyList = SuitFosterDataManager.Instance.GetPropertyData(_suitId, _index); _ui.m_listProperty.numItems = _propertyList.Count; } private void UpdateFosterReward() { SuitFosterDataManager.Instance.GetFosterRewardState(_suitId, out int state, out int index); SuitFosterCfg cfg = SuitFosterCfgArray.Instance.GetCfgsBysuitId(_suitId)[index]; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cfg.rewardsArr[0][0]); _ui.m_comFosterReward.m_loaReward.url = ResPathUtil.GetIconPath(itemCfg); _ui.m_comFosterReward.m_c1.selectedIndex = state; } private void UpdateFosterList() { _ui.m_listFoster.numItems = SuitFosterCfgArray.Instance.GetCfgsBysuitId(_suitId).Count; } private void ListFosterItemRender(int index, GObject obj) { UI_ListFosterItem item = UI_ListFosterItem.Proxy(obj); item.target.data = index; int state = SuitFosterDataManager.Instance.GetFosterState(_suitId, index); item.m_finish.selectedIndex = state; item.m_txtName.text = SuitFosterDataManager.Instance.stepNames[index]; RedDotController.Instance.SetComRedDot(item.target, RedDotDataManager.Instance.GetClothingFosterRed(_suitId) && state == 1); UI_ListFosterItem.ProxyEnd(); } private void ListPropertyItemRender(int index, GObject obj) { UI_ListScoreItem item = UI_ListScoreItem.Proxy(obj); int score = (int)_propertyList.GetKey(index); item.m_txtProperty.text = _propertyList[score].ToString(); item.m_loaIcon.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + (score)); UI_ListScoreItem.ProxyEnd(); } private void OnClickListFosterItem(EventContext context) { GuideCfg cfg = GuideCfgArray.Instance.GetCfg(ConstGuideId.SUIT_LIST_VIEW); if (GuideDataManager.IsGuideFinish(ConstGuideId.SUIT_LIST_VIEW) <= 0 && GuideDataManager.currentGuideId == cfg.id) { return; } int index = (int)(context.data as GObject).data; int state = SuitFosterDataManager.Instance.GetFosterState(_suitId, index); if (state == 0) { PromptController.Instance.ShowFloatTextPrompt("已完成该阶段"); } else if (state == 1) { ViewManager.Show(new object[] { _suitId, index, _propertyList, this.viewData }); } else { PromptController.Instance.ShowFloatTextPrompt(string.Format("请完成{0}阶段", SuitFosterDataManager.Instance.stepNames[_index])); } } private void OnClickComFosterReward() { SuitFosterDataManager.Instance.GetFosterRewardState(_suitId, out int state, out int index); if (state == 1 || state == 2) { ViewManager.Show(_suitId); } else { SuitFosterProxy.SendGetMaintainSuitBonus(_suitId, index + 1).Coroutine(); } } private void OnClickBtnPropertyShow() { ViewManager.Show(new object[] { _suitId, _index }); } private void OnListenerFoster() { _ui.m_comFosterAni.target.visible = true; _ui.m_comFosterAni.m_txtContent.text = string.Format("服装{0}中......", SuitFosterDataManager.Instance.stepNames[_index]); if (_effectUI1 != null) { EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; } _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_comFosterAni.m_holder, "ui_gcdh", "ui_gcdh_" + (_index + 1)); _ui.m_comFosterAni.m_t0.Play(() => { ViewManager.Show(new object[] { _suitId, _index, _propertyList }); UpdateFoster(); _ui.m_comFosterAni.target.visible = false; }); } private void OnListenerGetFosterReward(EventContext context) { SuitFosterCfg cfg = SuitFosterCfgArray.Instance.GetCfgsBysuitId(_suitId)[(int)(context.data) - 1]; BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(cfg.rewardsArr)); UpdateFosterReward(); LogUtil.LogEditor("养护奖励:" + ItemDataManager.GetItemNum(100169)); } /*************************************************换新************************************************/ private void UpdateRenew() { _index = SuitFosterDataManager.Instance.GetSuitFosterData(_suitId).maintainStep; SuitFosterData suitFosterData = SuitFosterDataManager.Instance.GetSuitFosterData(_suitId); if (suitFosterData.makeNewState > 0) { _ui.m_c2.selectedIndex = 1; UpdateRenewFinish(); } else { _ui.m_c2.selectedIndex = 0; UpdateRenewView(); } } private void UpdateRenewView() { int suitrarity = SuitCfgArray.Instance.GetCfg(_suitId).rarity; SuitRenewCfg renewCfg = SuitRenewCfgArray.Instance.GetCfg(suitrarity); SuitFosterListCfg cfg = SuitFosterListCfgArray.Instance.GetCfg(_suitId); _ui.m_comRenewReward.target.visible = false; if (cfg.renewRewardsArr.Length > 0) { _ui.m_comRenewReward.target.visible = true; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cfg.renewRewardsArr[0][0]); _ui.m_comRenewReward.m_loaReward.url = ResPathUtil.GetIconPath(itemCfg); } _ui.m_txtRenewProperty.text = string.Format("套装所有部件属性+{0}%", renewCfg.addition * 100 / 10000); _ui.m_txtRenewTips.text = string.Format("完成养护-{0}阶段", SuitFosterDataManager.Instance.stepNames[cfg.renewOpenLv - 1]); _ui.m_listRenewMaterial.numItems = renewCfg.materialsArr.Length; long costHas = ItemDataManager.GetItemNum(renewCfg.costId); int costNeed = renewCfg.costNum; ItemUtil.UpdateItemNeedNum(_ui.m_comRenewCost, renewCfg.costId, renewCfg.costNum); long itemHas = ItemDataManager.GetItemNum(renewCfg.materialsArr[0][0]); int itemNeed = renewCfg.materialsArr[0][1]; _canRenew = costHas >= costNeed && itemHas >= itemNeed; UI_ComCostCurrency.ProxyEnd(); } private void UpdateRenewFinish() { int suitrarity = SuitCfgArray.Instance.GetCfg(_suitId).rarity; SuitRenewCfg renewCfg = SuitRenewCfgArray.Instance.GetCfg(suitrarity); _ui.m_txtRenewShow.text = string.Format("套装所有部件属性+{0}%", renewCfg.addition * 100 / 10000); _ui.m_comRenewRewardGet.target.visible = true; SuitFosterListCfg cfg = SuitFosterListCfgArray.Instance.GetCfg(_suitId); if (cfg.renewRewardsArr.Length <= 0) { _ui.m_comRenewRewardGet.target.visible = false; return; } ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cfg.renewRewardsArr[0][0]); _ui.m_comRenewRewardGet.m_loaReward.url = ResPathUtil.GetIconPath(itemCfg); } private void ListRenewMaterialItemRender(int index, GObject obj) { UI_ListMaterialsItem item = UI_ListMaterialsItem.Proxy(obj); int suitrarity = SuitCfgArray.Instance.GetCfg(_suitId).rarity; int[][] materialsArr = SuitRenewCfgArray.Instance.GetCfg(suitrarity).materialsArr; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(materialsArr[index][0]); item.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg); long has = ItemDataManager.GetItemNum(itemCfg.id); int need = materialsArr[index][1]; item.m_txtHas.text = StringUtil.GetColorText(has.ToString(), has >= need ? "#F2DB96" : "#C9F1A5"); item.m_txtNeed.text = need.ToString(); if (_canRenew && has < need) _canRenew = false; item.target.data = materialsArr[index]; UI_ListMaterialsItem.ProxyEnd(); } private void OnListRenewMaterialsItem(EventContext context) { int[] itemData = (int[])(context.data as GComponent).data; // GoodsItemTipsController.ShowItemTips(itemId); //ViewManager.Show(new object[] { itemData[0], new object[] { typeof(ClothingView).FullName, this.viewData }, itemData[1] }); object[] sourceDatas = new object[] { itemData[0], new object[] { typeof(ClothingView).FullName, this.viewData }, itemData[1] }; GoodsItemTipsController.ShowItemTips(itemData[0], sourceDatas); } private async void OnClickBtnRenew() { SuitFosterData data = SuitFosterDataManager.Instance.GetSuitFosterData(_suitId); SuitFosterListCfg cfg = SuitFosterListCfgArray.Instance.GetCfg(_suitId); if (data.maintainStep < cfg.renewOpenLv) { PromptController.Instance.ShowFloatTextPrompt("完成养护后开启焕新"); //PromptController.Instance.ShowFloatTextPrompt(string.Format("完成{0}开启焕新", SuitFosterDataManager.Instance.stepNames[cfg.renewOpenLv - 1])); return; } int suitrarity = SuitCfgArray.Instance.GetCfg(_suitId).rarity; SuitRenewCfg renewCfg = SuitRenewCfgArray.Instance.GetCfg(suitrarity); if (!ItemUtil.CheckItemEnough(renewCfg.costId, renewCfg.costNum)) { long has = ItemDataManager.GetItemNum(renewCfg.costId); ItemUtil.BuyCurrency(renewCfg.costId, renewCfg.costNum - has); return; } for (int i = 0; i < renewCfg.materialsArr.Length; i++) { if (!ItemUtil.CheckItemEnough(renewCfg.materialsArr[i][0], renewCfg.materialsArr[i][1], true)) { object[] sourceDatas = new object[] {renewCfg.materialsArr[i][0], new object[] { typeof(ClothingView).FullName, (this.viewData as object[])[3] }, renewCfg.materialsArr[i][1] }; GoodsItemTipsController.ShowItemTips(renewCfg.materialsArr[i][0], sourceDatas); return; } } int result = await SuitFosterProxy.SendMakeNewSuit(_suitId); if (result == ErrorCode.ERR_Success) { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.FU_ZHUANG_YANG_CHENG, 2); } } private void OnListenerRenew() { ViewManager.Show(_suitId); UpdateRenew(); LogUtil.LogEditor("换新奖励:" + ItemDataManager.GetItemNum(10370)); } private void UpdateRedDot() { RedDotController.Instance.SetComRedDot(_ui.m_btnTabFoster, RedDotDataManager.Instance.GetClothingFosterRed(_suitId)); RedDotController.Instance.SetComRedDot(_ui.m_btnTabRenew, RedDotDataManager.Instance.GetClothingRenewRed(_suitId)); RedDotController.Instance.SetComRedDot(_ui.m_btnRenew, RedDotDataManager.Instance.GetClothingRenewRed(_suitId)); } private void CheckGuide(object param) { if (GuideDataManager.IsGuideFinish(ConstGuideId.SUIT_LIST_VIEW) <= 0) { UpdateToCheckGuide(null); } else { Timers.inst.Remove(CheckGuide); } } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_listFoster, ConstGuideId.SUIT_LIST_VIEW, 4, "点击进行服饰养护工作。", 0); GuideController.TryGuide(_ui.m_btnTabRenew, ConstGuideId.SUIT_LIST_VIEW, 5, "完成养护流程后,可以对服饰进行焕新,获得更多新的套装配件哦。"); GuideController.TryCompleteGuide(ConstGuideId.SUIT_LIST_VIEW, 5); } private void OnClickRenewRewardItem() { ViewManager.Show(_suitId); } } }