少年修仙传客户端代码仓库
hch
2020-10-19 b0a0946c12aca2aa96db21cb28bdd97c44dbdcab
4784 【BT】坐骑灵宠魂石优化一键使用全部
6个文件已修改
495 ■■■■■ 已修改文件
System/KnapSack/Logic/PackModel.cs 361 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/SinglePack.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Mount/MountModel.cs 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Mount/MountStoneTipsWin.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Mount/MountWin.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Pet/PetStoneTipsWin.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackModel.cs
@@ -23,12 +23,12 @@
        Dictionary<int, List<int>> sharedUseCountItemDict { get; set; }
        bool isUpdatePlayerLv = false;
        AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
        ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        public int lsItemID = 150; //可兑换的灵石物品ID
        int lsItemCnt = int.Parse(FuncConfigConfig.Get("LingshiShowCount").Numerical1);
        AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
        ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        public int lsItemID = 150; //可兑换的灵石物品ID
        int lsItemCnt = int.Parse(FuncConfigConfig.Get("LingshiShowCount").Numerical1);
        UIEffect lingshiEffect;  //灵石特效
        public override void Init()
        {
@@ -99,34 +99,34 @@
                        idlist.Add(int.Parse(id.ToString()));
                    }
                }
            }
            ParseItemCount();
            }
            ParseItemCount();
        }
        public Dictionary<int, string> textCountShow = new Dictionary<int, string>();
        public void ParseItemCount()
        {
            var textConfig = FuncConfigConfig.Get("ItemCountShow");
            var json = JsonMapper.ToObject(textConfig.Numerical1);
            foreach (var key in json.Keys)
            {
                var itemID = int.Parse(key);
                textCountShow[itemID] = json[key].ToString();
            }
        public void ParseItemCount()
        {
            var textConfig = FuncConfigConfig.Get("ItemCountShow");
            var json = JsonMapper.ToObject(textConfig.Numerical1);
            foreach (var key in json.Keys)
            {
                var itemID = int.Parse(key);
                textCountShow[itemID] = json[key].ToString();
            }
        }
        private void OnFuncStateChangeEvent(int id)
        {
            if (id == (int)FuncOpenEnum.EquipDecompose)
            {
                EquipDecomRedCtrl();
            }
        }
        private void OnFuncStateChangeEvent(int id)
        {
            if (id == (int)FuncOpenEnum.EquipDecompose)
            {
                EquipDecomRedCtrl();
            }
        }
        public void OnBeforePlayerDataInitialize()
        {
            GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
@@ -168,29 +168,29 @@
            PlayerDatas.Instance.playerDataRefreshEvent += UpdatePlayerLv;
            isUpdatePlayerLv = true;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        }
        private void RefreshSysInfo(string key, ArrayList infolist)
        {
            if (key != "GetMoney") return;
            var type = 0;
            int.TryParse(infolist[0].ToString(), out type);
            if (type != 2) return;
            Vector3 pos = new Vector3(-100, 0, 0);
            Vector3 rot = new Vector3(0, 0, 0);
            if (!WindowCenter.Instance.IsOpen<MainInterfaceWin>())
            {
                pos = new Vector3(150, 50, 0);
                rot = new Vector3(180, 180, 0);
            }
            lingshiEffect = EffectMgr.Instance.PlayUIEffect(1158, 2500, WindowCenter.Instance.uiRoot.tipsCanvas, pos, rot, false);
        }
        private void RefreshSysInfo(string key, ArrayList infolist)
        {
            if (key != "GetMoney") return;
            var type = 0;
            int.TryParse(infolist[0].ToString(), out type);
            if (type != 2) return;
            Vector3 pos = new Vector3(-100, 0, 0);
            Vector3 rot = new Vector3(0, 0, 0);
            if (!WindowCenter.Instance.IsOpen<MainInterfaceWin>())
            {
                pos = new Vector3(150, 50, 0);
                rot = new Vector3(180, 180, 0);
            }
            lingshiEffect = EffectMgr.Instance.PlayUIEffect(1158, 2500, WindowCenter.Instance.uiRoot.tipsCanvas, pos, rot, false);
        }
        public override void UnInit()
        {
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            SysNotifyMgr.Instance.sysNotifyEvent -= RefreshSysInfo;
        }
@@ -252,24 +252,24 @@
            if (!playerPackDict.ContainsKey(type))
            {
                playerPackDict.Add(type, new SinglePack(type));
            }
            var showNewItem = false;
            if (itemGUIDDict.ContainsKey(serverItem.ItemGUID))
            {
                var prePack = itemGUIDDict[serverItem.ItemGUID].packType;
                var preAuction = itemGUIDDict[serverItem.ItemGUID].isAuction;
                var nowPackType = type;
                var nowAcution = serverItem.IsBind == 1;
                showNewItem = preAuction != nowAcution || prePack != nowPackType;
            }
            else
            {
                showNewItem = true;
            }
            }
            var showNewItem = false;
            if (itemGUIDDict.ContainsKey(serverItem.ItemGUID))
            {
                var prePack = itemGUIDDict[serverItem.ItemGUID].packType;
                var preAuction = itemGUIDDict[serverItem.ItemGUID].isAuction;
                var nowPackType = type;
                var nowAcution = serverItem.IsBind == 1;
                showNewItem = preAuction != nowAcution || prePack != nowPackType;
            }
            else
            {
                showNewItem = true;
            }
            var itemInfo = new ItemInfo(serverItem);
            var item = playerPackDict[type].UpdateItem(itemInfo);
            var item = playerPackDict[type].UpdateItem(itemInfo);
            AddItemGUIDDict(item, showNewItem);
            if (refreshItemCountEvent != null)
