hch
4 天以前 64f046bdca87c2dcf8427cd2a2154fe9c4fc9249
117 【武将】武将系统 - 调整背包事件
15个文件已修改
2个文件已添加
439 ■■■■■ 已修改文件
Main/Config/ConfigManager.cs 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/PlayerPropertyConfig.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Main.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HappyXB/HappyXBModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Hero/HeroInfo.Properties.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Hero/HeroManager.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroBaseWin.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroListWin.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/KnapSack/Logic/ItemLogicUtility.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/KnapSack/Logic/SinglePack.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/KnapSack/PackManager.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/KnapSack/VirtualPackManager.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EnumHelper.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/UIHelper.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/ConfigManager.cs
@@ -38,9 +38,52 @@
        // 加载配置文件
        HashSet<Type> configTypes = new HashSet<Type>() {
            typeof(ChatBubbleBoxConfig),
            typeof(CTGConfig),
            typeof(DailyLivenessRewardConfig),
            typeof(DailyQuestConfig),
            typeof(DailyQuestOpenTimeConfig),
            typeof(DienstgradConfig),
            typeof(DirtyNameConfig),
            typeof(DirtyWordConfig),
            typeof(EffectConfig),
            typeof(EquipGSParamConfig),
            typeof(TitleStarUpConfig)
            typeof(EquipPlaceMapConfig),
            typeof(FamilyEmblemConfig),
            typeof(FrameAnimationConfig),
            typeof(FuncConfigConfig),
            typeof(FuncOpenLVConfig),
            typeof(FunctionTeamSetConfig),
            typeof(GetItemWaysConfig),
            typeof(GmCmdConfig),
            typeof(HeroAwakeConfig),
            typeof(HeroConfig),
            typeof(HeroQualityAwakeConfig),
            typeof(HeroQualityBreakConfig),
            typeof(HeroQualityConfig),
            typeof(HeroSkinConfig),
            typeof(ItemConfig),
            typeof(KickOutReasonConfig),
            typeof(MainChapterConfig),
            typeof(MainLevelConfig),
            typeof(NPCConfig),
            typeof(NPCLineupConfig),
            typeof(OrderInfoConfig),
            typeof(PlayerFaceConfig),
            typeof(PlayerLVConfig),
            typeof(PlayerPropertyConfig),
            typeof(priorbundleConfig),
            typeof(RealmConfig),
            typeof(RealmLVUPTaskConfig),
            typeof(RuleConfig),
            typeof(SkillConfig),
            typeof(TaskConfig),
            typeof(TitleStarUpConfig),
            typeof(TreasureCntAwardConfig),
            typeof(TreasureItemLibConfig),
            typeof(TreasureSetConfig),
            typeof(TreeLVConfig),
            typeof(XBGetItemConfig)
        };
