少年修仙传客户端代码仓库
hch
2025-03-16 642d09ae6081455d1610eb554f5c3faba257e9cd
10417 【英文】【bt】【越南】【砍树】TIP优化
2个文件已添加
12个文件已修改
347 ■■■■ 已修改文件
Core/GameEngine/Model/Config/ChestsAwardConfig.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/ChestsAwardConfig.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LogicProject/System/TreasurePavilion/TreasurePavilionModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LogicProject/System/TreasurePavilion/TreasurePavilionTipWin.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/ItemBoxTipWin.cs 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/ItemBoxTipWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/ItemTipUtility.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/ItemTipWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/TipItemDescriptionWidget.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemOperateUtility.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/ChooseItemsCell.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/Window.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ZhanLingH/ZhanLingHActBuyWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ZhanLingH/ZhanLingHBuyWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/ChestsAwardConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           2024年5月17日
//    [  Date ]:           2025年3月14日
//--------------------------------------------------------
using System.Collections.Generic;
@@ -17,6 +17,9 @@
    public readonly int BoxID;
    public readonly int BoxLV;
    public readonly string SelectList;
    public readonly string FixedItem;
    public readonly string Probability1;
    public readonly string Probability2;
    public readonly string JobItem;
    public ChestsAwardConfig()
@@ -37,7 +40,13 @@
            SelectList = tables[3];
            JobItem = tables[4];
            FixedItem = tables[4];
            Probability1 = tables[5];
            Probability2 = tables[6];
            JobItem = tables[7];
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/TelPartialConfig/ChestsAwardConfig.cs
@@ -58,6 +58,11 @@
        chestAwardDict.TryGetValue(key, out chestsAwardConfig);
        return chestsAwardConfig;
    }
    public static bool IsBox(int itemID)
    {
        return chestIdDict.ContainsKey(itemID);
    }
}
LogicProject/System/TreasurePavilion/TreasurePavilionModel.cs
@@ -18,6 +18,7 @@
    public event Action UpdateGubaoEvent;
    public Dictionary<int, Dictionary<int, int[]>> probabilityDisplayDict = new Dictionary<int, Dictionary<int, int[]>>();
    public int selectGubao; //从藏宝阁选中
    public int showTipFromPiece = 0; //0 古宝 其他数字为古宝碎片ID
    public int waitActiveGubao; //激活等待显示的古宝
    public int upgradeGubao;    //当前升级升星的古宝
    public int upgradeFuncOrder = 0;//0升星1升级
@@ -222,6 +223,7 @@
        gubaoAwardDict.Clear();
        gubaoItemCountDict.Clear();
        getA3CBCount = 0;
        showTipFromPiece = 0;
    }