@@ -282,12 +282,12 @@
                itemCntAddEvent(type, itemInfo.index, itemInfo.itemId);
            }
            if (type == PackType.Equip)
            {
                if (ItemLogicUtility.Instance.IsRealmEquip(itemInfo.itemId))
                {
                    ItemOperateUtility.Instance.ShowPutOnNewEquipRemind(itemInfo.itemId);
                }
            if (type == PackType.Equip)
            {
                if (ItemLogicUtility.Instance.IsRealmEquip(itemInfo.itemId))
                {
                    ItemOperateUtility.Instance.ShowPutOnNewEquipRemind(itemInfo.itemId);
                }
            }
            UpdatePackRedpoint(type);
@@ -468,8 +468,8 @@
        }
        void AddItemGUIDDict(ItemModel itemModel, bool showNewItem)
        {
            itemGUIDDict[itemModel.guid] = itemModel;
        {
            itemGUIDDict[itemModel.guid] = itemModel;
            GetItemEventCtrl(itemModel, showNewItem);
        }
@@ -532,34 +532,34 @@
                    refreshItemSumUseCountEvent(itemId);
                }
            }
        }
        }
        #endregion
        #region 玩家装备特殊逻辑
        public Dictionary<int, Dictionary<int, int>> spiritWeaponPathIds { get; private set; }
        public Dictionary<int, int> wingsGetPathIdDict { get; private set; }
        public Dictionary<int, List<int>> dungeonUseDict { get; private set; }
        void ParseConfig()
        {
            FuncConfigConfig funcConfig = FuncConfigConfig.Get("WingYuPeiHQTJ");
            spiritWeaponPathIds = new Dictionary<int, Dictionary<int, int>>();
            var splits = funcConfig.Numerical3.Split('|');
            for (int i = 0; i < splits.Length; i++)
            {
                var tempString = splits[i];
                var matches = Regex.Matches(tempString.Trim(), "\\d+");
                var equipPlace = int.Parse(matches[0].Value);
                var job = int.Parse(matches[1].Value);
                var itemId = int.Parse(matches[2].Value);
                if (!spiritWeaponPathIds.ContainsKey(equipPlace))
                {
                    spiritWeaponPathIds[equipPlace] = new Dictionary<int, int>();
                }
                spiritWeaponPathIds[equipPlace][job] = itemId;
            }
            FuncConfigConfig funcConfig = FuncConfigConfig.Get("WingYuPeiHQTJ");
            spiritWeaponPathIds = new Dictionary<int, Dictionary<int, int>>();
            var splits = funcConfig.Numerical3.Split('|');
            for (int i = 0; i < splits.Length; i++)
            {
                var tempString = splits[i];
                var matches = Regex.Matches(tempString.Trim(), "\\d+");
                var equipPlace = int.Parse(matches[0].Value);
                var job = int.Parse(matches[1].Value);
                var itemId = int.Parse(matches[2].Value);
                if (!spiritWeaponPathIds.ContainsKey(equipPlace))
                {
                    spiritWeaponPathIds[equipPlace] = new Dictionary<int, int>();
                }
                spiritWeaponPathIds[equipPlace][job] = itemId;
            }
            FuncConfigConfig copyItemBulletWindow = FuncConfigConfig.Get("CopyItemBulletWindow");
            JsonData copyWinData = JsonMapper.ToObject(copyItemBulletWindow.Numerical1);
@@ -584,13 +584,13 @@
            int playerJob = PlayerDatas.Instance.baseData.Job;
            switch ((RoleEquipType)equipPlace)
            {
                case RoleEquipType.Guard:
                case RoleEquipType.Guard:
                case RoleEquipType.PeerlessWeapon1:
                case RoleEquipType.PeerlessWeapon2:
                case RoleEquipType.Wing:
                case RoleEquipType.Wing:
                    return spiritWeaponPathIds[equipPlace][playerJob];
                default:
                    return 0;
                default:
                    return 0;
            }
        }