#if UNITY_EDITOR
@@ -190,12 +233,98 @@
    public override void Release()
    {
        // 清空 ChatBubbleBoxConfig 字典
        ClearConfigDictionary<ChatBubbleBoxConfig>();
        // 清空 CTGConfig 字典
        ClearConfigDictionary<CTGConfig>();
        // 清空 DailyLivenessRewardConfig 字典
        ClearConfigDictionary<DailyLivenessRewardConfig>();
        // 清空 DailyQuestConfig 字典
        ClearConfigDictionary<DailyQuestConfig>();
        // 清空 DailyQuestOpenTimeConfig 字典
        ClearConfigDictionary<DailyQuestOpenTimeConfig>();
        // 清空 DienstgradConfig 字典
        ClearConfigDictionary<DienstgradConfig>();
        // 清空 DirtyNameConfig 字典
        ClearConfigDictionary<DirtyNameConfig>();
        // 清空 DirtyWordConfig 字典
        ClearConfigDictionary<DirtyWordConfig>();
        // 清空 EffectConfig 字典
        ClearConfigDictionary<EffectConfig>();
        // 清空 EquipGSParamConfig 字典
        ClearConfigDictionary<EquipGSParamConfig>();
        // 清空 EquipPlaceMapConfig 字典
        ClearConfigDictionary<EquipPlaceMapConfig>();
        // 清空 FamilyEmblemConfig 字典
        ClearConfigDictionary<FamilyEmblemConfig>();
        // 清空 FrameAnimationConfig 字典
        ClearConfigDictionary<FrameAnimationConfig>();
        // 清空 FuncConfigConfig 字典
        ClearConfigDictionary<FuncConfigConfig>();
        // 清空 FuncOpenLVConfig 字典
        ClearConfigDictionary<FuncOpenLVConfig>();
        // 清空 FunctionTeamSetConfig 字典
        ClearConfigDictionary<FunctionTeamSetConfig>();
        // 清空 GetItemWaysConfig 字典
        ClearConfigDictionary<GetItemWaysConfig>();
        // 清空 GmCmdConfig 字典
        ClearConfigDictionary<GmCmdConfig>();
        // 清空 HeroAwakeConfig 字典
        ClearConfigDictionary<HeroAwakeConfig>();
        // 清空 HeroConfig 字典
        ClearConfigDictionary<HeroConfig>();
        // 清空 HeroQualityAwakeConfig 字典
        ClearConfigDictionary<HeroQualityAwakeConfig>();
        // 清空 HeroQualityBreakConfig 字典
        ClearConfigDictionary<HeroQualityBreakConfig>();
        // 清空 HeroQualityConfig 字典
        ClearConfigDictionary<HeroQualityConfig>();
        // 清空 HeroSkinConfig 字典
        ClearConfigDictionary<HeroSkinConfig>();
        // 清空 ItemConfig 字典
        ClearConfigDictionary<ItemConfig>();
        // 清空 KickOutReasonConfig 字典
        ClearConfigDictionary<KickOutReasonConfig>();
        // 清空 MainChapterConfig 字典
        ClearConfigDictionary<MainChapterConfig>();
        // 清空 MainLevelConfig 字典
        ClearConfigDictionary<MainLevelConfig>();
        // 清空 NPCConfig 字典
        ClearConfigDictionary<NPCConfig>();
        // 清空 NPCLineupConfig 字典
        ClearConfigDictionary<NPCLineupConfig>();
        // 清空 OrderInfoConfig 字典
        ClearConfigDictionary<OrderInfoConfig>();
        // 清空 PlayerFaceConfig 字典
        ClearConfigDictionary<PlayerFaceConfig>();
        // 清空 PlayerLVConfig 字典
        ClearConfigDictionary<PlayerLVConfig>();
        // 清空 PlayerPropertyConfig 字典
        ClearConfigDictionary<PlayerPropertyConfig>();
        // 清空 priorbundleConfig 字典
        ClearConfigDictionary<priorbundleConfig>();
        // 清空 RealmConfig 字典
        ClearConfigDictionary<RealmConfig>();
        // 清空 RealmLVUPTaskConfig 字典
        ClearConfigDictionary<RealmLVUPTaskConfig>();
        // 清空 RuleConfig 字典
        ClearConfigDictionary<RuleConfig>();
        // 清空 SkillConfig 字典
        ClearConfigDictionary<SkillConfig>();
        // 清空 TaskConfig 字典
        ClearConfigDictionary<TaskConfig>();
        // 清空 TitleStarUpConfig 字典
        ClearConfigDictionary<TitleStarUpConfig>();
        // 清空 TreasureCntAwardConfig 字典
        ClearConfigDictionary<TreasureCntAwardConfig>();
        // 清空 TreasureItemLibConfig 字典
        ClearConfigDictionary<TreasureItemLibConfig>();
        // 清空 TreasureSetConfig 字典
        ClearConfigDictionary<TreasureSetConfig>();
        // 清空 TreeLVConfig 字典
        ClearConfigDictionary<TreeLVConfig>();
        // 清空 XBGetItemConfig 字典
        ClearConfigDictionary<XBGetItemConfig>();
    }