LogicProject/System/TreasurePavilion/TreasurePavilionTipWin.cs
@@ -9,7 +9,7 @@
using UnityEngine;
using LitJson;
//显示古宝 或者 古宝碎片的详细信息 TreasurePavilionModel.Instance.showTipFromPiece
public class TreasurePavilionTipWin : ILWindow
{
    Text name;
@@ -144,7 +144,12 @@
        var gubaoInfo = TreasurePavilionModel.Instance.TryGetGubaoInfo(gubaoID);
        var config = ILGubaoConfig.Get(gubaoID);
        Debug.LogFormat("古宝ID:{0} 物品ID:{1}", gubaoID, config.UnlockItemID);
        if (gubaoInfo.Count > 0 && gubaoInfo[1] > 0)
        if (TreasurePavilionModel.Instance.showTipFromPiece != 0)
        {
            name.text = ItemConfig.Get(TreasurePavilionModel.Instance.showTipFromPiece).ItemName;
        }
        else if (gubaoInfo.Count > 0 && gubaoInfo[1] > 0)
        {
            name.text = config.Name + "+" + gubaoInfo[1];
        }
@@ -153,8 +158,11 @@
            name.text = config.Name;
        }
        name.color = UIHelper.GetUIColor(config.GubaoQuality);
        gubaoImg.SetSprite(config.Icon);
        if (TreasurePavilionModel.Instance.showTipFromPiece == 0)
            gubaoImg.SetSprite(config.Icon);
        else
            gubaoImg.SetSprite(ItemConfig.Get(TreasurePavilionModel.Instance.showTipFromPiece).IconKey);
        var maxStar = ILGubaoStarConfig.GetMaxStar(gubaoID);
        for (int i = 0; i < starObjs.Count; i++)
        {
@@ -180,7 +188,14 @@
        var score = TreasurePavilionModel.Instance.GetGubaoScore(gubaoID);
        scoreText.SetActiveIL(score != 0);
        scoreText.text = Language.Get("DogzFunc106", score);
        descText.text = config.Desc;
        if (TreasurePavilionModel.Instance.showTipFromPiece == 0)
            descText.text = config.Desc;
        else
        {
            var itemConfig = ItemConfig.Get(TreasurePavilionModel.Instance.showTipFromPiece);
            descText.text = StringUtility.Contact(Language.Get("KnapS110"), " ", itemConfig.UseLV, "</r>", itemConfig.Description, "</r>", config.Desc);
        }
        var showLV = gubaoInfo.Count == 0 ? 1 : gubaoInfo[1];   //未激活显示0级
        var lvConfig = ILGubaoLVConfig.Get(ILGubaoLVConfig.GetGubaoQualityLVIndex(config.GubaoType, config.GubaoQuality, showLV));
        for (int i = 0; i < baseAttrList.Count; i++)
@@ -301,6 +316,7 @@
    {
        scroller.OnRefreshCell -= OnRefreshCell;
        scroller1.OnRefreshCell -= OnRefreshCell1;
        TreasurePavilionModel.Instance.showTipFromPiece = 0;
    }
    void OnRefreshCell(ScrollerDataType type, CellView cell)
System/ItemTip/ItemBoxTipWin.cs
New file
@@ -0,0 +1,162 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, March 12, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using LitJson;
using System.Linq;
namespace vnxbqy.UI
{
    public class ItemBoxTipWin : ItemTipWin
    {
        [SerializeField] RectTransform boxItemsObj;
        #region Built-in
        protected override void OnActived()
        {
            base.OnActived();
            StartCoroutine(Co_DelayOneFrame());
        }
        #endregion
        IEnumerator Co_DelayOneFrame()
        {
            this.transform.localScale = new Vector3(0, 1, 0);
            DisplayerBoxItems();
            yield return null;
            yield return null;
            this.transform.localScale = Vector3.one;
        }
        //显示宝箱中的物品
        void DisplayerBoxItems()
        {
            var baseInfo = ItemTipUtility.mainTipData.baseInfo;
            if (!ChestsAwardConfig.IsBox(baseInfo.itemId))
            {
                boxItemsObj.SetActive(false);
                return;
            }
            boxItemsObj.SetActive(true);
            //删除boxItemsObj的所有子物体
            for (int i = 0; i < boxItemsObj.childCount; i++)
            {
                Destroy(boxItemsObj.GetChild(i).gameObject);
            }
            var config = ChestsAwardConfig.GetChestsAwardByID(baseInfo.itemId);
            int jobIndex = PlayerDatas.Instance.baseData.Job - 1;
            //优先判断 有职业区分的宝箱,职业替换物品组JobItem等同于包含了所有物品
            if (!string.IsNullOrEmpty(config.JobItem))
            {
                var arr = JsonMapper.ToObject<int[][]>(config.JobItem);
                for (int i = 0; i < arr.Length; i++)
                {
                    //根据职业显示
                    CreateItemCell(arr[i][jobIndex]);
                }
            }
            else
            {
                List<int> itemIDs = new List<int>();
                if (!string.IsNullOrEmpty(config.SelectList))
                {
                    var selectlistDict = ConfigParse.GetDic<int, int>(config.SelectList);
                    foreach (var item in selectlistDict)
                    {
                        if (!itemIDs.Contains(item.Key))
                        {
                            itemIDs.Add(item.Key);
                        }
                    }
                }
                if (!string.IsNullOrEmpty(config.FixedItem))
                {
                    var itemListDict = ConfigParse.GetDic<int, int>(config.FixedItem);
                    foreach (var item in itemListDict)
                    {
                        if (!itemIDs.Contains(item.Key))
                        {
                            itemIDs.Add(item.Key);
                        }
                    }
                }
                if (!string.IsNullOrEmpty(config.Probability1))
                {
                    var arr = JsonMapper.ToObject(config.Probability1);
                    for (int i = 0; i < arr.Count; i++)
                    {
                        var itemID = int.Parse(arr[i][1][0].ToString());
                        if (!itemIDs.Contains(itemID))
                        {
                            itemIDs.Add(itemID);
                        }
                    }
                }
                if (!string.IsNullOrEmpty(config.Probability2))
                {
                    var arr = JsonMapper.ToObject(config.Probability2);
                    for (int i = 0; i < arr.Count; i++)
                    {
                        var itemID = int.Parse(arr[i][1][0].ToString());
                        if (!itemIDs.Contains(itemID))
                        {
                            itemIDs.Add(itemID);
                        }
                    }
                }
                if (itemIDs.Count == 0)
                {
                    boxItemsObj.SetActive(false);
                    return;
                }
                for (int i = 0; i < itemIDs.Count; i++)
                {
                    CreateItemCell(itemIDs[i]);
                }
            }
        }
        void CreateItemCell(int itemID)
        {
            var instance = UIUtility.CreateWidget("ItemCell", "ItemCell");
            var behaviour = instance.GetComponent<ItemCell>();
            behaviour.transform.SetParentEx(boxItemsObj, Vector3.zero, Quaternion.identity, Vector3.one);
            behaviour.Init(new ItemCellModel(itemID, false, 1));
            behaviour.button.AddListener(() => {
                ItemTipUtility.Show(itemID);
            });
        }
    }
}
System/ItemTip/ItemBoxTipWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d97efcb187bdd574aa63b84722590fd2
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/ItemTip/ItemTipUtility.cs
@@ -24,17 +24,8 @@
            SpiritWeapon,
            PeerlessChest,
            TreasureShow, //其他法宝tip
            //后续IL开发添加预设
            default1,
            default2,
            default3,
            default4,
            default5,
            default6,
            default7,
            default8,
            default9,
            default10,
            BoxItem,    //宝箱物品
            TreasurePavilion, //古宝物品(碎片)
        }
        public class TipData
