瀏覽代碼

爬塔补充提交

zhangyuqian 11 月之前
父節點
當前提交
75d8b2d7a9

+ 124 - 0
GameClient/Assets/Game/HotUpdate/Data/ArenaDataManager.cs

@@ -319,6 +319,130 @@ namespace GFGGame
             return itemList;
         }
 
+        /// <summary>
+        /// 爬塔获取推荐列表
+        /// </summary>
+        /// <param name="scoreType"></param>
+        /// <param name="tags"></param>
+        /// <returns></returns>
+        public List<int> GetFieldRecommentItemList(int scoreType, string[] tags)
+        {
+            Dictionary<int, List<int>> itemListDic = new Dictionary<int, List<int>>();
+            Dictionary<int, List<int>> itemDatasDic = DressUpMenuItemDataManager.ItemDatasBySubTypeDic;
+
+
+            foreach (int subType in itemDatasDic.Keys)
+            {
+                int key = subType;
+                if (itemDatasDic.Count == 0) continue;
+                if (DressUpMenuItemCfg1Array.Instance.CheckIsSceneTypeBySubType(subType)) continue;
+                List<int> dressList = new List<int>();//= SortDressList(itemDatasDic[subType], scoreType, tags);
+                if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+                {
+                    dressList = SortDressList(itemDatasDic[subType], scoreType, tags).ToList();
+                    foreach (var item in FieldWorkDataManager.Instance.HistoryDressupList)
+                    {
+                        dressList.Remove(item);
+                    }
+                }
+                else
+                {
+                    dressList = SortDressList(itemDatasDic[subType], scoreType, tags).ToList();
+                }
+                int max = subType == (int)ConstDressUpItemType.TE_SHU ? 3 : 1;
+                max = Math.Min(max, dressList.Count);
+                if (DressUpMenuItemCfg1Array.Instance.CheckIsOrnamentsTypeBySubType(subType))
+                {
+                    key = ConstDressUpItemType.TE_SHU; //饰品全放在一个列表里
+                }
+
+                if (!itemListDic.ContainsKey(key))
+                {
+                    itemListDic[key] = new List<int>();
+                }
+
+                itemListDic[key].AddRange(dressList.GetRange(0, max));
+            }
+
+            bool isHasLYQ = itemListDic.ContainsKey(ConstDressUpItemType.LIAN_YI_QUN) && itemListDic[ConstDressUpItemType.LIAN_YI_QUN].Count >0;
+            bool isHasSY = itemListDic.ContainsKey(ConstDressUpItemType.SHANG_YI) && itemListDic[ConstDressUpItemType.SHANG_YI].Count > 0; ;
+            bool isHasXZ = itemListDic.ContainsKey(ConstDressUpItemType.XIA_ZHUANG) && itemListDic[ConstDressUpItemType.XIA_ZHUANG].Count > 0; ;
+            bool isHasND = itemListDic.ContainsKey(ConstDressUpItemType.NEI_DA) && itemListDic[ConstDressUpItemType.NEI_DA].Count > 0; ;
+
+            int countTagLYQ =
+                isHasLYQ && ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.LIAN_YI_QUN][0], tags)
+                    ? 1
+                    : 0;
+            int countTagSY =
+                isHasSY && ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.SHANG_YI][0], tags)
+                    ? 1
+                    : 0;
+            int countTagXZ =
+                isHasXZ && ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.XIA_ZHUANG][0], tags)
+                    ? 1
+                    : 0;
+            int countTagND =
+                isHasND && ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.NEI_DA][0], tags)
+                    ? 1
+                    : 0;
+
+            if (countTagLYQ > countTagSY + countTagXZ + countTagND)
+            {
+                itemListDic.Remove(ConstDressUpItemType.NEI_DA);
+                itemListDic.Remove(ConstDressUpItemType.SHANG_YI);
+                itemListDic.Remove(ConstDressUpItemType.XIA_ZHUANG);
+            }
+            else if (countTagLYQ < countTagSY + countTagXZ + countTagND)
+            {
+                itemListDic.Remove(ConstDressUpItemType.LIAN_YI_QUN);
+            }
+            else
+            {
+                int scoreLYQ = !isHasLYQ
+                    ? 0
+                    : ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.LIAN_YI_QUN][0], scoreType,
+                        tags);
+                int scoreSY = !isHasSY
+                    ? 0
+                    : ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.SHANG_YI][0], scoreType,
+                        tags);
+                int scoreXZ = !isHasXZ
+                    ? 0
+                    : ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.XIA_ZHUANG][0], scoreType,
+                        tags);
+                int scoreND = !isHasND
+                    ? 0
+                    : ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.NEI_DA][0], scoreType,
+                        tags);
+                if (scoreLYQ > scoreSY + scoreXZ + scoreND)
+                {
+                    itemListDic.Remove(ConstDressUpItemType.SHANG_YI);
+                    itemListDic.Remove(ConstDressUpItemType.XIA_ZHUANG);
+                    itemListDic.Remove(ConstDressUpItemType.NEI_DA);
+                }
+                else
+                {
+                    itemListDic.Remove(ConstDressUpItemType.LIAN_YI_QUN);
+                }
+            }
+
+            List<int> itemList = new List<int>();
+            foreach (int subType in itemListDic.Keys)
+            {
+                //DressUpMenuItemDataManager.SortItemListByHighScore(itemListDic[subType]);
+                if (subType == ConstDressUpItemType.TE_SHU)
+                {
+                    int max = Math.Min(itemListDic[subType].Count, 5);
+                    itemList.AddRange(itemListDic[subType].GetRange(0, max));
+                }
+                else
+                {
+                    itemList.AddRange(itemListDic[subType]);
+                }
+            }
+
+            return itemList;
+        }
         private List<int> SortDressList(List<int> dressList, int scoreType, string[] tags)
         {
             dressList.Sort((int a, int b) =>

+ 20 - 2
GameClient/Assets/Game/HotUpdate/Data/FieldWorkDataManager.cs

@@ -148,6 +148,12 @@ namespace GFGGame
             {
                 List<int> dressA = new List<int>();
                 dressA = FieldWorkDataManager.Instance.DressupList[i].itemList.ToList();
+                //去除默认
+                dressA.Remove(10000);
+                dressA.Remove(20000);
+                dressA.Remove(30000);
+                dressA.Remove(50000);
+                dressA.Remove(60000);
                 if (FieldWorkDataManager.Instance.DressupList[i].cardId > 0)
                 {
                     dressA.Add(FieldWorkDataManager.Instance.DressupList[i].cardId);
@@ -207,12 +213,24 @@ namespace GFGGame
             int i = 0;
             foreach(var item in DressupList)
             {
-                if(item.cardId > 0)
+                bool isDress = false;
+                for(int j= 0;j<item.itemList.Count;j++)
+                {
+                    if(item.itemList.Count > 0)
+                    {
+                        if(item.itemList[j] != 10000  && item.itemList[j] != 20000
+                            && item.itemList[j] != 30000 && item.itemList[j] != 50000 && item.itemList[j] != 60000)
+                        {
+                            isDress = true;
+                        }
+                    }
+                }
+                if(item.cardId > 0 && isDress)
                 {
                     i++;    
                 }
             }
-            if(i>=1)
+            if(i>=3)
             {
                 return true;
             }

+ 40 - 4
GameClient/Assets/Game/HotUpdate/ServerProxy/FieldWorkSproxy.cs

@@ -109,11 +109,11 @@ namespace GFGGame
             }) ;
             if (response != null)
             {
+                FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;
+                FieldWorkDataManager.Instance.HistoryDressupList = response.WeekUserItems;
+                FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;
                 if (response.Error == ErrorCode.ERR_Success)
                 {
-                    FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;
-                    FieldWorkDataManager.Instance.HistoryDressupList = response.WeekUserItems;
-                    FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;
                     if(response.CimbingTowerLevelInfo.IsPass)
                     {
                         if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
@@ -140,7 +140,7 @@ namespace GFGGame
                     }
                     else
                     {
-                        if(response.CimbingTowerLevelInfo != null)
+                        if (response.CimbingTowerLevelInfo != null)
                         {
                             if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
                             {
@@ -175,6 +175,42 @@ namespace GFGGame
                         return false;
                     }
                 }
+                else
+                {
+                    if (response.CimbingTowerLevelInfo != null)
+                    {
+                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[response.CimbingTowerLevelInfo.LevelId] = response.CimbingTowerLevelInfo;
+                        }
+                        else
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(response.CimbingTowerLevelInfo.LevelId, response.CimbingTowerLevelInfo);
+                        }
+                    }
+                    int limit = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
+                    bool isDelete = false;
+                    for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
+                    {
+                        foreach (var item in FieldWorkDataManager.Instance.CardAbrasionInfoList)
+                        {
+                            if (item.Card == FieldWorkDataManager.Instance.DressupList[i].cardId)
+                            {
+                                if (item.UseNum >= limit)
+                                {
+                                    FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
+                                    isDelete = true;
+                                }
+                            }
+                        }
+                    }
+                    if (isDelete)
+                    {
+                        PromptController.Instance.ShowFloatTextPrompt("词牌磨损率过高已自动解除佩戴!");
+                        EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
+                    }
+                    return false;
+                }
             }
             return false;
         }

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaDressInfoView.cs

@@ -203,7 +203,7 @@ namespace GFGGame
                     int scoreType = FieldWorkDataManager.Instance.ThemeList[i];
                     FightData roleData = FieldWorkDataManager.Instance.DressupList[i];
                     roleData.scoreType = scoreType;
-                    roleData.itemList = ArenaDataManager.Instance.GetRecommentItemList(scoreType, roleData.tags);
+                    roleData.itemList = ArenaDataManager.Instance.GetFieldRecommentItemList(scoreType, roleData.tags);
                     roleData.cardId =
                         ArenaDataManager.Instance.GetRecommentCardId(scoreType, roleData.itemList, wearCardIds);
                     ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);