#if UNITY_EDITOR
Main/Config/PartialConfigs/PlayerPropertyConfig.cs
@@ -8,6 +8,8 @@
    private static Dictionary<int, List<PlayerPropertyConfig>> m_PropCfgs = new Dictionary<int, List<PlayerPropertyConfig>>();
    private static Dictionary<int, List<int>> outputDict = new Dictionary<int, List<int>>();
    public static int[] baseAttrs = { 6, 7, 8 };    //攻防血
    protected override void OnConfigParseCompleted()
    {
        List<PlayerPropertyConfig> list = null;
Main/Main.cs
@@ -70,6 +70,7 @@
        managers.Add(OfficialRankManager.Instance);
        managers.Add(RankModel.Instance);
        managers.Add(PlayerMainDate.Instance);
        managers.Add(HeroUIManager.Instance);
        foreach (var manager in managers)
        {
Main/System/HappyXB/HappyXBModel.cs
@@ -92,7 +92,7 @@
    {
        PlayerDatas.Instance.playerDataRefreshEvent -= RefreshStoreScore;
        FuncOpen.Instance.OnFuncStateChangeEvent -= UpdateFuncState;
        PackManager.Instance.refreshItemCountEvent -= RefreshXBTool;
        PackManager.Instance.RefreshItemEvent -= RefreshXBTool;
        isXBCoolTime = false;
        XBNotifyParms.Clear();
        xbTypeInfoDict.Clear();
@@ -108,7 +108,7 @@
        USETOOLXBKey = StringUtility.Contact(playerId, "UseToolXB");
        XBWarehouseRedPoint();
        PlayerDatas.Instance.playerDataRefreshEvent += RefreshStoreScore;
        PackManager.Instance.refreshItemCountEvent += RefreshXBTool;
        PackManager.Instance.RefreshItemEvent += RefreshXBTool;
        FuncOpen.Instance.OnFuncStateChangeEvent += UpdateFuncState;
    }
Main/System/Hero/HeroInfo.Properties.cs
@@ -88,11 +88,11 @@
    //计算个人/职业/种族养成属性加成
    public void CalculateProperties()
    {
// 武将单体属性,根据继承比例,从全体属性继承得到
// 例如:武将攻击力=
// [(装备基础固定值+其它模块的固定值)* (1+初始加成%+武将升级加成%+武将突破加成%+武将吞噬星级加成%+图鉴加成%)]
// *
// [ 继承比例*(1+羁绊加成%+潜能加成%+天赋加成%+觉醒效果加成%)]
        // 武将单体属性,根据继承比例,从全体属性继承得到
        // 例如:武将攻击力=
        // [(装备基础固定值+其它模块的固定值)* (1+初始加成%+武将升级加成%+武将突破加成%+武将吞噬星级加成%+图鉴加成%)]
        // *
        // [ 继承比例*(1+羁绊加成%+潜能加成%+天赋加成%+觉醒效果加成%)]
        hp = GetProperties(HeroAttrType.hp);
        attack = GetProperties(HeroAttrType.attack);
        defense = GetProperties(HeroAttrType.defense);
@@ -112,9 +112,9 @@
    protected int GetProperties(HeroAttrType attrType)
    {
        return GetStableProperties(attrType)
        return GetStableProperties(attrType)
                    * GetCultivationPercent(attrType)
                    * GetInheritRate(attrType)
                    * GetInheritRate(attrType)
                    * GetInfluenceByInheritPercent(attrType);
    }
@@ -170,4 +170,11 @@
                counterAttackResist +
                recoverResist;
    }
    //上阵属性:攻防血
    public int GetGoBattleAddPer()
    {
        return qualityConfig.InitAddPer + qualityConfig.LVAddPer * heroLevel + qualityConfig.BreakLVAddPer * breakLevel + qualityConfig.StarAddPer * heroStar;
    }
}
Main/System/Hero/HeroManager.cs
@@ -26,7 +26,6 @@
    {
        base.Init();
        PackManager.Instance.refrechPackEvent += refrechPackEvent;
        PackManager.Instance.ChangeItemEvent += ChangeHero;
        PackManager.Instance.DeleteItemEvent += DeleteHero;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
@@ -35,7 +34,6 @@
    public override void Release()
    {
        base.Release();
        PackManager.Instance.refrechPackEvent -= refrechPackEvent;
        PackManager.Instance.ChangeItemEvent -= ChangeHero;
        PackManager.Instance.DeleteItemEvent -= DeleteHero;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
@@ -47,13 +45,6 @@
        heroInfoDict.Clear();
    }
    void refrechPackEvent(PackType packType)
    {
        if (packType == PackType.Hero)
        {
            InitHerosInfo();
        }
    }
    // isCreate bool:true代表创建 false 刷新触发
    void ChangeHero(PackType packType, string guid, bool isCreate)
@@ -99,19 +90,6 @@
    public List<HeroInfo> GetHeroList()
    {
        return heroInfoDict.Values.ToList();
    }
    void InitHerosInfo()
    {
        heroInfoDict.Clear();
        SinglePack heroPack = PackManager.Instance.GetSinglePack(PackType.Hero);
        Dictionary<int, ItemModel> heroes = heroPack.GetAllItems();
        foreach (ItemModel hero in heroes.Values)
        {
            ChangeHero(hero.packType, hero.guid, true);
        }
    }
    public List<HeroInfo> GetPowerfulHeroList()
Main/System/HeroUI/HeroBaseWin.cs
@@ -4,13 +4,14 @@
using UnityEngine.UI;
/// <summary>
/// 武将列表
/// 武将基础界面
/// </summary>
public class HeroBaseWin : FunctionsBaseWin
{
    [SerializeField] List<Image> funcSelectImgList;
    [SerializeField] List<Image> funcUnSelectImgList;
    [SerializeField] List<Text> titleNameList;
    /// </summary>
    protected override void InitComponent()
@@ -44,12 +45,14 @@
            {
                funcSelectImgList[i].SetActive(true);
                funcUnSelectImgList[i].SetActive(false);
                titleNameList[i].color = UIHelper.GetUIColor(TextColType.titleSelectColor);
            }
            else
            {
                funcSelectImgList[i].SetActive(false);
                funcUnSelectImgList[i].SetActive(true);
                titleNameList[i].color = UIHelper.GetUIColor(TextColType.titleUnSelectColor);
            }
        }
@@ -63,10 +66,11 @@
         switch (functionOrder)
        {
            case 0:
                // 打开主页界面
                currentSubUI = UIManager.Instance.OpenWindow<HeroListWin>();
                break;
            case 1:
                //currentSubUI = UIManager.Instance.OpenWindow<HeroCollectionsWin>();
                break;
            default:
                Debug.LogWarning("未知的标签索引: " + functionOrder);
                break;
Main/System/HeroUI/HeroListWin.cs
@@ -31,26 +31,48 @@
    /// </summary>
    protected override void InitComponent()
    {
        heroPackBtn.onClick.AddListener(() =>
        {
            HeroUIManager.Instance.QueryUnLockHeroPack();
        });
    }
    protected override void OnPreOpen()
    {
        heroListScroller.OnRefreshCell += OnRefreshCell;
        PackManager.Instance.RefreshItemEvent += RefreshPakCount;
        HeroManager.Instance.SortHeroList();
        CreateScroller();
        Refresh();
    }
    protected override void OnPreClose()
    {
        heroListScroller.OnRefreshCell -= OnRefreshCell;
        PackManager.Instance.RefreshItemEvent -= RefreshPakCount;
    }
    public override void Refresh()
    {
        SinglePack singlePack = PackManager.Instance.GetSinglePack(PackType.Item);
        if (singlePack == null || singlePack.GetAllItems().Count <= 0)
        {
            heroListEmpty.SetActive(true);
            heroListScroller.SetActive(false);
        }
        else
        {
            heroListEmpty.SetActive(false);
            heroListScroller.SetActive(true);
        }
        //上阵属性
        for (int i = 0; i < attrOnList.Count; i++)
        {
            attrOnList[i].text = PlayerPropertyConfig.GetFullDescription(new Int2 (PlayerPropertyConfig.baseAttrs[i], 1 ));
        }
    }
    void OnRefreshCell(ScrollerDataType type, CellView cell)
@@ -65,13 +87,24 @@
        for (int i = 0; i < HeroManager.Instance.heroSortList.Count; i++)
        {
            if (i % 4 == 0)
            {
            {
                heroListScroller.AddCell(ScrollerDataType.Header, i);
            }
        }
        heroListScroller.Restart();
    }
    void RefreshPakCount(PackType type, int index, int itemID)
    {
        SinglePack singlePack = PackManager.Instance.GetSinglePack(PackType.Item);
        if (singlePack == null)
            return;
        int count = singlePack.GetAllItems().Count;
        heroPackText.text =  UIHelper.AppendColor(count > singlePack.unlockedGridCount ? TextColType.Red : TextColType.NavyBrown,
                            string.Format("{0}/{1}", count, singlePack.unlockedGridCount));
    }
    
}
Main/System/HeroUI/HeroUIManager.cs
New file
@@ -0,0 +1,40 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
public class HeroUIManager : GameSystemManager<HeroUIManager>
{
    public void OnBeforePlayerDataInitialize()
    {
    }
    public void OnPlayerLoginOk()
    {
    }
    public override void Init()
    {
    }
    public override void Release()
    {
    }
    void ParseConfig()
    {
    }
    public void QueryUnLockHeroPack()
    {
        //解锁更多的武将背包
    }
}
Main/System/HeroUI/HeroUIManager.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9fea3ff7a48170a49bf7449f19ccea8e
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/KnapSack/Logic/ItemLogicUtility.cs
@@ -475,25 +475,7 @@
            // }
        }
        public event Action<PackType, string> PickItemEvent; //捡起的物品
        //用于过滤道具飘入表现 在不想出现物品飘动的界面 开启界面的时候设置true ,关闭界面设置false
        public bool hidePickItem = false;
        public void RefreshPickItem(PackType type, string itemIDStr)
        {
            if (hidePickItem)
                return;
            if (!DTC0403_tagPlayerLoginLoadOK.finishedLogin) return;
            //修改后传的是物品id字符串
            if (type != PackType.Item && type != PackType.DogzItem && type != PackType.GatherSoul && type != PackType.RunePack && type != PackType.default1) return;
            if (PickItemEvent != null)
            {
                PickItemEvent(type, itemIDStr);
            }
        }
        Dictionary<int, ItemModel> RealmBetterDict = new Dictionary<int, ItemModel>();
        // public Dictionary<int, ItemModel> CheckBetterEquipByRealm()
Main/System/KnapSack/Logic/SinglePack.cs
@@ -6,7 +6,7 @@
public class SinglePack
{
    public readonly PackType type;
    public int unlockedGridCount { get; private set; }
    public int unlockedGridCount { get; private set; }  //已开启背包格子数
    private Dictionary<int, ItemModel> items = new Dictionary<int, ItemModel>(); //key 物品位置索引
    private Dictionary<int, List<int>> itemIDs = new Dictionary<int, List<int>>(); //key 物品ID:物品位置索引
    public SinglePack(PackType type)
Main/System/KnapSack/PackManager.cs
@@ -161,12 +161,17 @@
    }
    public event Action<PackType> refrechPackEvent; //刷新整个背包数据
    public event Action<PackType, string, bool> ChangeItemEvent; //物品刷新,可能批量创建注意效率; bool:true代表创建 false 刷新
    public event Action<PackType, string> DeleteItemEvent; //删除物品,可能批量删除注意效率
    public event Action<PackType, int, int> refreshItemCountEvent; // 慎用会卡(单个)最新物品数量刷新(旧的弃用)在得到新物品、物品数量的改变,清理该物品时均会触发 int 位置索引 int物品id
    public event Action<PackType> gridRefreshEvent; //背包空格刷新
    public event Action<PackType, int, int> itemCntAddEvent; //物品数量增加 int 位置索引 int物品id
    public event Action<PackType, int, int> itemCntReduceEvent; //物品数量减少的改变 int 位置索引 int物品id
    //物品(创建)刷新,可能批量创建注意效率; bool:true代表创建 false 刷新; 注意0707物品数量刷新不包含在此事件
    public event Action<PackType, string, bool> ChangeItemEvent; // 背包类型,GUID,是否创建
    //删除物品,可能批量删除注意效率
    public event Action<PackType, string> DeleteItemEvent; // 背包类型,GUID
    // 单物品刷新 在得到新物品、物品数量的改变,清理该物品时均会触发 ; 但0725整个背包刷新不触发,如果有需要单独数量刷新事件另外处理
    // 触发比较频繁,界面使用时可以做个汇总后延迟刷新
    public event Action<PackType, int, int> RefreshItemEvent; //背包类型,位置索引,物品id
    public event Action<PackType> gridRefreshEvent; //背包可用格子数刷新
    public event Action<int, int> useItemSuccessEvent; //物品使用成功 int 位置索引 int物品id
    public event Action<int> refreshItemDayUseCountEvent;  //刷新物品每日使用数量
@@ -196,7 +201,7 @@
        {
            var itemInfo = new ItemInfo(packInfo.ItemInfo[i]);
            var item = playerPackDict[packType].UpdateItem(itemInfo);
            AddItemGUIDDict(item, false);
            AddItemGUIDDict(item, true);
            if (isPlayBetterEquipEffect)
            {
@@ -240,15 +245,11 @@
        var item = playerPackDict[type].UpdateItem(itemInfo);
        AddItemGUIDDict(item, showNewItem);
        if (refreshItemCountEvent != null)
        if (RefreshItemEvent != null)
        {
            refreshItemCountEvent(type, itemInfo.index, itemInfo.itemId);
            RefreshItemEvent(type, itemInfo.index, itemInfo.itemId);
        }
        if (itemCntAddEvent != null)
        {
            itemCntAddEvent(type, itemInfo.index, itemInfo.itemId);
        }
        // if (type == PackType.Equip)
        // {
@@ -297,32 +298,12 @@
            ItemModel itemModel = singlePack.GetItemByIndex(refresh.ItemIndex);
            if (itemModel != null)
            {
                bool isAddItemCount = false;
                if (refresh.ItemCount > itemModel.count)
                {
                    isAddItemCount = true;
                }
                itemModel.RefreshCount((int)refresh.ItemCount);
                if (isAddItemCount)
                if (RefreshItemEvent != null)
                {
                    if (itemCntAddEvent != null)
                    {
                        itemCntAddEvent(type, itemModel.gridIndex, itemModel.itemId);
                    }
                    ItemLogicUtility.Instance.RefreshPickItem(type, itemModel.itemId.ToString());
                }
                else
                {
                    if (itemCntReduceEvent != null)
                    {
                        itemCntReduceEvent(type, itemModel.gridIndex, itemModel.itemId);
                    }
                }
                if (refreshItemCountEvent != null)
                {
                    refreshItemCountEvent(type, itemModel.gridIndex, itemModel.itemId);
                    RefreshItemEvent(type, itemModel.gridIndex, itemModel.itemId);
                }
            }
@@ -348,8 +329,6 @@
                DeleteItemDictByGUID(type, guid);
            }
        }
    }
    public void RemoveItem(H0709_tagClearItem clearItem)