@@ -338,7 +329,15 @@
                    {
                        effectModel.SetTreasureID(config.EffectValueA1, 0);
                    }
                    break;
                    break;
                case TipType.BoxItem:
                    WindowCenter.Instance.Open<ItemBoxTipWin>();
                    break;
                case TipType.TreasurePavilion:
                    TreasurePavilionModel.Instance.selectGubao = config.EffectValueA1;
                    TreasurePavilionModel.Instance.showTipFromPiece = config.ID;
                    WindowCenter.Instance.OpenIL<TreasurePavilionTipWin>();
                    break;
                default:
                    WindowCenter.Instance.Open<ItemTipWin>();
                    break;
@@ -416,7 +415,15 @@
                    break;
                case TipType.SpiritWeapon:
                    WindowCenter.Instance.Open<SpiritWeaponTipWin>();
                    break;
                    break;
                case TipType.BoxItem:
                    WindowCenter.Instance.Open<ItemBoxTipWin>();
                    break;
                case TipType.TreasurePavilion:
                    TreasurePavilionModel.Instance.selectGubao = item.config.EffectValueA1;
                    TreasurePavilionModel.Instance.showTipFromPiece = item.itemId;
                    WindowCenter.Instance.OpenIL<TreasurePavilionTipWin>();
                    break;
                default:
                    WindowCenter.Instance.Open<ItemTipWin>();
                    break;
@@ -446,22 +453,27 @@
            }
            else
            {
                switch (itemConfig.Type)
                {
                    case 26:
                    case 41:
                    case 42:
                        WindowCenter.Instance.Open<PetMountTipWin>();
                        break;
                    case 113:
                    case 114:
                    case 116:
                    case 117:
                        WindowCenter.Instance.Open<SpiritWeaponTipWin>();
                        break;
                    default:
                        WindowCenter.Instance.Open<ItemTipWin>();
                        break;
                var tipType = GetTipType(itemId);
                switch (tipType)
                {
                    case TipType.PetMount:
                        WindowCenter.Instance.Open<PetMountTipWin>();
                        break;
                    case TipType.SpiritWeapon:
                        WindowCenter.Instance.Open<SpiritWeaponTipWin>();
                        break;
                    case TipType.BoxItem:
                        WindowCenter.Instance.Open<ItemBoxTipWin>();
                        break;
                    case TipType.TreasurePavilion:
                        TreasurePavilionModel.Instance.selectGubao = ItemConfig.Get(itemId).EffectValueA1;
                        TreasurePavilionModel.Instance.showTipFromPiece = itemId;
                        WindowCenter.Instance.OpenIL<TreasurePavilionTipWin>();
                        break;
                    default:
                        WindowCenter.Instance.Open<ItemTipWin>();
                        break;
                }
            }
        }
