using System; using System.Collections; using System.Collections.Generic; using FairyGUI; using UI.Arena; // using UI.DressUp; using UnityEngine; namespace GFGGame { public class ArenaDressInfoView : BaseWindow { private UI_ArenaDressInfoUI _ui; private GameObject _sceneObject; private List _listLongPress = new List(); private List _roleDatas; //可能是自己的搭配,也可能是对方玩家的搭配 private int _themeIndex = 0; private string _openViewName = ""; private List _itemList = new List(); private string[] _tags; private int _roleType = 0; //FightRoleType public override void Dispose() { if (_sceneObject != null) { PrefabManager.Instance.Restore(_sceneObject); _sceneObject = null; } // _dressUpObj.Dispose(); for (int i = 0; i < _listLongPress.Count; i++) { _listLongPress[i].Dispose(); } _listLongPress.Clear(); if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ArenaUI.PACKAGE_NAME; _ui = UI_ArenaDressInfoUI.Create(); this.viewCom = _ui.target; isfullScreen = true; isReturnView = true; _ui.m_c2.onChanged.Add(OnThemeChange); _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_btnConfire.onClick.Add(OnClickConfire); _ui.m_btnDress.onClick.Add(OnBtnDressClick); _ui.m_btnRecommend.onClick.Add(OnBtnRecommendClick); _ui.m_comValueInfo.m_btnFightScoreRule.onClick.Add(OnBtnFightScoreRule); _ui.m_grhCloseComFightScore.onClick.Add(OnCloseComFightScore); _ui.m_list.itemRenderer = RenderListItem; } protected override void AddEventListener() { base.AddEventListener(); } protected override void OnShown() { base.OnShown(); _roleType = (int)(this.viewData as object[])[0]; _themeIndex = (int)(this.viewData as object[])[1]; _roleDatas = (this.viewData as object[])[2] as List; _openViewName = (this.viewData as object[])[3].ToString(); if (_sceneObject == null) { _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath("SceneArenaDressUp")); MyDressUpHelper.dressUpObj.setSceneObj(_sceneObject, false, false); } _ui.m_grhCloseComFightScore.visible = false; _ui.m_c1.selectedIndex = _roleType; _ui.m_c2.selectedIndex = _themeIndex; UpdateView(); Timers.inst.AddUpdate(CheckGuide); } protected override void OnHide() { base.OnHide(); if (_sceneObject != null) { PrefabManager.Instance.Restore(_sceneObject); _sceneObject = null; } _ui.m_grhCloseComFightScore.visible = false; _ui.m_comValueInfo.m_c2.selectedIndex = 0; _ui.m_btnConfire.touchable = true; Timers.inst.Remove(CheckGuide); Timers.inst.Remove(SetConfireTouch); } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void OnClickBtnBack() { //ViewManager.GoBackFrom(typeof(ArenaDressInfoView).FullName); //返回竞技场主界面 this.Hide(); if (_roleType == FightRoleType.FieldWork) { ViewManager.Show(new object[] { FieldWorkDataManager.Instance.currentLevelID }); } //this.OnHide(); //ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); //if (!string.IsNullOrEmpty(_openViewName)) //{ // ViewManager.Show(_openViewName); //打开来源界面:如历史记录、排行榜 //} } private void SetConfireTouch(object parm) { _ui.m_btnConfire.touchable = true; Timers.inst.Remove(SetConfireTouch); } private void OnClickConfire() { ViewManager.GoBackFrom(typeof(ArenaDressInfoView).FullName); if (_roleType == FightRoleType.FieldWork) { ViewManager.Show(new object[] { FieldWorkDataManager.Instance.currentLevelID }); } } private void OnThemeChange() { _themeIndex = _ui.m_c2.selectedIndex; if (_roleType == FightRoleType.MINE) { ArenaDataManager.Instance.SelectThemeIndex = _themeIndex; } else if(_roleType == FightRoleType.FieldWork) { FieldWorkDataManager.Instance.SelectThemeIndex = _themeIndex; } UpdateView(); } private void OnBtnFightScoreRule() { _ui.m_grhCloseComFightScore.visible = true; } private void OnCloseComFightScore() { _ui.m_comValueInfo.m_c2.selectedIndex = 0; _ui.m_grhCloseComFightScore.visible = false; } private void OnBtnDressClick() { if(_roleType != 2) { ViewManager.Show(); } else { ViewManager.Show(); } } private async void OnBtnRecommendClick() { //标记,本次推荐已经穿戴过的词牌,防止重复。 var wearCardIds = new List(); if (_roleType == FightRoleType.MINE) { for (int i = 0; i < ArenaDataManager.Instance.ThemeList.Count; i++) { int scoreType = ArenaDataManager.Instance.ThemeList[i]; FightData roleData = ArenaDataManager.Instance.DressupList[i]; roleData.scoreType = scoreType; roleData.itemList = ArenaDataManager.Instance.GetRecommentItemList(scoreType, roleData.tags); roleData.cardId = ArenaDataManager.Instance.GetRecommentCardId(scoreType, roleData.itemList, wearCardIds); ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType); ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData); _roleDatas = ArenaDataManager.Instance.DressupList; List fightScoreDatas = ArenaDataManager.Instance.GetFightScoreList(_roleDatas); bool result = await ArenaSproxy.ReqChangeArenaDressup(i, roleData.cardId, roleData.itemList, fightScoreDatas); if (!result) { PromptController.Instance.ShowFloatTextPrompt("保存失败"); return; } } } else if (_roleType == FightRoleType.FieldWork) { _ui.m_btnConfire.touchable = false; Timers.inst.Add(1.0f,1,SetConfireTouch); for (int i = 0; i < FieldWorkDataManager.Instance.ThemeList.Count; i++) { int scoreType = FieldWorkDataManager.Instance.ThemeList[i]; FightData roleData = FieldWorkDataManager.Instance.DressupList[i]; roleData.scoreType = scoreType; roleData.itemList = ArenaDataManager.Instance.GetFieldRecommentItemList(scoreType, roleData.tags); roleData.cardId = ArenaDataManager.Instance.GetRecommentCardId(scoreType, roleData.itemList, wearCardIds); ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType); ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData); _roleDatas = FieldWorkDataManager.Instance.DressupList; List fightScoreDatas = ArenaDataManager.Instance.GetFightScoreList(_roleDatas); bool result = await FieldWorkSproxy.ReqChangeFieldWorkDressup(); if (!result) { PromptController.Instance.ShowFloatTextPrompt("保存失败"); return; } } } wearCardIds.Clear(); PromptController.Instance.ShowFloatTextPrompt("保存成功"); UpdateView(); } private void UpdateView() { // _itemList = _roleDatas[_themeIndex].itemList; _tags = _roleDatas[_themeIndex].tags; UpdateCardInfo(_roleDatas[_themeIndex].cardId); if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena) { _ui.m_c4.selectedIndex = 0; ArenaViewManager.Instance.UpdateValue(_ui.m_comValueInfo.target, _themeIndex, _roleDatas); } else { _ui.m_c4.selectedIndex = 1; FieldWorkDataManager.Instance.UpdateValue(_ui.m_comFieldValueInfo.target, _themeIndex, _roleDatas); for (int i = 0; i < FieldWorkDataManager.Instance.ThemeList.Count; i++) { int scoreType = FieldWorkDataManager.Instance.ThemeList[i]; FightData roleData = FieldWorkDataManager.Instance.DressupList[i]; ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType); ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData); } } MyDressUpHelper.dressUpObj.PutOnItemList(_roleDatas[_themeIndex].itemList); _itemList.Clear(); for (int i = 0; i < _roleDatas[_themeIndex].itemList.Count; i++) { int itemId = _roleDatas[_themeIndex].itemList[i]; if (itemId == ConstItemID.DEFULT_FA_XING || itemId == ConstItemID.DEFULT_LIAN_YI_QUN || itemId == ConstItemID.DEFULT_NEI_DA || itemId == ConstItemID.DEFULT_XIA_ZHUANG) continue; _itemList.Add(itemId); } _ui.m_list.numItems = _itemList.Count; } private void UpdateCardInfo(int cardId) { if (cardId == 0) { _ui.m_comCard.m_c1.selectedIndex = 0; return; } _ui.m_comCard.m_c1.selectedIndex = 1; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cardId); _ui.m_comCard.m_txtCardName.text = itemCfg.name; _ui.m_comCard.m_comCard.m_loaCard.url = ResPathUtil.GetCardIconPath(itemCfg.res); if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena) { _ui.m_comCard.m_loaScore.url = ResPathUtil.GetScorePath(ArenaDataManager.Instance.ThemeList[_themeIndex]); } else { _ui.m_comCard.m_loaScore.url = ResPathUtil.GetScorePath(FieldWorkDataManager.Instance.ThemeList[_themeIndex]); } RarityIconController.UpdateRarityIcon(_ui.m_comCard.m_loaRarity, cardId, false); } private void RenderListItem(int index, GObject obj) { UI_ListPartsItem item = UI_ListPartsItem.Proxy(obj); item.m_iconSelected.visible = true; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_itemList[index]); item.m_txtTitle.text = itemCfg.name; if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena) { item.m_ScoreType.url = ResPathUtil.GetScorePath(ArenaDataManager.Instance.ThemeList[_themeIndex]); } else { item.m_ScoreType.url = ResPathUtil.GetScorePath(FieldWorkDataManager.Instance.ThemeList[_themeIndex]); } item.m_icon.url = ResPathUtil.GetIconPath(itemCfg.res, "png"); item.m_txtScore.text = _roleDatas[_themeIndex].itemScoreDic[_itemList[index]].ToString(); RarityIconController.UpdateRarityIcon(item.m_rarity, _itemList[index], false); if (item.target.data == null) { LongPressGesture longPressGesture = new LongPressGesture(item.target); longPressGesture.once = true; longPressGesture.onAction.Add(OnLongPress); _listLongPress.Add(longPressGesture); } item.target.data = _itemList[index]; UI_ListPartsItem.ProxyEnd(); } private void OnLongPress(EventContext context) { LongPressGesture gesture = (LongPressGesture)context.sender; int itemId = (int)gesture.host.data; GoodsItemTipsController.ShowItemTips(itemId); } private void CheckGuide(object param) { if (GuideDataManager.IsGuideFinish(ConstGuideId.ARENA_OPEN) <= 0 ||(GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork && InstanceZonesDataManager.CheckLevelPass(FieldWorkDataManager.Instance.guideLevelID))) { UpdateToCheckGuide(null); } else { Timers.inst.Remove(CheckGuide); } } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_btnRecommend, ConstGuideId.ARENA_OPEN, 6, ""); GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.ARENA_OPEN, 7, "搭配好啦,挑个对手比拼吧~"); if((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)) { GuideController.TryGuide(_ui.m_btnDress, ConstGuideId.FIELD, 6, "三套战斗方案可自由搭配且在同一关卡中服装可重复使用,让我们前往搭配吧!"); GuideController.TryGuide(_ui.m_btnRecommend, ConstGuideId.FIELD, 12, "也可点击【推荐搭配】按钮快速搭配三套方案(同一个关卡中服装可重复使用)!"); GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.FIELD, 13, "让我们前往开启挑战吧!"); } } protected override void TryCompleteGuide() { base.TryCompleteGuide(); GuideController.TryCompleteGuideIndex(ConstGuideId.ARENA_OPEN, 7); } } }