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 GameObject _scenePrefab; private GameObject _sceneObject; private GoWrapper _wrapper; private GameObject _gameobject1; private GoWrapper _wrapper1; private DressUpObj _dressUpObj; private bool _actionIsPic; 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; } base.Dispose(); if (_sceneObject != null) { GameObject.Destroy(_sceneObject); _sceneObject = null; _wrapper.Dispose(); _wrapper = null; } if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } SceneController.DestroyObjectFromView(_gameobject1, _wrapper1); _propertyList.Clear(); _addPropertyList.Clear(); } protected override void OnInit() { base.OnInit(); packageName = UI_ClothingUI.PACKAGE_NAME; _ui = UI_ClothingUI.Create(); this.viewCom = _ui.target; // this.viewCom.Center(); isfullScreen = true; // this.clickBlankToClose = false; _valueBarController = new ValueBarController(_ui.m_valueBar); _scenePrefab = GFGAsset.Load(ResPathUtil.GetPrefabPath("SceneSuitFoster")); _dressUpObj = new DressUpObj(); _ui.m_btnBack.onClick.Add(OnClickBtnBack); _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); } 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(); 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); } 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) { _actionIsPic = isPic; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_suitId); _ui.m_txtName.text = suitCfg.name; if (_sceneObject != null) { GameObject.Destroy(_sceneObject); _sceneObject = null; } _sceneObject = GameObject.Instantiate(_scenePrefab); int scale = 100; _sceneObject.transform.localScale = new Vector3(scale, scale, scale); _dressUpObj.setSceneObj(_sceneObject, false,true, null, false); _dressUpObj.PutOnDefaultDressUpData(); _dressUpObj.PutOnSuitCfg(_suitId, isPic, new int[] { ConstDressUpItemType.BEI_JING }); if (_wrapper == null) { _wrapper = new GoWrapper(_sceneObject); _ui.m_holder.SetNativeObject(_wrapper); } else { _wrapper.wrapTarget = _sceneObject; } } 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(); SuitFosterDataManager.Instance.GetPropertyData(_suitId, _index, out _propertyList, out _addPropertyList); _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_ListPropertyItem item = UI_ListPropertyItem.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_ListPropertyItem.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, _addPropertyList, 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]); string resPath = ResPathUtil.GetViewEffectPath("ui_gcdh", "ui_gcdh_" + (_index + 1)); SceneController.AddObjectToView(_gameobject1, _wrapper1, _ui.m_comFosterAni.m_holder, resPath, out _gameobject1, out _wrapper1); _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(); Debug.Log("养护奖励:" + 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.SetItemNeedNum(_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(ViewName.APPROACH_OF_ITEM_VIEW, 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() { if (!_canRenew) { PromptController.Instance.ShowFloatTextPrompt("材料不足"); return; } SuitFosterData data = SuitFosterDataManager.Instance.GetSuitFosterData(_suitId); SuitFosterListCfg cfg = SuitFosterListCfgArray.Instance.GetCfg(_suitId); if (data.maintainStep < cfg.renewOpenLv) { PromptController.Instance.ShowFloatTextPrompt(string.Format("完成{0}开启焕新", SuitFosterDataManager.Instance.stepNames[cfg.renewOpenLv - 1])); 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(); Debug.Log("换新奖励:" + ItemDataManager.GetItemNum(10370)); } 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); } } }