@@ -375,15 +354,11 @@
            DeleteItemDictByGUID(type, itemModel.guid);
            singlePack.RemoveItem(clearItem.ItemIndex);
            if (refreshItemCountEvent != null)
            if (RefreshItemEvent != null)
            {
                refreshItemCountEvent(type, clearItem.ItemIndex, itemId);
                RefreshItemEvent(type, clearItem.ItemIndex, itemId);
            }
            if (itemCntReduceEvent != null)
            {
                itemCntReduceEvent(type, clearItem.ItemIndex, itemId);
            }
        }
        UpdatePackRedpoint(type);
Main/System/KnapSack/VirtualPackManager.cs
@@ -219,32 +219,11 @@
    public void UpdateAutoItemCountRefresh(HA206_tagMCAutoItemCountRefresh netPack)
    {
        ShowRewardWin(netPack);//vNetData中ItemCount传的是碎片总数,需要在noPackItemCountDict写入数据之前计算差值
        for (int i = 0; i < netPack.Count; i++)
        {
            noPackItemCountDict[(int)netPack.ItemCountList[i].ItemID] = (int)netPack.ItemCountList[i].ItemCount;
        }
        OnNoPackItemCountRefresh?.Invoke();
    }
    void ShowRewardWin(HA206_tagMCAutoItemCountRefresh vNetData)
    {
        getA206Count += 1;
        if (ItemLogicUtility.Instance.hidePickItem)
            return;
        // if (ModelCenter.Instance.GetModel<GatheringSoulModel>().isOpenXBWin)
        //     return;
        if (getA206Count <= 1 && !isFrist)
            return;
        for (int i = 0; i < vNetData.ItemCountList.Length; i++)
        {
            int itemID = (int)vNetData.ItemCountList[i].ItemID;
            int itemCount = (int)vNetData.ItemCountList[i].ItemCount;
            if (noPackItemCountDict.ContainsKey(itemID) && noPackItemCountDict[itemID] > itemCount)
                return;
            ItemLogicUtility.Instance.RefreshPickItem(PackType.Item, itemID.ToString());
        }
    }