@@ -1932,13 +1944,17 @@
        private static TipType GetTipType(int itemId)
        {
            var config = ItemConfig.Get(itemId);
            if (GeneralDefine.chestDisplayItems.Contains(itemId))
            {
                return TipType.PeerlessChest;
            }
            if (ChestsAwardConfig.IsBox(itemId))
            {
                return TipType.BoxItem;
            }
            var config = ItemConfig.Get(itemId);
            switch (config.Type)
            {
                case 101:
@@ -1972,7 +1988,9 @@
                case 114:
                case 116:
                case 117:
                    return TipType.SpiritWeapon;
                    return TipType.SpiritWeapon;
                case 147:
                    return TipType.TreasurePavilion;
                default:
                    return TipType.Item;
            }
System/ItemTip/ItemTipWin.cs
@@ -249,7 +249,7 @@
                    if (i < operates.Count)
                    {
                        button.SetActive(true);
                        button.Bind("ItemTipWin", operates[i], guid);
                        button.Bind(this.windowInfo.name, operates[i], guid);
                    }
                    else
                    {
System/ItemTip/TipItemDescriptionWidget.cs
@@ -18,7 +18,12 @@
        [SerializeField] Text m_UseState;
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
        RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
        GatheringSoulModel gatheringSoulModel
        {
            get { return ModelCenter.Instance.GetModel<GatheringSoulModel>(); }
        }
        public void Display(int itemId)
        {
@@ -66,7 +71,26 @@
                description = description.Replace("{Rune}", sb.ToString());
            }
            m_Description.text = description;
            if (config.Type == 30)
            {
                m_Description.text = StringUtility.Contact(runeModel.GetRunePropertyDescription(itemId, 1), "</r>", description);
            }
            else if (config.Type == 148)
            {
                int soulID = GatherTheSoulConfig.GetSoulIDByItemID(itemId);
                var soulConfig = GatherTheSoulLVConfig.GetSoulLVConfig(soulID, 1);
                string desc = string.Empty;
                for (int i = 0; i < soulConfig.LVAttrType.Length; i++)
                {
                    desc += PlayerPropertyConfig.GetFullDescription(soulConfig.LVAttrType[i], soulConfig.LVAttrValue[i]) + "</r>";
                }
                m_Description.text = StringUtility.Contact(desc, SkillConfig.Get(GatherTheSoulConfig.Get(soulID).SoulSkillTypeID).Description, "</r></r>", description);
            }
            else
            {
                m_Description.text = description;
            }
        }
        public void DisplayUseState(int usedCount, int maxCount)
System/KnapSack/Logic/ItemOperateUtility.cs
@@ -478,7 +478,7 @@
                return;
            }
            if (ChestsAwardConfig.Has(useItemModel.itemId))
            if (ChestsAwardConfig.IsBox(useItemModel.itemId))
            { 
                BoxModel.SetModel(useItemModel.guid, useItemModel.itemId);
                return;
System/KnapSack/New/ChooseItemsCell.cs
@@ -19,6 +19,8 @@
    ChooseItemsModel model { get { return ModelCenter.Instance.GetModel<ChooseItemsModel>(); } }
    BoxGetItemModel boxModel { get { return ModelCenter.Instance.GetModel<BoxGetItemModel>(); } }
    PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
    RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
    public void Display(int itemID)
    {
        this.itemId = itemID;
@@ -159,7 +161,7 @@
                        txtNeed.text = Language.Get("ChooseItems04");
                        imgNeed.SetActive(true);
                    }
                    txtItemName.text = runeModel.GetRunePropertyDescription(itemId, 1);
                    break;
                default:
                    if (ItemLogicUtility.Instance.IsSatisfyEquipBetterEquip(itemId))
System/WindowBase/Window.cs
@@ -351,7 +351,7 @@
                {
                    if (windowMask != null)
                    {
                        Debug.Log("windowMask:" + windowMask.transform.GetSiblingIndex() + " rectTransform:" + rectTransform.GetSiblingIndex() + " name:" + this.rectTransform.name);
                        //Debug.Log("windowMask:" + windowMask.transform.GetSiblingIndex() + " rectTransform:" + rectTransform.GetSiblingIndex() + " name:" + this.rectTransform.name);
                        if (windowMask.transform.GetSiblingIndex() >= rectTransform.GetSiblingIndex())
                        {
                            windowMask.transform.SetSiblingIndex(rectTransform.GetSiblingIndex());
System/ZhanLingH/ZhanLingHActBuyWin.cs
@@ -12,6 +12,8 @@
    [SerializeField] ImageEx imgTitle;
    [SerializeField] TextEx txtPercentage;
    [SerializeField] TextEx txtMoneyCount;
    [SerializeField] Canvas canvas;
    TextEx orgPrice;
    VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
@@ -23,6 +25,8 @@
        var obj = btnBuy.FindComponent("Text", "Txt_orgPrice");
        if (obj != null)
            orgPrice = obj as TextEx;
        canvas.sortingLayerName = "UI";
    }
    protected override void AddListeners()
System/ZhanLingH/ZhanLingHBuyWin.cs
@@ -10,6 +10,8 @@
    [SerializeField] TextEx txtTitle;
    [SerializeField] ImageEx imgBK;
    [SerializeField] TextEx txtPercentage;
    [SerializeField] Canvas canvas;
    TextEx orgPrice;
    VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
@@ -21,6 +23,7 @@
        var obj = btnBuy.FindComponent("Text", "Txt_orgPrice");
        if (obj != null)
            orgPrice = obj as TextEx;
        canvas.sortingLayerName = "UI";
    }
    protected override void AddListeners()
@@ -40,6 +43,7 @@
    protected override void OnPreOpen()
    {
        scroller.OnRefreshCell += OnScrollerRefreshCell;
        Display();
    }