@@ -347,7 +347,8 @@ namespace GFGGame
             if((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork))
             {
                 GuideController.TryGuide(_ui.m_btnDress, ConstGuideId.FIELD, 6, "三套战斗方案可自由搭配且在同一关卡中服装可重复使用,让我们前往搭配吧!");
-                GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.FIELD, 12, "返回!");
+                GuideController.TryGuide(_ui.m_btnRecommend, ConstGuideId.FIELD, 12, "也可点击【推荐搭配】按钮快速搭配三套方案(同一个关卡中服装可重复使用)!");
+                GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.FIELD, 13, "让我们前往开启挑战吧!");
             }
         }
 

+ 392 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkChooseCardView.cs

@@ -0,0 +1,392 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using FairyGUI;
+using UI.CommonGame;
+using UI.Main;
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class FieldWorkChooseCardView : BaseWindow
+    {
+        private UI_StoryCardChooseUI _ui;
+        private List<CardData> cardList = new List<CardData>();
+        private static int _scoreType;
+        private int _selectedIndex = 0;
+        private int _cardId = 0; //记录打开界面时的竞技场词牌id
+        private int _skillId = 0;
+
+        private List<EffectUI> _effects = new List<EffectUI>();
+        private GComponent _comSelected;
+
+        private EffectUI _effectUI1;
+        private EffectUI _effectUI2;
+        private EffectUI _effectUI3;
+
+        public override void Dispose()
+        {
+            EffectUIPool.Recycle(_effectUI1);
+            _effectUI1 = null;
+            EffectUIPool.Recycle(_effectUI2);
+            _effectUI2 = null;
+            EffectUIPool.Recycle(_effectUI3);
+            _effectUI3 = null;
+
+            //EffectUIPool.Recycle(_effectUI3);
+            //_effectUI3 = null;
+            if (_comSelected != null)
+            {
+                _comSelected.RemoveFromParent();
+                _comSelected.Dispose();
+            }
+
+            for (int i = 0; i < _effects.Count; i++)
+            {
+                EffectUIPool.Recycle(_effects[i]);
+                _effects[i] = null;
+            }
+
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_StoryCardChooseUI.PACKAGE_NAME;
+            _ui = UI_StoryCardChooseUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            this.modal = true;
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+
+            _ui.m_listCard.SetVirtual();
+            _ui.m_listCard.itemRenderer = RenderListCardItem;
+            _ui.m_listCard.onClickItem.Add(OnListCardItemClick);
+
+            _ui.m_listSkill.itemRenderer = RenderListSkillItem;
+
+            _ui.m_btnCancel.onClick.Add(OnBtnCancelClick);
+            _ui.m_btnConfirm.onClick.Add(OnBtnComfirmClick);
+            _ui.m_btnUpCard.onClick.Add(OnBtnUpCardClikc);
+
+            _comSelected = UIPackage.CreateObject(UI_MainUI.PACKAGE_NAME, "ComCardSelect").asCom;
+            //_effectUI3 = EffectUIPool.CreateEffectUI(_comSelected.GetChild("holder").asGraph, "ui_fight_new", "kp_Select");
+            AddEffect();
+        }
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+
+            _scoreType = (int)this.viewData;
+
+            cardList = CardDataManager.GetCardListByRoleType(0);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                //其他主题带的cardIds
+                var otherThemeCardIds = new HashSet<int>();
+                for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
+                {
+                    if (FieldWorkDataManager.Instance.SelectThemeIndex == i)
+                    {
+                        continue;
+                    }
+
+                    otherThemeCardIds.Add(FieldWorkDataManager.Instance.DressupList[i].cardId);
+                }
+
+                //去掉已经在其他主题装配的cardList
+                cardList = cardList.Where(a => !otherThemeCardIds.Contains(a.id)).ToList();
+            }
+
+            float dressListAllAcore =
+                FightDataManager.Instance.GetDressListAllScore(MyDressUpHelper.dressUpObj.itemList, _scoreType);
+            cardList = FightDataManager.Instance.SortCardList(cardList, dressListAllAcore, _scoreType);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                cardList = FieldWorkDataManager.Instance.SortCardList(cardList);
+            }
+            _ui.m_listCard.numItems = cardList.Count;
+            _ui.m_listCard.selectedIndex = 0;
+
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                _cardId = FieldWorkDataManager.Instance.DressupList[FieldWorkDataManager.Instance.SelectThemeIndex].cardId;
+            }
+
+            if (cardList.Count == 0)
+            {
+                OnCardSelected(0);
+            }
+            else
+            {
+                OnCardSelected(cardList[0].id);
+            }
+
+
+            UpdateView(0);
+
+            Timers.inst.AddUpdate(CheckGuide);
+        }
+
+        private void UpdateView(int index)
+        {
+            // CardData cardData = cardList[index];
+            _ui.m_loaScore.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + _scoreType);
+            int cardId;
+            if (cardList.Count == 0)
+            {
+                cardId = 0;
+                _ui.m_noCardTips.visible = true;
+                _ui.m_noCardTips.text = "暂无可用词牌";
+                _ui.m_listSkill.numItems = cardList.Count;
+            }
+            else
+            {
+                _ui.m_noCardTips.visible = false;
+                cardId = cardList[index].id;
+            }
+            _ui.m_txtName.text = "无";
+
+            PassivitySkillCfg cfg = ScoreSystemData.Instance.GetShowSkillCfg(cardId);
+            if (cfg == null) return;
+            _ui.m_txtName.text = cardList[index].itemCfg.name;
+
+            List<PassivitySkillCfg> skillCfgs = PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardId);
+            _ui.m_listSkill.data = skillCfgs;
+            _ui.m_listSkill.numItems = skillCfgs.Count;
+            _ui.m_comSkillTips.target.visible = false;
+            _selectedIndex = index;
+            int childIndex = _ui.m_listCard.ItemIndexToChildIndex(index);
+            _ui.m_listCard.GetChildAt(childIndex).asCom.AddChild(_comSelected);
+        }
+
+        private void RenderListSkillItem(int index, GObject obj)
+        {
+            List<PassivitySkillCfg> skillCfgs = obj.parent.data as List<PassivitySkillCfg>;
+            UI_ListCardSkillItem item = UI_ListCardSkillItem.Proxy(obj);
+            item.m_loaSkill.url = ResPathUtil.GetCardSkillPath(skillCfgs[index].res);
+            item.m_txtLv.text = SkillDataManager.Instance
+                .GetCardSkillLv(skillCfgs[index].cardId, skillCfgs[index].skillId).ToString();
+            if (item.target.data == null)
+                item.target.onClick.Add(OnSkillItemClick);
+
+            item.target.data = index; // skillCfgs[index];
+            UI_ListCardSkillItem.ProxyEnd();
+        }
+
+        private void OnSkillItemClick(EventContext context)
+        {
+            GObject gObject = context.sender as GObject;
+            int index = (int)gObject.data;
+            List<PassivitySkillCfg> skillCfgs =
+                PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardList[_selectedIndex].id);
+
+            PassivitySkillCfg skillCfg = skillCfgs[index];
+            _ui.m_comSkillTips.target.visible = _skillId != skillCfg.skillId;
+
+            Vector2 posInA = _ui.m_listSkill.GetChildAt(index).asCom.position;
+            Vector2 posInB = _ui.m_listSkill.TransformPoint(posInA, _ui.target);
+            _ui.m_comSkillTips.target.SetPosition(posInB.x, posInB.y + 110, 0);
+
+            _ui.m_comSkillTips.m_txtName.text = skillCfg.name;
+            int skillLv = SkillDataManager.Instance.GetCardSkillLv(skillCfg.cardId, skillCfg.skillId);
+            PassivitySkillLvlCfg skillLvlCfg =
+                PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillCfg.skillId);
+            _ui.m_comSkillTips.m_txtSkillTips.text = skillLvlCfg.describe;
+
+            _skillId = skillCfg.skillId;
+        }
+
+        private void RenderListCardItem(int index, GObject obj)
+        {
+            CardData cardData = cardList[index];
+            UI_ListCardFightItem item = UI_ListCardFightItem.Proxy(obj); // obj as GButton;
+            item.m_txtName.text = cardData.itemCfg.name;
+            item.m_comCardMask.m_loaCard.asLoader.url =
+                ResPathUtil.GetCardIconPath(cardData.resources[cardData.resIndex]);
+            item.m_txtLv.text = string.Format("{0}级", cardData.lv);
+            // item.m_loaRarity.url = ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + cardData.itemCfg.rarity);
+            RarityIconController.UpdateRarityIcon(item.m_loaRarity, cardData.itemCfg.id,
+                false); // ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + data.itemCfg.rarity);
+            item.m_loaMainScore.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + (cardData.itemCfg.mainScore));
+            item.m_loaBorder.url = "ui://CommonGame/kp_kuang_" + cardData.itemCfg.rarity;
+            // UI_ComStar comStar = UI_ComStar.Proxy(item.m_comStar);
+
+            int starLevelDodge = cardData.star / 6;
+            item.m_starNumType.selectedIndex = cardData.itemCfg.starDescArr.Length - 1;
+            for (int i = 0; i < 4; i++)
+            {
+                UI_ComDodgeFightStar dodgeStar = UI_ComDodgeFightStar.Proxy(item.target.GetChild("dodgeStar" + i));
+                dodgeStar.m_lightType.selectedIndex = (starLevelDodge > i) ? 1 : 0;
+                UI_ComDodgeFightStar.ProxyEnd();
+            }
+
+            // comStar.m_c1.selectedIndex = cardData.star;
+            if (_effects.Count <= index)
+            {
+                //EffectUI _effectUI = EffectUIPool.CreateEffectUI(item.m_comEff.m_holder, "ui_fight_new", "kp_Select");
+                // _effects.Add(_effectUI);
+            }
+            if (index == 0)
+            {
+                item.m_useIcon.visible = true;
+            }
+            else
+            {
+                item.m_useIcon.visible = false;
+            }
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                item.m_fieldwork.visible = true;
+                item.m_useIcon.visible = false;
+                item.m_wearRateText.text = FieldWorkDataManager.Instance.GetCardAbrasion(cardData.itemCfg.id).ToString() + "%";
+            }
+            else
+            {
+                item.m_fieldwork.visible = false;
+            }
+            item.target.asCom.RemoveChild(_comSelected);
+            if (_selectedIndex == index)
+            {
+                item.target.asCom.AddChild(_comSelected);
+            }
+
+            UI_ListCardFightItem.ProxyEnd();
+            // UI_ComStar.ProxyEnd();
+        }
+
+        private void OnListCardItemClick(EventContext context)
+        {
+            GObject obj = context.data as GObject;
+            UI_ListCardFightItem item = UI_ListCardFightItem.Proxy(obj);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                if (FieldWorkDataManager.Instance.GetCardAbrasion(cardList[_ui.m_listCard.selectedIndex].id) >= 100)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("卡牌磨损程度已无法使用!");
+                    return;
+                }
+            }
+            item.m_t0.Play();
+            EffectUIPool.Recycle(_effectUI3);
+            _effectUI3 = null;
+            _effectUI3 = EffectUIPool.CreateEffectUI(item.m_effect, "ui_KP", "KP_Select");
+
+            UpdateView(_ui.m_listCard.selectedIndex);
+
+            OnCardSelected(cardList[_ui.m_listCard.selectedIndex].id);
+
+        }
+
+        private void OnCardSelected(int cardId)
+        {
+            if (cardId == 0)
+            {
+                return;
+            }
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                FieldWorkDataManager dataManager = FieldWorkDataManager.Instance;
+                dataManager.DressupList[dataManager.SelectThemeIndex].cardId = cardId;
+                ArenaDataManager.Instance.SetMineFightAttr(dataManager.DressupList[dataManager.SelectThemeIndex],
+                    dataManager.ThemeList[dataManager.SelectThemeIndex]);
+                EventAgent.DispatchEvent(ConstMessage.CARD_SELECTED);
+            }
+        }
+
+        private void OnBtnUpCardClikc()
+        {
+            if (cardList.Count == 0) return;
+            cardList[_ui.m_listCard.selectedIndex].fromUIType = typeof(StoryCardChoose).FullName;
+            ViewManager.Show<CardFosterView>(cardList[_ui.m_listCard.selectedIndex]);
+            this.Hide();
+        }
+
+        private void OnBtnComfirmClick()
+        {
+            //搭配时没有词牌特殊处理
+            if (cardList.Count == 0)
+            {
+                if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+                {
+                    ViewManager.Show<FieldWorkDressFightView>(new object[] { FightRoleType.FieldWork, 0, FieldWorkDataManager.Instance.DressupList, "" }, true);
+                }
+                this.Hide();
+                return;
+            }
+
+            int cardId = cardList[_ui.m_listCard.selectedIndex].id;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                if (FieldWorkDataManager.Instance.GetCardAbrasion(cardId) >= 100)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("当前词牌损耗度过高无法使用!");
+                    //return;
+                }
+                FieldWorkDataManager dataManager = FieldWorkDataManager.Instance;
+                dataManager.DressupList[dataManager.SelectThemeIndex].itemList = MyDressUpHelper.dressUpObj.itemList;
+                FieldWorkSproxy.ReqChangeFieldWorkDressupOne(dataManager.SelectThemeIndex, cardId, MyDressUpHelper.dressUpObj.itemList).Coroutine();
+                ViewManager.GoBackFrom(typeof(FieldWorkDressFightView).FullName);
+                PromptController.Instance.ShowFloatTextPrompt("保存成功");
+            }
+            else
+            {
+                
+            }
+
+            this.Hide();
+        }
+
+
+        private void OnBtnCancelClick()
+        {
+            OnCardSelected(_cardId);
+            this.Hide();
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+            _skillId = 0;
+            _ui.m_listCard.ScrollToView(0);
+            Timers.inst.Remove(CheckGuide);
+        }
+
+        private void CheckGuide(object param)
+        {
+            if ((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;
+            if ((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork))
+            {
+                GuideController.TryGuide(_ui.m_listCard, ConstGuideId.FIELD, 10, "战斗结束时使用过的词牌会根据对应的关卡难度形成不同程度损耗关卡的难度合理搭配阵容!", 0);
+                GuideController.TryGuide(_ui.m_btnConfirm, ConstGuideId.FIELD, 11, "确认!");
+            }
+        }
+        private void AddEffect()
+        {
+            //邊框左上角特效
+            _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up");
+
+            //邊框右下角特效
+            _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down");
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkChooseCardView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f2946301ee9cd6346be7c59b91baf437
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 2
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkDressFIghtView.cs

@@ -517,11 +517,10 @@ namespace GFGGame
 
             if (CardDataManager.GetCardListByRoleType(0).Count > 0)
             {
-                ViewManager.Show<StoryCardChoose>(InstanceZonesDataManager.currentScoreType);
+                ViewManager.Show<FieldWorkChooseCardView>(InstanceZonesDataManager.currentScoreType);
             }
             else
             {
-                List<long> fightScoreDatas = ArenaDataManager.Instance.GetFightScoreList(ArenaDataManager.Instance.DressupList);
                 bool result = await FieldWorkSproxy.ReqChangeFieldWorkDressupOne(_dataManager.SelectThemeIndex, 0, MyDressUpHelper.dressUpObj.itemList);
                 if (result)
                 {

+ 18 - 4
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelInfoView.cs

@@ -115,7 +115,21 @@ namespace GFGGame
                 item.data = new ItemView(listItem.m_comItem as GComponent);
             }
             (item.data as ItemView).SetData(itemData);
-            //(item.data as ItemView).ShowTxtCount = false;
+            if(FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(_levelID))
+            {
+                if(FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[_levelID].IsGetReward)
+                {
+                    (item.data as ItemView).ImgHasVisible = true;
+                }
+                else
+                {
+                    (item.data as ItemView).ImgHasVisible = false;
+                }
+            }
+            else
+            {
+                (item.data as ItemView).ImgHasVisible = false;
+            }
             //List<ItemData> bonusOnceData = StoryBonusDataCache.GetBonusData(_levelID).bonusOnce;
             //(item.data as ItemView).ImgShouTongVisable = false;//!InstanceZonesDataManager.CheckLevelPass(_levelID) && index < bonusOnceData.Count;
             UI_ListRewardItem.ProxyEnd();
@@ -183,7 +197,7 @@ namespace GFGGame
             }
             else
             {
-                PromptController.Instance.ShowFloatTextPrompt("请选择搭配!需要卡牌,服装!");
+                PromptController.Instance.ShowFloatTextPrompt("请优先完成三套搭配方案!");
                 FieldWorkDataManager.Instance.SelectThemeIndex = 0;
                 ViewManager.Show<ArenaDressInfoView>(new object[] { FightRoleType.FieldWork, 0, FieldWorkDataManager.Instance.DressupList, "" });
                 this.Hide();
@@ -201,7 +215,7 @@ namespace GFGGame
             }
             else
             {
-                PromptController.Instance.ShowFloatTextPrompt("请选择搭配!需要卡牌,服装");
+                PromptController.Instance.ShowFloatTextPrompt("请优先完成三套搭配方案");
             }
         }
         private void CheckGuide(object param)
@@ -220,7 +234,7 @@ namespace GFGGame
             if (!ViewManager.CheckIsTopView(this.viewCom)) return;
             GuideController.TryGuide(_ui.m_guideTarget.target, ConstGuideId.FIELD, 4, "在这里可以看见过关要求!");
             GuideController.TryGuide(_ui.m_cardList, ConstGuideId.FIELD, 5, "搭配多套服装和词牌可以得到更高的分数!", 0);
-            GuideController.TryGuide(_ui.m_btnStart, ConstGuideId.FIELD, 13, "开始挑战!");
+            GuideController.TryGuide(_ui.m_btnStart, ConstGuideId.FIELD, 14, "开始挑战!");
         }
     }
 }