@@ -292,7 +271,6 @@
            }
            item.ParsePackItem(items[i].ItemPlace, items[i].ItemData);
            ItemLogicUtility.Instance.RefreshPickItem(packType, item.id.ToString());
        }
    }
Main/System/PhantasmPavilion/PhantasmPavilionModel.cs
@@ -79,7 +79,7 @@
    public override void Init()
    {
        PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefreshEvent;
        PackManager.Instance.refreshItemCountEvent += OnRefreshItemCountEvent;
        PackManager.Instance.RefreshItemEvent += OnRefreshItemCountEvent;
        GlobalTimeEvent.Instance.secondEvent += CheckRedPoint;
        InitHandler();
        InitTable();
@@ -89,7 +89,7 @@
    public override void Release()
    {
        PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefreshEvent;
        PackManager.Instance.refreshItemCountEvent -= OnRefreshItemCountEvent;
        PackManager.Instance.RefreshItemEvent -= OnRefreshItemCountEvent;
        GlobalTimeEvent.Instance.fiveSecondEvent -= CheckRedPoint;
    }
Main/Utility/EnumHelper.cs
@@ -1082,9 +1082,9 @@
{
    None = 0,
    White = 1,
    Blue = 2,
    Purple = 3,
    Orange = 4,
    titleSelectColor = 2,
    titleUnSelectColor = 3,
    Red = 5,
    Pink = 6,
    /// <summary>
Main/Utility/UIHelper.cs
@@ -644,12 +644,10 @@
            case TextColType.None:
            case TextColType.White:
                return bright ? s_BrightWhiteColor : s_DarkWhiteColor;  // s_BrightWhiteColor 是亮底灰色
            case TextColType.Blue:
                return bright ? s_BrightBlueColor : s_DarkBlueColor;
            case TextColType.Purple:
                return bright ? s_BrightPurpleColor : s_DarkPurpleColor;
            case TextColType.Orange:
                return bright ? s_BrightOrangeColor : s_DarkOrangeColor;
            case TextColType.titleSelectColor:
                return new Color32(114, 157, 228, 255);
            case TextColType.titleUnSelectColor:
                return new Color32(127, 65, 57, 255);
            case TextColType.Red:
                return bright ? s_BrightRedColor : s_DarkRedColor;
            case TextColType.Pink:
@@ -784,12 +782,10 @@
            case TextColType.None:
            case TextColType.White:
                return StringUtility.Contact("<color=#", bright ? "686868" : "f7f7f7", ">", msg, "</color>");
            case TextColType.Blue:
                return StringUtility.Contact("<color=#", bright ? "006be3" : "31cefb", ">", msg, "</color>");
            case TextColType.Purple:
                return StringUtility.Contact("<color=#", bright ? "da48d5" : "ec4bf6", ">", msg, "</color>");
            case TextColType.Orange:
                return StringUtility.Contact("<color=#", bright ? "ff6701" : "f8983b", ">", msg, "</color>");
            case TextColType.titleSelectColor:
                return StringUtility.Contact("<color=#7F4139>", msg, "</color>");
            case TextColType.titleUnSelectColor:
                return StringUtility.Contact("<color=#6E5C60>", msg, "</color>");
            case TextColType.Red:
                return StringUtility.Contact("<color=#", bright ? "ea261e" : "ea261e", ">", msg, "</color>");
            case TextColType.Pink:
@@ -873,28 +869,37 @@
    {
        switch (itemColor)
        {
            case 0:
                return AppendColor(TextColType.Gray, msg, bright);
            case 1:
                return AppendColor(TextColType.White, msg, bright);
            case 2:
                return AppendColor(TextColType.Blue, msg, bright);
                return AppendColor(TextColType.itemjingliang, msg, bright);
            case 3:
                return AppendColor(TextColType.Purple, msg, bright);
                return AppendColor(TextColType.itemxiyou, msg, bright);
            case 4:
                return AppendColor(TextColType.Orange, msg, bright);
                return AppendColor(TextColType.itemshishi, msg, bright);
            case 5:
                return AppendColor(TextColType.Red, msg, bright);
                return AppendColor(TextColType.itemchuanqi, msg, bright);
            case 6:
                return AppendColor(TextColType.itemshenhua, msg, bright);
            case 7:
                return AppendColor(TextColType.itemwuxia, msg, bright);
            case 8:
                return AppendColor(TextColType.Pink, msg, bright);
                return AppendColor(TextColType.itemanjin, msg, bright);
            case 9:
                return AppendColor(TextColType.Green, msg, bright);
                return AppendColor(TextColType.itemjueyi, msg, bright);
            case 10:
                return AppendColor(TextColType.itemyuanzu, msg, bright);
            case 11:
                return AppendColor(TextColType.itembuxiu, msg, bright);
            case 12:
                return AppendColor(TextColType.itemyonghen, msg, bright);
        }
        return msg;
    }
    public static Color GetPropertyColor(int property)
    {