| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 | using System;using System.Collections.Generic;using ET;namespace GFGGame{    public class NoticeFieldWorkChange : AMHandler<SC_RankChange>    {        protected override async ETTask Run(Session session, SC_RankChange message)        {            await ETTask.CompletedTask;        }    }    public static class FieldWorkSproxy    {        //获取爬塔信息        public static async ETTask ReqFieldWorkInfos()        {            S2C_GetGetCimbingTowerInfo response = null;            response = (S2C_GetGetCimbingTowerInfo)await MessageHelper.SendToServer(new C2S_GetCimbingTowerInfo());            if (response != null)            {                if (response.Error == ErrorCode.ERR_Success)                {                    FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;                    FieldWorkDataManager.Instance.Tag = response.WeekTags ;                    FieldWorkDataManager.Instance.DressupList.Clear();                    FieldWorkDataManager.Instance.HistoryDressupList = response.WeekUserItems;                    FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;                    FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Clear();                    foreach (var item in response.CimbingTowerLevelInfoList)                    {                        FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId,item);                    }                    AddDressup(response.EquipAIds, 0, 0);                    AddDressup(response.EquipBIds, 0, 1);                    AddDressup(response.EquipCIds, 0, 2);                    EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);                }            }        }        public static void AddDressup(List<int> itemList,int scoreType,int i)        {            FightData roleData = GetFightRoleData(itemList, FieldWorkDataManager.Instance.roleInfo, scoreType);            roleData.leagueSkillScore = FieldWorkDataManager.Instance.GetAllSkillScore(scoreType);            FightDataManager.Instance.SetItemScoreList(roleData);            ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);            ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData);            FieldWorkDataManager.Instance.DressupList.Add(roleData);        }        //更换搭配        public static async ETTask<bool> ReqChangeFieldWorkDressup()        {            List<List<int>> dress = new List<List<int>>();            dress = FieldWorkDataManager.Instance.GetDressAndCard();            S2C_CimbingTowerSaveCollocation response = null;            response = (S2C_CimbingTowerSaveCollocation)await MessageHelper.SendToServer(new C2S_CimbingTowerSaveCollocation()            {                EquipAIds = dress[0],                EquipBIds = dress[1],                EquipCIds = dress[2],            }) ;            if (response != null)            {                if (response.Error == ErrorCode.ERR_Success)                {                    return true;                }            }            return false;        }        //更换单个搭配        public static async ETTask<bool> ReqChangeFieldWorkDressupOne(int index,int cardId ,List<int> dressList)        {            List<int> dress = new List<int>();            dress = dressList;            dress.Add(cardId);            List<List<int>> dressAll = new List<List<int>>();            dressAll = FieldWorkDataManager.Instance.GetDressAndCard();            dressAll[index] = dress;            S2C_CimbingTowerSaveCollocation response = null;            response = (S2C_CimbingTowerSaveCollocation)await MessageHelper.SendToServer(new C2S_CimbingTowerSaveCollocation()            {                EquipAIds = dressAll[0],                EquipBIds = dressAll[1],                EquipCIds = dressAll[2],            });            if (response != null)            {                if (response.Error == ErrorCode.ERR_Success)                {                    return true;                }            }            return false;        }        //关卡挑战        public static async ETTask<bool> ReqFieldWorkFight(int levelId)        {            List<List<int>> dress = new List<List<int>>();            dress = FieldWorkDataManager.Instance.GetDressAndCard();            S2C_CimbingTowerFightLevel response = null;            response = (S2C_CimbingTowerFightLevel)await MessageHelper.SendToServer(new C2S_CimbingTowerFightLevel()            {                LevelId = levelId,                FightScoreList = FieldWorkDataManager.Instance.myScore,                EquipAIds = dress[0],                EquipBIds = dress[1],                EquipCIds = dress[2],            }) ;            if (response != null)            {                FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;                if (response.Error == ErrorCode.ERR_Success)                {                    FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;                    FieldWorkDataManager.Instance.HistoryDressupList = response.WeekUserItems;                    if (response.CimbingTowerLevelInfo.IsPass)                    {                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))                        {                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[response.CimbingTowerLevelInfo.LevelId] = response.CimbingTowerLevelInfo;                        }                        else                        {                            //PromptController.Instance.ShowFloatTextPrompt("已通过,自动清除搭配!");                            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++)                       {                            FieldWorkDataManager.Instance.DressupList[i].itemList.Clear();                            FieldWorkDataManager.Instance.DressupList[i].cardId = 0;                            isDelete = true;                                               }                        FieldWorkDataManager.Instance.BonusList = response.BonusList;                        EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);                        return true;                    }                    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;                    }                }                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;        }        //一键跳过        public static async ETTask<bool> ReqFieldWorkOneClickPass()        {            S2C_CimbingTowerOneClickPass response = null;            response = (S2C_CimbingTowerOneClickPass)await MessageHelper.SendToServer(new C2S_CimbingTowerOneClickPass(){ });            if (response != null)            {                if (response.Error == ErrorCode.ERR_Success)                {                    FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;                    FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Clear();                    foreach (var item in response.CimbingTowerLevelInfoList)                    {                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(item.LevelId))                        {                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[item.LevelId] = item;                        }                        else                        {                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId, item);                        }                    }                    BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));                    EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);                    return true;                }            }            return false;        }        //重置        public static async ETTask<bool> ReqFieldWorkReset()        {            S2C_CimbingTowerResetLevel response = null;            response = (S2C_CimbingTowerResetLevel)await MessageHelper.SendToServer(new C2S_CimbingTowerResetLevel(){});            if (response != null)            {                if (response.Error == ErrorCode.ERR_Success)                {                    FieldWorkDataManager.Instance.HistoryDressupList.Clear();                    FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;                    foreach (var item in response.CimbingTowerLevelInfoList)                    {                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(item.LevelId))                        {                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[item.LevelId] = item;                        }                        else                        {                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId, item);                        }                    }                    for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)                    {                        FieldWorkDataManager.Instance.DressupList[i].itemList.Clear();                        FieldWorkDataManager.Instance.DressupList[i].cardId = 0;                    }                    EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);                    return true;                }            }            return false;        }        private static FightData GetFightRoleData(List<int> dressupProto, OtherRoleInfoData roleInfo, int scoreType)        {            FightData fightData = new FightData();            fightData.name = roleInfo.roleName;            fightData.scoreType = scoreType;            fightData.baseScore = RoleLevelCfgArray.Instance.GetCfg(roleInfo.roleLv).baseScore;            fightData.tags = FieldWorkDataManager.Instance.Tag.ToArray();            fightData.type = FightTargetType.PLAYER;            fightData.headId = roleInfo.headId;            List<int> dressList = new List<int>();            foreach(var item in dressupProto)            {                ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(item);                if(itemCfg != null && itemCfg.itemType == ConstItemType.DRESS_UP)                {                    dressList.Add(item);                }                else if(itemCfg != null && itemCfg.itemType == ConstItemType.CARD)                {                    fightData.cardId = item;                }            }            fightData.itemList = dressList;            return fightData;        }    }}
 |