+ 2 - 2
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelView.cs

@@ -259,8 +259,8 @@ namespace GFGGame
             if (!ViewManager.CheckIsTopView(this.viewCom)) return;
             GuideController.TryGuide(_ui.m_listTag, ConstGuideId.FIELD, 2, "每周主题标签将会获得额外的属性加成!");          
             GuideController.TryGuide(objGuide, ConstGuideId.FIELD, 3, "点击开始挑战!");
-            GuideController.TryGuide(_ui.m_resetBtn.target, ConstGuideId.FIELD, 15, "每周一5:00可以获得一次重置的机会,若遇到困难时可以考虑重置后再试试哦!", -1, true, _ui.target.height - 600);
-            GuideController.TryCompleteGuide(ConstGuideId.FIELD, 15);
+            GuideController.TryGuide(_ui.m_resetBtn.target, ConstGuideId.FIELD, 16, "每周一5:00可以获得一次重置的机会,若遇到困难时可以考虑重置后再试试哦!", -1, true, _ui.target.height - 600);
+            GuideController.TryCompleteGuide(ConstGuideId.FIELD, 16);
         }
     }
 }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundResultView.cs

@@ -161,7 +161,7 @@ namespace GFGGame
         protected override void UpdateToCheckGuide(object param)
         {
             if (!ViewManager.CheckIsTopView(this.viewCom)) return;
-           GuideController.TryGuide(_ui.m_guide.target, ConstGuideId.FIELD, 14, "三轮累计的分数将决定关卡的通关与否!");
+           GuideController.TryGuide(_ui.m_guide.target, ConstGuideId.FIELD, 15, "三轮累计的分数将决定关卡的通关与否!");
         }
     }
 }