@@ -705,6 +705,13 @@
            return itemModel;
        }
        /// <summary>
        /// 获取指定背包内 指定ID的所有物品
        /// </summary>
        /// <param name="type"></param>
        /// <param name="id"></param>
        /// <param name="includeAuction"></param>
        /// <returns></returns>
        public List<ItemModel> GetItemsById(PackType type, int id, bool includeAuction = true)
        {
            if (playerPackDict.ContainsKey(type))
@@ -718,6 +725,26 @@
            }
        }
        /// <summary>
        /// 获取指定背包内指定ID的一个物品
        /// </summary>
        /// <param name="type"></param>
        /// <param name="id"></param>
        /// <param name="includeAuction"></param>
        /// <returns></returns>
        public ItemModel GetItemByID(PackType type, int id, bool includeAuction = true)
        {
            if (playerPackDict.ContainsKey(type))
            {
                var singlePack = playerPackDict[type];
                return singlePack.GetItemByID(id, includeAuction);
            }
            else
            {
                return null;
            }
        }
        public List<ItemModel> GetItems(PackType packType, SinglePack.FilterParams param)
        {
            if (playerPackDict.ContainsKey(packType))
@@ -734,12 +761,12 @@
        {
            string guid = string.Empty;
            foreach (var key in itemGUIDDict.Keys)
            {
                if (!includeAuction && itemGUIDDict[key].isAuction)
                {
                    continue;
                }
            {
                if (!includeAuction && itemGUIDDict[key].isAuction)
                {
                    continue;
                }
                if (itemGUIDDict[key].itemId == itemId)
                {
                    guid = key;
@@ -858,8 +885,8 @@
        #region 红点逻辑判断
        const int ITEMPACK_REDKEY = 102011003;
        Redpoint redpointItemPack = new Redpoint(MainRedDot.RedPoint_BagFuncKey, ITEMPACK_REDKEY);
        Redpoint redpointItemPack = new Redpoint(MainRedDot.RedPoint_BagFuncKey, ITEMPACK_REDKEY);
        const int LS_REDKEY = 102011015;
        Redpoint redpointLS = new Redpoint(MainRedDot.RedPoint_BagFuncKey, LS_REDKEY);
@@ -874,13 +901,13 @@
            if (itemID != lsItemID) return;
            if (GetItemCountByID(PackType.Item, lsItemID) < lsItemCnt)
            {
                redpointLS.state = RedPointState.None;
            if (GetItemCountByID(PackType.Item, lsItemID) < lsItemCnt)
            {
                redpointLS.state = RedPointState.None;
            }
            else
            {
                redpointLS.state = RedPointState.Simple;
            else
            {
                redpointLS.state = RedPointState.Simple;
            }
        }
@@ -905,13 +932,13 @@
                    {
                        redpointItemPack.state = RedPointState.None;
                    }
                    if (GetItemCountByID(PackType.Item, lsItemID) < lsItemCnt)
                    {
                        redpointLS.state = RedPointState.None;
                    if (GetItemCountByID(PackType.Item, lsItemID) < lsItemCnt)
                    {
                        redpointLS.state = RedPointState.None;
                    }
                    else
                    {
                        redpointLS.state = RedPointState.Simple;
                    else
                    {
                        redpointLS.state = RedPointState.Simple;
                    }
                    break;
                case PackType.Warehouse:
@@ -934,18 +961,18 @@
        public Redpoint redpointEquipDecom = new Redpoint(MainRedDot.RedPoint_MainPackKey, EquipDecompose_RedKey);
        public void EquipDecomRedCtrl()
        {
            if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.EquipDecompose))
            {
                return;
            if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.EquipDecompose))
            {
                return;
            }
            if (PlayerDatas.Instance.baseData.LV < devourRedpointLevel)
            {
                redpointEquipDecom.state = RedPointState.None;
                return;
            if (PlayerDatas.Instance.baseData.LV < devourRedpointLevel)
            {
                redpointEquipDecom.state = RedPointState.None;
                return;
            }
            var canDevourItems = GetCanDevourModellist();
            var canDevourItems = GetCanDevourModellist();
            if (canDevourItems != null && canDevourItems.Count >= minDevourEquipNum)
            {
                redpointEquipDecom.state = RedPointState.Simple;
@@ -1152,18 +1179,18 @@
        public int GetBetterEquipCount(List<ItemModel> itemModels)
        {
            if (itemModels.IsNullOrEmpty())
            {
                return 0;
            }
            if (itemModels.IsNullOrEmpty())
            {
                return 0;
            }
            var count = 0;
            foreach (var item in itemModels)
            {
            foreach (var item in itemModels)
            {
                if (ItemLogicUtility.Instance.IsFightUp(item.itemId, item.score) == 1)
                {
                {
                    count += item.count;
                }
                }
            }
            return count;
        }
@@ -1410,13 +1437,13 @@
        public void SendEquipdevourQuest(bool auto)
        {
            List<ItemModel> items = null;
            if (auto)
            {
                items = GetCanDevourModellist();
            }
            else
            {
                items = selectDevourlist;
            if (auto)
            {
                items = GetCanDevourModellist();
            }
            else
            {
                items = selectDevourlist;
            }
            if (items == null || items.Count < minDecomposeNum || !ItemLogicUtility.Instance.isPackResetOk || SettingEffectMgr.Instance.isStartDecompose) return;
@@ -1710,35 +1737,35 @@
                return true;
            }
            return false;
        }
        }
        #endregion
        //获取背包中的一件可拍卖物品 优先其他职业
        public string GetAuctionEquip()
        {
            var itemPackage = GetSinglePack(PackType.Item);
            var allItems = itemPackage.GetAllItems();
            var guid = string.Empty;
            List<string> guidList = new List<string>();
            foreach (var item in allItems.Values)
            {
                var isAuction = item.isAuction;
                if (isAuction && ItemLogicUtility.Instance.IsRealmEquip(item.itemId))
                {
                    if (!ItemLogicUtility.Instance.IsJobCompatibleItem(item.itemId))
                    {
                        return item.guid;
                    }
                    else
                    {
                        if (guid != string.Empty)
                            continue;
                        guid = item.guid;
                    }
                }
            }
            return guid;
        //获取背包中的一件可拍卖物品 优先其他职业
        public string GetAuctionEquip()
        {
            var itemPackage = GetSinglePack(PackType.Item);
            var allItems = itemPackage.GetAllItems();
            var guid = string.Empty;
            List<string> guidList = new List<string>();
            foreach (var item in allItems.Values)
            {
                var isAuction = item.isAuction;
                if (isAuction && ItemLogicUtility.Instance.IsRealmEquip(item.itemId))
                {
                    if (!ItemLogicUtility.Instance.IsJobCompatibleItem(item.itemId))
                    {
                        return item.guid;
                    }
                    else
                    {
                        if (guid != string.Empty)
                            continue;
                        guid = item.guid;
                    }
                }
            }
            return guid;
        }
    }
}
System/KnapSack/Logic/SinglePack.cs
@@ -57,6 +57,36 @@
            return items;
        }
        /// <summary>
        /// 获取指定ID的一个物品
        /// </summary>
        /// <param name="itemId"></param>
        /// <param name="includeAuction"></param>
        /// <returns></returns>
        public ItemModel GetItemByID(int itemId, bool includeAuction = true)
        {
            foreach (var item in items.Values)
            {
                if (!includeAuction && item.isAuction)
                {
                    continue;
                }
                if (item.itemId == itemId)
                {
                    return item;
                }
            }
            return null;
        }
        /// <summary>
        /// 获取包内的指定ID的所有物品
        /// </summary>
        /// <param name="itemId"></param>
        /// <param name="includeAuction"></param>
        /// <returns></returns>
        public List<ItemModel> GetItemsById(int itemId, bool includeAuction = true)
        {
            var list = new List<ItemModel>();
System/Mount/MountModel.cs
@@ -302,8 +302,8 @@
    //}
    //private const int Redpoint_key1 = 1050101;
    //public Redpoint redPointStre1 = new Redpoint(MainRedDot.RedPoint_MountPackKey, Redpoint_key1);//坐骑外观
    //private const int Redpoint_key2 = 1050102;
    //public Redpoint redPointStre2 = new Redpoint(MainRedDot.RedPoint_MountPackKey, Redpoint_key2);//坐骑兽魂
    private const int Redpoint_key2 = 105010001;
    public Redpoint redPointStre2 = new Redpoint(MainRedDot.RedPoint_MountPackKey, Redpoint_key2);//坐骑兽魂
    public event Action HorseExpItemRefresh;
    private void OnItemRefreshEvent(PackType type, int index, int id)
    {
@@ -369,30 +369,28 @@
    private void MountStoneRed()//坐骑魂石红点
    {
        //暂时关闭
        return;
        //redPointStre2.state = RedPointState.None;
        //if (!FuncOpen.Instance.IsFuncOpen(8))
        //    return;
        //int type = 0;
        //foreach (var key in _DicMountItem.Keys)
        //{
        //    var AttrFruit = AttrFruitConfig.Get(key);
        //    if (AttrFruit == null)
        //    {
        //        continue;
        //    }
        //    if (_DicMountItem[key] >= AttrFruit.basicUseLimit)
        //    {
        //        continue;
        //    }
        //    type += playerPack.GetItemCountByID(PackType.Item, key);
        //}
        //if (type > 0)
        //{
        //    redPointStre2.state = RedPointState.Simple;
        //    return;
        //}
        redPointStre2.state = RedPointState.None;
        if (!FuncOpen.Instance.IsFuncOpen(8))
           return;
        int type = 0;
        foreach (var key in _DicMountItem.Keys)
        {
           var AttrFruit = AttrFruitConfig.Get(key);
           if (AttrFruit == null)
           {
               continue;
           }
           if (_DicMountItem[key] >= AttrFruit.basicUseLimit)
           {
               continue;
           }
           type += playerPack.GetItemCountByID(PackType.Item, key);
        }
        if (type > 0)
        {
           redPointStre2.state = RedPointState.Simple;
           return;
        }
    }
    private void MountDanRed()//关于坐骑丹红点
System/Mount/MountStoneTipsWin.cs
@@ -151,16 +151,33 @@
                _MountStoneItem.UserBtn.gameObject.SetActive(false);
            else
                _MountStoneItem.UserBtn.gameObject.SetActive(true);
            int useCnt = 0;
            var item = playerPack.GetItemByID(PackType.Item, _id);
            if (item != null)
            {
                useCnt = Math.Min(_maxuse - tag_Item[_id], item.count);
            }
            _MountStoneItem.UserBtn.RemoveAllListeners();
            _MountStoneItem.UserBtn.AddListener(() =>
            {
                C0702_tagCUseItem _tagUse = new C0702_tagCUseItem();
                DebugEx.LogWarning(bagIndex[0]);
                _tagUse.ItemIndex = (byte)bagIndex[0];
                GameNetSystem.Instance.SendInfo(_tagUse);
                if (item == null || useCnt < 0)
                {
                    return;
                }
                ItemOperateUtility.Instance.UseItem(item.guid, useCnt);
            });
        }
        public void UseItemInPack(int itemId)
        {
            var item = playerPack.GetItemByID(PackType.Item, itemId);
            if (item != null)
            {
                ItemOperateUtility.Instance.UseItem(item.guid, item.count);
            }
        }
        void SpiritBeastsText(string _id, Text _text, int _max)//兽魂文本的判定赋值
        {
            Dictionary<int, int> _dic = new Dictionary<int, int>();
System/Mount/MountWin.cs
@@ -27,6 +27,7 @@
        [SerializeField] Text HorseStateText; //骑乘中或未激活
        [SerializeField] Button Left;
        [SerializeField] Button Right;
        [SerializeField] Button MountHunBtn;//坐骑兽魂按钮
        [SerializeField] UIEffect m_UieffectLVUp;//坐骑升级特效
        [SerializeField] PositionTween m_PositionTweenLVUp;
@@ -63,6 +64,7 @@
        protected override void AddListeners()
        {
            MountHunBtn.AddListener(OnClickMountHunButton);
            ChangeLookLib.SetListener(()=> {
                WindowCenter.Instance.Open<MountSkinWin>();
                WindowCenter.Instance.Close<PetWin>();
@@ -217,6 +219,11 @@
            UseItem.countText.text = number.ToString();
        }
        private void OnClickMountHunButton()
        {
            StopAuto();
            WindowCenter.Instance.Open<MountStoneTipsWin>();
        }
        private void ShowButton()
        {
System/Pet/PetStoneTipsWin.cs
@@ -158,15 +158,25 @@
            {
                ItemTipUtility.Show(_item.ID);
            });
            //一次使用物品多个,不算多格子
            int useCnt = 0;
            var item = playerPack.GetItemByID(PackType.Item, _id);
            if (item != null)
            {
                useCnt = Math.Min(_maxuse - tag_Item[_id], item.count);
            }
            _MountStoneItem.UserBtn.RemoveAllListeners();
            _MountStoneItem.UserBtn.AddListener(() =>
            {
                C0702_tagCUseItem _tagUse = new C0702_tagCUseItem();
                DebugEx.LogWarning(bagIndex[0]);
                _tagUse.ItemIndex = (byte)bagIndex[0];
                GameNetSystem.Instance.SendInfo(_tagUse);
                if (item == null || useCnt < 0)
                {
                    return;
                }
                ItemOperateUtility.Instance.UseItem(item.guid, useCnt);
            });
        }
        void CloseButtonHS()//灵兽魂石关闭