+ 2 - 74
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs

@@ -106,31 +106,10 @@ namespace GFGGame
                 //去掉已经在其他主题装配的cardList
                 cardList = cardList.Where(a => !otherThemeCardIds.Contains(a.id)).ToList();
             }
-            else if(InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-            {
-                //其他主题带的cardIds
-                var otherThemeCardIds = new HashSet<int>();
-                for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
-                {
-                    if (FieldWorkDataManager.Instance.SelectThemeIndex == i)
-                    {
-                        continue;
-                    }
-
-                    otherThemeCardIds.Add(FieldWorkDataManager.Instance.DressupList[i].cardId);
-                }
-
-                //去掉已经在其他主题装配的cardList
-                cardList = cardList.Where(a => !otherThemeCardIds.Contains(a.id)).ToList();
-            }
 
             float dressListAllAcore =
                 FightDataManager.Instance.GetDressListAllScore(MyDressUpHelper.dressUpObj.itemList, _scoreType);
             cardList = FightDataManager.Instance.SortCardList(cardList, dressListAllAcore, _scoreType);
-            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-            {
-                cardList = FieldWorkDataManager.Instance.SortCardList(cardList);
-            }
             _ui.m_listCard.numItems = cardList.Count;
             _ui.m_listCard.selectedIndex = 0;
 
@@ -138,10 +117,6 @@ namespace GFGGame
             {
                 _cardId = dataManager.DressupList[dataManager.SelectThemeIndex].cardId;
             }
-            else if(InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-            {
-                _cardId = FieldWorkDataManager.Instance.DressupList[FieldWorkDataManager.Instance.SelectThemeIndex].cardId;
-            }
 
             if (cardList.Count == 0)
             {
@@ -265,16 +240,7 @@ namespace GFGGame
             {
                 item.m_useIcon.visible = false;
             }
-            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-            {
-                item.m_fieldwork.visible = true;
-                item.m_useIcon.visible = false;
-                item.m_wearRateText.text = FieldWorkDataManager.Instance.GetCardAbrasion(cardData.itemCfg.id).ToString() + "%";
-            }
-            else
-            {
-                item.m_fieldwork.visible = false;
-            }
+            item.m_fieldwork.visible = false;
             item.target.asCom.RemoveChild(_comSelected);
             if (_selectedIndex == index) { 
                 item.target.asCom.AddChild(_comSelected);
@@ -288,14 +254,6 @@ namespace GFGGame
         {
             GObject obj = context.data as GObject;
             UI_ListCardFightItem item = UI_ListCardFightItem.Proxy(obj);
-            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-            {
-                if (FieldWorkDataManager.Instance.GetCardAbrasion(cardList[_ui.m_listCard.selectedIndex].id) >= 100)
-                {
-                    PromptController.Instance.ShowFloatTextPrompt("卡牌磨损程度已无法使用!");
-                    return;
-                }
-            }
             item.m_t0.Play();
             EffectUIPool.Recycle(_effectUI3);
             _effectUI3 = null;
@@ -321,14 +279,6 @@ namespace GFGGame
                     dataManager.ThemeList[dataManager.SelectThemeIndex]);
                 EventAgent.DispatchEvent(ConstMessage.CARD_SELECTED);
             }
-            else if(InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-            {
-                FieldWorkDataManager dataManager = FieldWorkDataManager.Instance;
-                dataManager.DressupList[dataManager.SelectThemeIndex].cardId = cardId;
-                ArenaDataManager.Instance.SetMineFightAttr(dataManager.DressupList[dataManager.SelectThemeIndex],
-                    dataManager.ThemeList[dataManager.SelectThemeIndex]);
-                EventAgent.DispatchEvent(ConstMessage.CARD_SELECTED);
-            }
         }
 
         private void OnBtnUpCardClikc()
@@ -348,10 +298,6 @@ namespace GFGGame
                 {
                     ViewManager.Show<ArenaDressInfoView>(new object[] { FightRoleType.MINE, 0, ArenaDataManager.Instance.DressupList, "" }, true);
                 }
-                else if(InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-                {
-                    ViewManager.Show<FieldWorkDressFightView>(new object[] { FightRoleType.FieldWork, 0, FieldWorkDataManager.Instance.DressupList, "" }, true);
-                }
                 this.Hide();
                 return;
             }
@@ -369,17 +315,6 @@ namespace GFGGame
                     ViewManager.Show<ArenaDressInfoView>(new object[] { FightRoleType.MINE, 0, ArenaDataManager.Instance.DressupList, "" },true);
                 }
             }
-            else if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-            {
-                FieldWorkDataManager dataManager = FieldWorkDataManager.Instance;
-                dataManager.DressupList[dataManager.SelectThemeIndex].itemList = MyDressUpHelper.dressUpObj.itemList;
-                FieldWorkSproxy.ReqChangeFieldWorkDressupOne(dataManager.SelectThemeIndex, cardId, MyDressUpHelper.dressUpObj.itemList).Coroutine();
-                if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
-                {
-                    ViewManager.GoBackFrom(typeof(FieldWorkDressFightView).FullName);                  
-                    PromptController.Instance.ShowFloatTextPrompt("保存成功");
-                }
-            }
             else
             {
                 List<PassivitySkillCfg> cfgs = PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardId);
@@ -407,8 +342,7 @@ namespace GFGGame
 
         private void CheckGuide(object param)
         {
-            if (GuideDataManager.IsGuideFinish(ConstGuideId.SKILL_CARD_FIGHT) <= 0
-                || (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork && InstanceZonesDataManager.CheckLevelPass(FieldWorkDataManager.Instance.guideLevelID)))
+            if (GuideDataManager.IsGuideFinish(ConstGuideId.SKILL_CARD_FIGHT) <= 0)
             {
                 UpdateToCheckGuide(null);
             }
@@ -426,12 +360,6 @@ namespace GFGGame
                 _ui.m_btnCancel.y + _ui.m_btnCancel.height);
             GuideController.TryGuide(_ui.m_listCard, ConstGuideId.SKILL_CARD_FIGHT, 2, "选择一张合适的词牌,增加过关战斗力。", 0);
             GuideController.TryCompleteGuide(ConstGuideId.SKILL_CARD_FIGHT, 2);
-
-            if ((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork))
-            {
-                GuideController.TryGuide(_ui.m_listCard, ConstGuideId.FIELD, 10, "战斗结束时使用过的词牌会根据对应的关卡难度形成不同程度损耗关卡的难度合理搭配阵容!", 0);
-                GuideController.TryGuide(_ui.m_btnConfirm, ConstGuideId.FIELD, 11, "确认!");
-            }
         }
         private void AddEffect()
         {