少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-21 9809d7d0737e1eea547842c2e6b9d95e6868675a
Merge branch 'master' into DogzDungeon
25个文件已修改
6个文件已添加
1383 ■■■■ 已修改文件
Core/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/ResModule/AnimatorControllerLoader.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BetterItemGet/RealmBetterEquipModel .cs 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BetterItemGet/RealmBetterEquipModel .cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeWinModel.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzActiveWin.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzCell.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzEquip.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzItemCell.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzModel.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HappyXB/BestXBWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HappyXB/RuneXBWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/EquipTip.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemTipsModel.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackModelInterface.cs 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackSendQuestMgr.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PlayerPackModels.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/RealmBetterEquipBehaviour.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/RealmBetterEquipBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/InGamePushContainer.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewBieGuidance/NewBieCenter.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Pet/PetAttributeMethods.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmUpWin.cs 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastChildNodes.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastChildNodes.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastEntry.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastReinforcementWin.cs 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastSlidingList.cs 279 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/SortTable.cs 218 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
@@ -553,15 +553,6 @@
        private void ExcuteBuildLevels()
        {
            UpdateLevelSetting.SetAllLevelAssetBundleName();
            var grachicSettings = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/GraphicsSettings.asset")[0]);
            var lightmapStripping = grachicSettings.FindProperty("m_LightmapStripping");
            lightmapStripping.intValue = 1;
            var fogStripping = grachicSettings.FindProperty("m_FogStripping");
            fogStripping.intValue = 1;
            grachicSettings.ApplyModifiedProperties();
            ExcuteBuildAsset("maps");
        }
Core/GameEngine/Model/ConfigManager.cs
@@ -246,6 +246,7 @@
        StartSyncTask<IconConfig>(AssetPath.ResourceOut);
        StartSyncTask<SysInfoConfig>(AssetPath.ResourceOut);
        StartSyncTask<LanguageConfig>(AssetPath.ResourceOut);
        StartSyncTask<RealmConfig>(AssetPath.ResourceOut);
    }
    public bool AllCompleted()
Core/ResModule/AnimatorControllerLoader.cs
@@ -11,6 +11,7 @@
    public static readonly string controllerSuffix = "AnimatorController_";
    public static readonly string controllerUISuffix = "AnimatorController_UI_";
    public static readonly string controllerShowSuffix = "AnimatorController_Show_";
    public static readonly string controllerRealmSuffix = "AnimatorController_Realm_";
    public static AnimationClip LoadAnimationClip(string name, string clipName)
    {
System/BetterItemGet/RealmBetterEquipModel .cs
New file
@@ -0,0 +1,221 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Saturday, January 20, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using TableConfig;
namespace Snxxz.UI
{
    public class RealmBetterEquipModel : Model, IBeforePlayerDataInitialize, ISwitchAccount,IPlayerLoginOk
    {
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel<PackModelInterface>(); } }
        public string currentEquipGuid { get; private set; }
        Dictionary<string, ItemModel> betterEquipModels = new Dictionary<string, ItemModel>();
        public event Action showEquipRefreshEvent;
        public const string RealmRecordKey = "RealmRecord";
        public override void Init()
        {
            playerPack.RefreshPackAct += OnPackageRefresh;
            playerPack.RefreshItemCountAct += OnPackageItemRefresh;
        }
        public override void UnInit()
        {;
            playerPack.RefreshPackAct -= OnPackageRefresh;
            playerPack.RefreshItemCountAct -= OnPackageItemRefresh;
        }
        public void OnBeforePlayerDataInitialize()
        {
            currentEquipGuid = string.Empty;
            betterEquipModels.Clear();
        }
        public void OnPlayerLoginOk()
        {
            LocalSave.SetInt(RealmRecordKey,PlayerDatas.Instance.baseData.realmLevel);
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= RefreshRealm;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += RefreshRealm;
        }
        public void OnSwitchAccount()
        {
            currentEquipGuid = string.Empty;
        }
        private void RefreshRealm(PlayerDataRefresh type)
        {
            int realmLv = PlayerDatas.Instance.baseData.realmLevel;
            if (type != PlayerDataRefresh.OfficialRank
                || LocalSave.GetInt(RealmRecordKey) == realmLv
                || NewBieCenter.Instance.inGuiding)
            {
                return;
            }
            LocalSave.SetInt(RealmRecordKey,realmLv);
            Dictionary<int, ItemModel> pairs = modelInterface.CheckBetterEquipByRealm();
            betterEquipModels.Clear();
            currentEquipGuid = string.Empty;
            foreach (var model in pairs.Values)
            {
                betterEquipModels[model.itemInfo.ItemGUID] = model;
                currentEquipGuid = model.itemInfo.ItemGUID;
            }
            if (showEquipRefreshEvent != null)
            {
                showEquipRefreshEvent();
            }
        }
        public bool TryGetBetterEquip(string _guid, out ItemModel _equip)
        {
            return betterEquipModels.TryGetValue(_guid, out _equip);
        }
        public void ReportConfirmBetterEquip(string _guid)
        {
            betterEquipModels.Remove(_guid);
            var tempGuid = GetOneEquip();
            if (tempGuid != currentEquipGuid)
            {
                currentEquipGuid = tempGuid;
                if (showEquipRefreshEvent != null)
                {
                    showEquipRefreshEvent();
                }
            }
        }
        private void OnPackageRefresh(PackType _packType)
        {
            if (_packType != PackType.rptItem)
            {
                return;
            }
            var keys = new List<string>(betterEquipModels.Keys);
            for (int i = keys.Count - 1; i >= 0; i--)
            {
                var guid = keys[i];
                var itemModel = playerPack.GetItemModelByGUID(guid);
                if (itemModel == null || itemModel.packType != PackType.rptItem)
                {
                    betterEquipModels.Remove(guid);
                }
            }
            var tempGuid = GetOneEquip();
            if (tempGuid != currentEquipGuid)
            {
                if (!string.IsNullOrEmpty(tempGuid))
                {
                    currentEquipGuid = tempGuid;
                    if (showEquipRefreshEvent != null)
                    {
                        showEquipRefreshEvent();
                    }
                }
                else
                {
                    currentEquipGuid = tempGuid;
                    if (showEquipRefreshEvent != null)
                    {
                        showEquipRefreshEvent();
                    }
                }
            }
        }
        private void OnPackageItemRefresh(PackType _packType, int _index, int _itemId)
        {
            if (_packType == PackType.rptEquip)
            {
                //穿上装备的时候的处理
                var item = playerPack.GetItemModelByIndex(_packType, _index);
                if (item != null)
                {
                    RemoveLowGradeItemByEquipPlace(_index, item.equipScore);
                }
                OnPackageRefresh(PackType.rptItem);
            }
            else if (_packType == PackType.rptItem)
            {
                OnPackageRefresh(_packType);
            }
        }
        private string GetOneEquip()
        {
            var guid = string.Empty;
            foreach (var key in betterEquipModels.Keys)
            {
                guid = key;
                break;
            }
            return guid;
        }
        private void RemoveItemByEquipPlace(int _place)
        {
            var place = _place == 10 ? 9 : _place;
            var keys = new List<string>(betterEquipModels.Keys);
            for (int i = keys.Count - 1; i >= 0; i--)
            {
                var item = betterEquipModels[keys[i]];
                if (item != null && item.chinItemModel.EquipPlace == place)
                {
                    betterEquipModels.Remove(keys[i]);
                }
            }
        }
        private void RemoveLowGradeItemByEquipPlace(int _place, int _score)
        {
            var place = _place == 10 ? 9 : _place;
            var keys = new List<string>(betterEquipModels.Keys);
            for (int i = keys.Count - 1; i >= 0; i--)
            {
                var item = betterEquipModels[keys[i]];
                if (item != null && item.chinItemModel.EquipPlace == place && item.equipScore <= _score)
                {
                    betterEquipModels.Remove(keys[i]);
                }
            }
        }
        private bool TryGetEquipByPlace(int _place, out ItemModel _itemModel)
        {
            var place = _place == 10 ? 9 : _place;
            var keys = new List<string>(betterEquipModels.Keys);
            for (int i = keys.Count - 1; i >= 0; i--)
            {
                var item = betterEquipModels[keys[i]];
                if (item != null && item.chinItemModel.EquipPlace == place)
                {
                    _itemModel = item;
                    return true;
                }
            }
            _itemModel = null;
            return false;
        }
    }
}
System/BetterItemGet/RealmBetterEquipModel .cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 368f012abd3595c419a67d33f44153ea
timeCreated: 1534755541
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Compose/New/ComposeWinModel.cs
@@ -130,6 +130,24 @@
        return modellist;
    }
    public int GetTicketId(int firstType, int secondType, int thirdType)
    {
        var itemId = 0;
        var dict = ItemCompoundConfig.GetFirstComposeTypeDict(firstType);
        Dictionary<int, List<ItemCompoundConfig>> _secondTypeDict = null;
        dict.TryGetValue(secondType, out _secondTypeDict);
        if (_secondTypeDict != null)
        {
            List<ItemCompoundConfig> modellist = null;
            _secondTypeDict.TryGetValue(thirdType, out modellist);
            if (modellist != null && modellist.Count > 0)
            {
                int.TryParse(modellist[0].makeID, out itemId);
            }
        }
        return itemId;
    }
    public int[] makeIDs { get; private set; }
    public int[] unfixedItemIDs { get; private set; }
    public int[] costfixedItemIDs { get; private set; }
@@ -746,28 +764,36 @@
    {
        bool isEnough = true;
        Dictionary<int, Dictionary<int, List<ItemCompoundConfig>>> getFirstModel = ItemCompoundConfig.GetFirstComposeTypeDict((int)ComposeFuncType.Ticket);
        if(getFirstModel.ContainsKey(secondType))
        if (getFirstModel.ContainsKey(secondType))
        {
            if(getFirstModel[secondType].ContainsKey(0))
            if (getFirstModel[secondType].ContainsKey(0))
            {
                ItemCompoundConfig compoundConfig = getFirstModel[secondType][0][0];
                int[] fixedIDs = ConfigParse.GetMultipleStr<int>(compoundConfig.itemID);
                int[] fixedCnt = ConfigParse.GetMultipleStr<int>(compoundConfig.itemCount);
                for(int i= 0; i< fixedIDs.Length; i++)
                for (int i = 0; i < fixedIDs.Length; i++)
                {
                    int haveCnt = playerPack.GetItemCountByID(PackType.rptItem,fixedIDs[i]);
                    if(fixedCnt[i] > haveCnt)
                    int haveCnt = playerPack.GetItemCountByID(PackType.rptItem, fixedIDs[i]);
                    if (fixedCnt[i] > haveCnt)
                    {
                        isEnough = false;
                        break;
                    }
                }
            }
            else
            {
                isEnough = false;
            }
        }
        else
        {
            isEnough = false;
        }
        return isEnough;
    }
     #region 处理跳转界面数据
    #region 处理跳转界面数据
    public bool CheckComposeItemById(int itemId)
    {
System/Dogz/DogzActiveWin.cs
@@ -207,11 +207,12 @@
            ConfirmCancel.ShowItemConfirm(string.Format("消耗{0}X{1}永久增加1个助战神兽", _itemConfig.ItemName, model.GetAssistItemCnt()),
                model.AddAssistItem, model.GetAssistItemCnt(), () =>
            {
                model.SendBuyAssistCnt();
            });
        }
        private void TakeOffEquip()
        {
            model.SendPutOffEquip(0);
        }
        private void OpenEquipPack()
        {
@@ -219,6 +220,20 @@
        }
        private void CallBackDogz()
        {
            List<ItemModel> models = model.GetDogzEquips(model.presentSelectDogz);
            if(models != null
                && models.Count == 5)
            {
                if(!model.TryGetAssistDogzState(model.presentSelectDogz))
                {
                    model.SendChangeDogzAssist(1);
                }
                else
                {
                    model.SendChangeDogzAssist(0);
                }
            }
        }
        private void OpenDogzEquip(int index)
        {
System/Dogz/DogzCell.cs
@@ -28,10 +28,21 @@
            m_DogzIcon.SetSprite(_dogzCfg.HeadIcon);
            m_DogzIcon.SetNativeSize();
            var _dogzEquips = model.GetDogzEquips(_dogzCfg.ID);
            m_DogzIcon.material = (_dogzEquips == null || _dogzEquips.Count < 5) ? MaterialUtility.GetDefaultSpriteGrayMaterial() :
                MaterialUtility.GetUIDefaultGraphicMaterial();
            bool isActive = (_dogzEquips == null || _dogzEquips.Count < 5) ? false : true;
            m_DogzName.text = _dogzCfg.Name;
            //m_DogzGrade.text = StringUtility.Contact("评分:", 100);
            m_DogzGrade.text = StringUtility.Contact("评分:", 100);
            if (isActive)
            {
                m_DogzIcon.material = MaterialUtility.GetUIDefaultGraphicMaterial();
                m_DogzName.material = MaterialUtility.GetUIDefaultGraphicMaterial();
                m_DogzGrade.material = MaterialUtility.GetUIDefaultGraphicMaterial();
            }
            else
            {
                m_DogzIcon.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
                m_DogzName.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
                m_DogzGrade.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
            }
            m_DogzBtn.image.color = model.presentSelectDogz == _dogzCfg.ID ? Color.blue : Color.white;
            m_DogzAssist.gameObject.SetActive(model.TryGetAssistDogzState(_dogzCfg.ID));
            m_DogzBtn.onClick.RemoveAllListeners();
System/Dogz/DogzEquip.cs
@@ -32,9 +32,9 @@
            itemBaisc.cellBtn.RemoveAllListeners();
            itemBaisc.cellBtn.AddListener(()=>
            {
                ItemAttrData attrData = new ItemAttrData(model.itemId,false,(ulong)model.itemInfo.ItemCount,model.itemInfo.ItemPlace,
                    model.itemInfo.IsBind,false,PackType.rptDogzEquip,model.itemInfo.ItemGUID);
                tipsModel.SetItemTipsModel(attrData);
                tipsModel.SetItemTipsModel(model.packType,model.itemInfo.ItemGUID,false,false);
                tipsModel.SetDogzEquipBtn(tipsModel.curAttrData);
                tipsModel.ShowUICtrl();
            });
        }
    }
System/Dogz/DogzItemCell.cs
@@ -46,9 +46,9 @@
            itemBaisc.cellBtn.RemoveAllListeners();
            itemBaisc.cellBtn.AddListener(()=>
            {
                ItemAttrData attrData = new ItemAttrData(model.itemId, false, (ulong)model.itemInfo.ItemCount, model.itemInfo.ItemPlace,
                  model.itemInfo.IsBind, false, PackType.rptDogzItem, model.itemInfo.ItemGUID);
                tipsModel.SetItemTipsModel(attrData);
                tipsModel.SetItemTipsModel(model.packType, model.itemInfo.ItemGUID, false, false);
                tipsModel.SetDogzItemBtn(tipsModel.curAttrData);
                tipsModel.ShowUICtrl();
            });
        }
    }
System/Dogz/DogzModel.cs
@@ -69,7 +69,7 @@
            AddAssistItem = int.Parse(_funcCfg.Numerical2);
            AddAssistItemCnt = ConfigParse.GetMultipleStr<int>(_funcCfg.Numerical3);
            m_DogzEquipStrenLimit = ConfigParse.GetDic<int, int>(_funcCfg.Numerical4);
            _funcCfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("DogzPack");
            _funcCfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("DogzPack");
            DogzPackGridCnt = int.Parse(_funcCfg.Numerical1);
        }
        /// <summary>
@@ -236,28 +236,48 @@
            ItemModel itemModel = playerPack.GetItemModelByIndex(type, index);
            int dogzId = GetDogzIDByIndex(index);
            if (itemModel != null)
            List<ItemModel> modellist = GetDogzEquips(dogzId);
            if(modellist != null)
            {
                for (int i = 0; i < m_DogzEquipDict[dogzId].Count; i++)
                if (itemModel != null)
                {
                    if (m_DogzEquipDict[dogzId][i].itemInfo.ItemPlace == index)
                    bool isAdd = true;
                    for (int i = 0; i < modellist.Count; i++)
                    {
                        m_DogzEquipDict[dogzId][i] = itemModel;
                        return;
                        if (modellist[i].itemInfo.ItemPlace == index)
                        {
                            isAdd = false;
                            modellist[i] = itemModel;
                            break;
                        }
                    }
                    if(isAdd)
                    {
                       modellist.Add(itemModel);
                    }
                }
                else
                {
                    for (int i = 0; i < modellist.Count; i++)
                    {
                        if (modellist[i].itemInfo.ItemPlace == index)
                        {
                            modellist.RemoveAt(i);
                            break;
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < m_DogzEquipDict[dogzId].Count; i++)
                if(itemModel != null)
                {
                    if (m_DogzEquipDict[dogzId][i].itemInfo.ItemPlace == index)
                    {
                        m_DogzEquipDict[dogzId].RemoveAt(i);
                        return;
                    }
                    List<ItemModel> equipDatas = new List<ItemModel>();
                    equipDatas.Add(itemModel);
                    m_DogzEquipDict.Add(dogzId,equipDatas);
                }
            }
            if(RefreshDogzEquipAct != null)
            {
@@ -315,26 +335,26 @@
            return false;
        }
        public void SendPutOnEquip(int dogzId,int index)
        public void SendPutOnEquip(int index)
        {
            CA5C0_tagCMDogzEquipItem dogzPutOn = new CA5C0_tagCMDogzEquipItem();
            dogzPutOn.DogzID = (byte)dogzId;
            dogzPutOn.DogzID = (byte)presentSelectDogz;
            dogzPutOn.EquipIndex = (byte)index;
            GameNetSystem.Instance.SendInfo(dogzPutOn);
        }
        public void SendPutOffEquip(int dogzId, int equipPlace)
        public void SendPutOffEquip(int equipPlace)
        {
            CA5C1_tagCMDogzUnEquipItem dogzPutOff = new CA5C1_tagCMDogzUnEquipItem();
            dogzPutOff.DogzID = (byte)dogzId;
            dogzPutOff.DogzID = (byte)presentSelectDogz;
            dogzPutOff.EquipPlace = (byte)equipPlace;
            GameNetSystem.Instance.SendInfo(dogzPutOff);
        }
        public void SendChangeDogzAssist(int dogzId, int assistState)
        public void SendChangeDogzAssist(int assistState)
        {
            CA5C2_tagCMDogzBattleStateChange stateChange = new CA5C2_tagCMDogzBattleStateChange();
            stateChange.DogzID = (byte)dogzId;
            stateChange.DogzID = (byte)presentSelectDogz;
            stateChange.BatteState = (byte)assistState;
            GameNetSystem.Instance.SendInfo(stateChange);
        }
System/HappyXB/BestXBWin.cs
@@ -280,7 +280,8 @@
                    int needMoney = needToolCnt * xbOneMoney;
                    if(needToolCnt > 0)
                    {
                        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HappyXBCostTools", funcSet.costToolNums[1],needMoney,needToolCnt), (bool isOk) =>
                        ItemConfig itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(funcSet.costToolIds[1]);
                        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HappyXBCostTools", funcSet.costToolNums[1], itemConfig.ItemName,needMoney, needToolCnt), (bool isOk) =>
                        {
                            if (isOk)
                            {
@@ -309,7 +310,7 @@
            {
                maskObj.SetActive(true);
                isXBMany = true;
                XBModel.SendXBQuest(1, 1, 0);
                XBModel.SendXBQuest(1, 1, 2);
            }
            else
            {
System/HappyXB/RuneXBWin.cs
@@ -286,7 +286,8 @@
                    int needMoney = needToolCnt * xbOneMoney;
                    if (needToolCnt > 0)
                    {
                        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HappyXBCostTools", funcSet.costToolNums[1], needMoney, needToolCnt), (bool isOk) =>
                        ItemConfig itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(funcSet.costToolIds[1]);
                        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HappyXBCostTools", funcSet.costToolNums[1], itemConfig.ItemName,needMoney, needToolCnt), (bool isOk) =>
                        {
                            if (isOk)
                            {
@@ -314,7 +315,7 @@
            {
                maskObj.SetActive(true);
                isXBMany = true;
                XBModel.SendXBQuest(2, 1, 0);
                XBModel.SendXBQuest(2, 1, 2);
            }
            else
            {
System/KnapSack/Logic/EquipTip.cs
@@ -179,7 +179,8 @@
            yield return null;
            if(itemAttrData.isCompare)
            {
                if (itemAttrData.packType != PackType.rptEquip)
                if (itemAttrData.packType != PackType.rptEquip
                    && itemAttrData.packType != PackType.rptDogzEquip)
                {
                    itemTipsModel.SetCurTips(this.GetComponent<RectTransform>());
                }
@@ -205,7 +206,8 @@
            ItemCellModel cellModel = new ItemCellModel(itemAttrData.itemId,itemAttrData.isPreview, (ulong)itemAttrData.count, itemAttrData.isBind,
                itemAttrData.guid,itemAttrData.packType,itemAttrData.isCompare, itemAttrData.useDataDict);
            itemCell.Init(cellModel);
            if(itemAttrData.packType == PackType.rptEquip)
            if(itemAttrData.packType == PackType.rptEquip
                || itemAttrData.packType == PackType.rptDogzEquip)
            {
                putOnIcon.SetActive(true);
            }
@@ -262,7 +264,8 @@
            if (itemAttrData.isCompare)
            {
                if(itemAttrData.packType != PackType.rptEquip)
                if(itemAttrData.packType != PackType.rptEquip
                    && itemAttrData.packType != PackType.rptDogzEquip)
                {
                    CreateFuncBtn();
                }
System/KnapSack/Logic/ItemTipsModel.cs
@@ -71,6 +71,8 @@
            get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
        }
        DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } }
        public override void Init()
        {
            m_storeModel.RefreshTCBPlayerDataEvent += RefreshOfflinePluginTime;
@@ -637,11 +639,7 @@
                switch (attrData.winType)
                {
                    case ItemWinType.equipWin:
                        attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, attrData.guid); });
                        break;
                    case ItemWinType.wingsWin:
                        attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, attrData.guid); });
                        break;
                    case ItemWinType.guardWin:
                        attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, attrData.guid); });
                        break;
@@ -688,6 +686,36 @@
        }
        public void SetDogzItemBtn(ItemAttrData attrData)
        {
            if (attrData == null) return;
            if (attrData.itemConfig.CanSell == 1)
            {
                attrData.SetTipsFuncBtn(ItemWinBtnType.sell, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendSellQuest(ItemWinBtnType.sell, attrData); });
            }
            switch (attrData.winType)
            {
                case ItemWinType.equipWin:
                    attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { dogzModel.SendPutOnEquip(attrData.index); });
                    break;
            }
        }
        public void SetDogzEquipBtn(ItemAttrData attrData)
        {
            if (attrData == null) return;
            attrData.SetTipsFuncBtn(ItemWinBtnType.putOff, (ItemWinBtnType, ItemAttrData) => {
               dogzModel.SendPutOffEquip(dogzModel.GetDogzEquipPlaceByIndex(attrData.index));
            });
            attrData.SetTipsFuncBtn(ItemWinBtnType.strength, (ItemWinBtnType, ItemAttrData) => {
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StrengthFunc1);
            });
        }
        /// <summary>
        /// 设置仓库弹框按钮
        /// </summary>
System/KnapSack/Logic/PackModelInterface.cs
@@ -7,7 +7,7 @@
namespace Snxxz.UI
{
    public class PackModelInterface : Model, IBeforePlayerDataInitialize
    public class PackModelInterface : Model, IBeforePlayerDataInitialize,IPlayerLoginOk
    {
        private ItemConfig tagChinModel;
        private FuncConfigConfig _equipGSFormula;
@@ -88,6 +88,12 @@
            itemEffectCDDict.Clear();
            itemEffectTimelist.Clear();
        }
        public void OnPlayerLoginOk()
        {
        }
        public override void UnInit()
        {
@@ -582,7 +588,7 @@
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
            if (singlePack == null) return false;
            int startLockIndex = singlePack.openGridCount - GetInitGridCount(PackType.rptItem);
            int startLockIndex = singlePack.openGridCount - playerPack.InitBagGridCnt;
            FuncConfigConfig _tagFuncModel = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("OpenBagItem");
            int haveCount = playerPack.GetItemCountByID(PackType.rptItem,itemId);
            Equation.Instance.Clear();
@@ -736,26 +742,57 @@
                RefreshPickItemEvent(type,guid);
            }
        }
        Dictionary<int, ItemModel> RealmBetterDict = new Dictionary<int, ItemModel>();
        public Dictionary<int, ItemModel> CheckBetterEquipByRealm()
        {
            RealmBetterDict.Clear();
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
            if (singlePack == null) return RealmBetterDict;
            int realmLv = PlayerDatas.Instance.baseData.realmLevel;
            Dictionary<int,ItemModel> pairs = singlePack.GetPackModelIndexDict();
            foreach(var model in pairs.Values)
            {
                if(model.chinItemModel.EquipPlace > 0
                    && model.chinItemModel.EquipPlace != (int)RoleEquipType.retSpiritAnimal
                    && model.chinItemModel.RealmLimit <= realmLv
                    && !IsOverdue(model.itemInfo.ItemGUID,model.itemId,model.useDataDict)
                    && IsFightUp(model.itemId,model.equipScore) == 1)
                {
                    if(!RealmBetterDict.ContainsKey(model.EquipPlace))
                    {
                        RealmBetterDict.Add(model.EquipPlace,model);
                    }
                    else
                    {
                        if(model.equipScore > RealmBetterDict[model.EquipPlace].equipScore)
                        {
                            RealmBetterDict[model.EquipPlace] = model;
                        }
                    }
                }
            }
            return RealmBetterDict;
        }
        #endregion
        #region 解锁格子
        public int GetInitGridCount(PackType type)
        {
            FuncConfigConfig initGridCount = null;
            if (type == PackType.rptItem)
                initGridCount = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("InitBagCellCount");
            else if (type == PackType.rptWarehouse)
                initGridCount = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("InitDepotCellCount");
            return int.Parse(initGridCount.Numerical1);
        }
        public void OpenGrid(int chooseGridCount, PackType type)
        {
            SinglePackModel singlePack = playerPack.GetSinglePackModel(type);
            int openCount = chooseGridCount - singlePack.openGridCount;
            int index = chooseGridCount - GetInitGridCount(type);
            int index = 0;
            switch(type)
            {
                case PackType.rptItem:
                    index = chooseGridCount - playerPack.InitBagGridCnt;
                    break;
                case PackType.rptWarehouse:
                    index = chooseGridCount - playerPack.InitDepotGridCnt;
                    break;
            }
            itemTipsModel.SetExtendGirdModel(openCount,index, type);
            WindowCenter.Instance.Open<ExtendWin>();
        }
System/KnapSack/Logic/PackSendQuestMgr.cs
@@ -680,7 +680,7 @@
            if (useItemModel.itemId == 951)
            {
                int startLockIndex = singlePack.openGridCount - modelInterface.GetInitGridCount(PackType.rptItem);
                int startLockIndex = singlePack.openGridCount - playerPack.InitBagGridCnt;
                int chooseGridCnt = singlePack.openGridCount + GetExtendGridCnt(startLockIndex);
                modelInterface.OpenGrid(chooseGridCnt, PackType.rptItem);
                return;
@@ -776,6 +776,11 @@
                {
                    extendCnt = 1;
                }
                int remianLock = playerPack.MaxBagGridCnt - playerPack.GetSinglePackModel(PackType.rptItem).openGridCount;
                if(extendCnt > remianLock)
                {
                    extendCnt = remianLock;
                }
                return extendCnt;
            }
        }
System/KnapSack/Logic/PlayerPackModels.cs
@@ -17,6 +17,11 @@
        public Dictionary<int, Dictionary<int, int>> decomposeAttrDict = new Dictionary<int, Dictionary<int, int>>();
        public static string StrengthAttrShift_RecordKey = "StrengthAttrShift";
        public const string RecordKnapsackTitle = "RecordKnapsackTitle";
        public int MaxBagGridCnt { get; private set; }
        public int InitBagGridCnt { get; private set; }
        public int MaxDepotGridCnt { get; private set; }
        public int InitDepotGridCnt { get; private set; }
        public override void Init()
        {
            List<DungeonOpenTimeConfig> dungeonlist = ConfigManager.Instance.GetAllValues<DungeonOpenTimeConfig>();
@@ -71,6 +76,11 @@
            minDecomposeNum = int.Parse(equipDecompose.Numerical1);
            defaultUnSelectlist = ConfigParse.GetMultipleStr<int>(equipDecompose.Numerical2);
            InitDepotGridCnt = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("InitDepotCellCount").Numerical1);
            InitBagGridCnt = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("InitBagCellCount").Numerical1);
            MaxBagGridCnt = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("MaxBagCellCount").Numerical1);
            MaxDepotGridCnt = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("MaxDepotCellCount").Numerical1);
        }
        
        public void OnBeforePlayerDataInitialize()
System/KnapSack/RealmBetterEquipBehaviour.cs
New file
@@ -0,0 +1,92 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, December 05, 2017
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
using Snxxz.UI;
namespace Snxxz.UI
{
    public class RealmBetterEquipBehaviour : MonoBehaviour
    {
        [SerializeField] RectTransform m_ContainerBetterEquip;
        [SerializeField] ItemCell m_EquipBehaviour;
        [SerializeField] Text m_EquipName;
        [SerializeField] Button m_Close;
        [SerializeField] Button m_Puton;
        [SerializeField] Button m_BetterEquipDetail;
        ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        RealmBetterEquipModel model { get { return ModelCenter.Instance.GetModel<RealmBetterEquipModel>(); } }
        private void OnEnable()
        {
            m_Close.AddListener(CloseBetterEquip);
            m_Puton.AddListener(PutOnBetterEquip);
            m_BetterEquipDetail.AddListener(ShowBetterEquipDetails);
        }
        private void OnDisable()
        {
            m_Close.RemoveAllListeners();
            m_Puton.RemoveAllListeners();
            m_BetterEquipDetail.RemoveAllListeners();
        }
        public void ShowBetterEquip()
        {
            m_ContainerBetterEquip.gameObject.SetActive(false);
            if (!string.IsNullOrEmpty(model.currentEquipGuid))
            {
                ItemModel betterEquip;
                if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
                {
                    DrawBetterEquip(betterEquip);
                    m_ContainerBetterEquip.gameObject.SetActive(true);
                }
            }
        }
        private void PutOnBetterEquip()
        {
            PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, model.currentEquipGuid);
            model.ReportConfirmBetterEquip(model.currentEquipGuid);
        }
        private void ShowBetterEquipDetails()
        {
            ItemModel betterEquip;
            if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
            {
                var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(betterEquip.itemInfo.ItemID);
                itemTipsModel.SetItemTipsModel(PackType.rptItem, betterEquip.itemInfo.ItemGUID);
            }
        }
        private void CloseBetterEquip()
        {
            model.ReportConfirmBetterEquip(model.currentEquipGuid);
        }
        private void DrawBetterEquip(ItemModel betterModel)
        {
            var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(betterModel.itemInfo.ItemID);
            m_EquipName.text = itemConfig.ItemName;
            m_EquipName.color = UIHelper.GetUIColor(itemConfig.ItemColor, true);
            m_EquipBehaviour.Init(betterModel, true);
        }
    }
}
System/KnapSack/RealmBetterEquipBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c8eb21cc504d5514b950ab4d60ef9814
timeCreated: 1534753740
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/MainInterfacePanel/InGamePushContainer.cs
@@ -14,6 +14,7 @@
    public class InGamePushContainer : MonoBehaviour
    {
        [SerializeField] BetterItemGetBehaviour m_BetterEquipPusher;
        [SerializeField] RealmBetterEquipBehaviour m_RealmBetterEquipPusher;
        [SerializeField] PreciousItemGetBehaviour m_PreciousItemPusher;
        [SerializeField] FindPreciousBossRebornBehaviour m_BossRebornPusher;
        [SerializeField] ItemUseBehaviour m_itemUsePusher;
@@ -26,6 +27,7 @@
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        BetterEquipGetModel betterEquipGetModel { get { return ModelCenter.Instance.GetModel<BetterEquipGetModel>(); } }
        RealmBetterEquipModel realmEquipModel { get { return ModelCenter.Instance.GetModel<RealmBetterEquipModel>(); } }
        PreciousItemGetModel preciousItemGetModel { get { return ModelCenter.Instance.GetModel<PreciousItemGetModel>(); } }
        ItemUseModel itemUseModel { get { return ModelCenter.Instance.GetModel<ItemUseModel>(); } }
        ItemOverdueModel itemOverdue { get { return ModelCenter.Instance.GetModel<ItemOverdueModel>(); } }
@@ -38,6 +40,7 @@
        public void Init()
        {
            CheckBetterEquip();
            CheckRealmBetterEquip();
            CheckPreciousItem();
            CheckBossReborn();
            CheckItemUse();
@@ -49,6 +52,7 @@
            FirstChargeTrialShow();
            playerPack.RefreshDecomAttrAct += CheckEquipDecompose;
            betterEquipGetModel.showEquipRefreshEvent += CheckBetterEquip;
            realmEquipModel.showEquipRefreshEvent += CheckRealmBetterEquip;
            preciousItemGetModel.showItemRefreshEvent += CheckPreciousItem;
            findPreciousModel.bossRebornNotifyChangeEvent += CheckBossReborn;
            itemUseModel.showItemRefreshEvent += CheckItemUse;
@@ -68,6 +72,28 @@
            NewBieCenter.Instance.guideBeginEvent -= OnNewBieGuideBegin;
            guardModel.onDungeonEquipGuardEvent -= CheckDungeonGuard;
            firstTimeRechargeModel.IsTipShowEvent -= FirstChargeTrialShow;
            realmEquipModel.showEquipRefreshEvent -= CheckRealmBetterEquip;
        }
        private void CheckRealmBetterEquip()
        {
            if (string.IsNullOrEmpty(realmEquipModel.currentEquipGuid))
            {
                m_RealmBetterEquipPusher.gameObject.SetActive(false);
            }
            else
            {
                if (betterEquipGetModel.ShowBetterEquipAble())
                {
                    m_RealmBetterEquipPusher.gameObject.SetActive(true);
                    m_RealmBetterEquipPusher.ShowBetterEquip();
                }
                else
                {
                    m_RealmBetterEquipPusher.gameObject.SetActive(false);
                }
            }
        }
        private void CheckBetterEquip()
System/NewBieGuidance/NewBieCenter.cs
@@ -54,6 +54,7 @@
        PlayerDeadModel playerDeadModel { get { return ModelCenter.Instance.GetModel<PlayerDeadModel>(); } }
        TeamModel teamModel { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }
        DailyQuestModel dailyModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        public event Action guideStepChangeEvent;
        public event Action guideBeginEvent;
@@ -340,7 +341,14 @@
                case GuideTriggerType.RealmSitDown:
                    return false;
                case GuideTriggerType.ItemCompound:
                    return composeModel.IsComposeTicketByType(config.Condition);
                    if (DungeonSuppliesLackWin.lackType != DungeonSuppliesLackWin.LackType.FairyLand)
                    {
                        return false;
                    }
                    var itemId = composeModel.GetTicketId((int)ComposeFuncType.Ticket, config.Condition, 0);
                    var singlepack = packModel.GetSinglePackModel(PackType.rptItem);
                    var count = singlepack != null ? singlepack.GetItemCountByID(itemId) : 0;
                    return composeModel.IsComposeTicketByType(config.Condition) && itemId != 0 && count == 0;
                case GuideTriggerType.HangUpResult:
                    return true;
                case GuideTriggerType.BranchQuestCando:
System/Pet/PetAttributeMethods.cs
@@ -190,17 +190,8 @@
            UIEffect uie = cell.transform.GetComponent<UIEffect>();
            if (petmodel.ListEffectSkill.Contains(curPetSkillIds[skillIdIndex]))
            {
                if (!uie.IsPlaying)
                {
                    uie.Play();
                }
            }
            else
            {
                if (uie.IsPlaying)
                {
                    uie.Stop();
                }
                uie.Play();
            }
            if (petmodel._DicPetBack.ContainsKey(petInfoConfig.ID))
            {
System/Realm/RealmUpWin.cs
@@ -40,7 +40,6 @@
        [SerializeField] RealmProgressBehaviour m_RealmProgress;
        [SerializeField] UIEffect m_RealmDungeonSfx;
        [SerializeField] UIEffect m_GetRealmPointSfx;
        [SerializeField] Button m_FuncButton;
        [SerializeField] Text m_FuncButtonTxt;
@@ -55,8 +54,14 @@
        [SerializeField, Header("模型位置")] Vector3[] m_ModelPositions;
        [SerializeField, Header("当前境界位置")] Vector3[] m_RealmNowPositions;
        [SerializeField, Header("下一境界位置")] Vector3[] m_RealmNextwPositions;
        [SerializeField, Header("Boss位置")] Vector3[] m_BossPositions;
        [SerializeField, Header("Boss出现延长")] float m_DelayEnterTime = 1f;
        int cacheRealmPoint = 0;
        Coroutine cacheCoroutine = null;
        RuntimeAnimatorController cacheController = null;
        const string State_EnterHash = "Show";
        const string State_IdleHash = "Idle";
        RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
@@ -75,7 +80,21 @@
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
            WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent;
            cacheRealmPoint = PlayerDatas.Instance.extersion.realmPoint;
            m_RawBoss.gameObject.SetActive(false);
            m_RawPlayer.gameObject.SetActive(false);
            Display();
        }
        protected override void OnActived()
        {
            base.OnActived();
            if (realmModel.realmDungeonState)
            {
                StopBoss();
                m_RawBoss.gameObject.SetActive(false);
                m_RawPlayer.gameObject.SetActive(true);
                UI3DModelExhibition.Instance.BeginShowSitDownPlayer(m_RawPlayer, PlayerDatas.Instance.baseData.Job);
            }
        }
        protected override void OnAfterOpen()
@@ -91,6 +110,7 @@
            if (realmModel.realmDungeonState)
            {
                m_RealmDungeonSfx.Play();
                StartCoroutine(Co_DisplayBossShow());
            }
            realmModel.realmDungeonState = false;
        }
@@ -99,9 +119,18 @@
        {
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
            WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent;
            UI3DModelExhibition.Instance.StopShowNPC();
            StopBoss();
            UI3DModelExhibition.Instance.StopShowPlayer();
            realmModel.realmDungeonState = false;
            if (cacheCoroutine != null)
            {
                StopCoroutine(cacheCoroutine);
                cacheCoroutine = null;
            }
            if (cacheController != null)
            {
                cacheController = null;
            }
        }
        protected override void OnAfterClose()
@@ -116,6 +145,17 @@
            }
        }
        #endregion
        IEnumerator Co_DisplayBossShow()
        {
            yield return WaitingForSecondConst.WaitMS800;
            ResetRunTimeController();
            var config = ConfigManager.Instance.GetTemplate<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel);
            m_RawPlayer.gameObject.SetActive(false);
            UI3DModelExhibition.Instance.StopShowPlayer();
            yield return WaitingForSecondConst.GetWaitForSeconds(m_DelayEnterTime > 0 ? m_DelayEnterTime : 1f);
            StartBoss(config, true);
        }
        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
        {
@@ -135,10 +175,6 @@
                DisplayModel();
                DisplayButton();
                if (PlayerDatas.Instance.extersion.realmPoint >= cacheRealmPoint)
                {
                    DisplayGetRealmPointSfx();
                }
                cacheRealmPoint = PlayerDatas.Instance.extersion.realmPoint;
            }
        }
@@ -236,16 +272,58 @@
            if (realmModel.IsRealmHighest || _realmPoint < config.NeedPoint)
            {
                m_RawPlayer.gameObject.SetActive(true);
                StopBoss();
                m_RawBoss.gameObject.SetActive(false);
                UI3DModelExhibition.Instance.StopShowNPC();
                UI3DModelExhibition.Instance.BeginShowSitDownPlayer(m_RawPlayer, PlayerDatas.Instance.baseData.Job);
            }
            else if (_realmPoint >= config.NeedGood)
            {
                m_RawBoss.gameObject.SetActive(true);
                m_RawPlayer.gameObject.SetActive(false);
                ResetRunTimeController();
                UI3DModelExhibition.Instance.StopShowPlayer();
                UI3DModelExhibition.Instance.BeginShowNPC(config.BossID, config.IsBigRealm == 1 ? Vector3.zero : direction, m_RawBoss, false);
                StartBoss(config);
            }
        }
        private void StopBoss()
        {
            ResetRunTimeController();
            UI3DModelExhibition.Instance.StopShowNPC();
        }
        private void ResetRunTimeController()
        {
            var npcModel = UI3DModelExhibition.Instance.NpcModelPet;
            if (npcModel != null)
            {
                var animator = npcModel.GetComponentInChildren<Animator>();
                if (animator != null && cacheController != null)
                {
                    animator.runtimeAnimatorController = cacheController;
                }
            }
        }
        private void StartBoss(RealmConfig config, bool act = false)
        {
            StopBoss();
            m_RawBoss.gameObject.SetActive(true);
            UI3DModelExhibition.Instance.StopShowPlayer();
            UI3DModelExhibition.Instance.BeginShowNPC(config.BossID, config.IsBigRealm == 1 ? Vector3.zero : direction, m_RawBoss, false);
            var npcConfig = ConfigManager.Instance.GetTemplate<NPCConfig>(config.BossID);
            var npcModel = UI3DModelExhibition.Instance.NpcModelPet;
            m_RawBoss.transform.localPosition = config.IsBigRealm == 1 ? m_BossPositions[1] : m_BossPositions[0];
            if (npcModel != null)
            {
                var animator = npcModel.GetComponentInChildren<Animator>();
                if (animator != null)
                {
                    cacheController = animator.runtimeAnimatorController;
                    var runtimeController = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerRealmSuffix, npcConfig.MODE);
                    animator.runtimeAnimatorController = runtimeController;
                    animator.Play(act ? State_EnterHash : State_IdleHash, 0);
                }
            }
        }
@@ -271,14 +349,6 @@
            else
            {
                m_FuncButtonTxt.text = Language.Get("RealmWin_Bewrite_1");
            }
        }
        void DisplayGetRealmPointSfx()
        {
            if (m_GetRealmPointSfx != null)
            {
                m_GetRealmPointSfx.Play();
            }
        }
System/Strengthening/GodBeastChildNodes.cs
New file
@@ -0,0 +1,42 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, August 20, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class GodBeastChildNodes:MonoBehaviour {
        [SerializeField] ItemCell m_ItemCell;
        [SerializeField] GameObject m_ChoosenImg;
        [SerializeField] Text m_TextNumber;
        [SerializeField] Button m_Button;
        public Button ButtonDown
        {
            get { return m_Button; }
            set { m_Button = value; }
        }
        public GameObject ChoosenImg
        {
            get { return m_ChoosenImg; }
            set { m_ChoosenImg = value; }
        }
        public ItemCell ItemCell
        {
            get { return m_ItemCell; }
            set { m_ItemCell = value; }
        }
        public Text TextNumber
        {
            get { return m_TextNumber; }
            set { m_TextNumber = value; }
        }
    }
}
System/Strengthening/GodBeastChildNodes.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 589b5dafae4252347a827e827ae08ba3
timeCreated: 1534766620
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Strengthening/GodBeastEntry.cs
@@ -16,10 +16,17 @@
        [SerializeField] ItemCell m_itemCell;
        [SerializeField] GameObject m_Selectedbar_Image;
        [SerializeField] Text m_Item_Text;
        //[SerializeField] Button //
        [SerializeField] Button m_GodBeastButton;
        public Button GodBeastButton
        {
            get { return m_GodBeastButton; }
            set { m_GodBeastButton = value; }
        }
        DogzModel Dogz_model;
        DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel<DogzModel>()); } }
        public void GetGodBeastLocationMarker(int locationMarker)
        public void GetGodBeastLocationMarker(int locationMarker, int currentlySelected)
        {
            int godBeastNumber = locationMarker / 10;
            int godBeastPart = locationMarker % 10;
@@ -43,12 +50,17 @@
                        {
                            m_Item_Text.text = itemConfig.ItemName;
                        }
                        if (locationMarker == currentlySelected)
                        {
                            m_Selectedbar_Image.SetActive(true);
                        }
                        else
                        {
                            m_Selectedbar_Image.SetActive(false);
                        }
                    }
                }
            }
        }
    }
System/Strengthening/GodBeastReinforcementWin.cs
@@ -20,6 +20,7 @@
        public int GodBeastQuality;//神兽品质
        public int GodBeastStar;//神兽星级
        public int LocationMarker;//位置标记
        public int EquipScore;//装备评分
    }
    public class GodBeastReinforcementWin : Window
    {
@@ -30,6 +31,7 @@
        DogzModel Dogz_model;
        DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel<DogzModel>()); } }
        private List<GodBeastClass> GodBeastList = new List<GodBeastClass>();
        private int CurrentlySelected = 0;
        #region Built-in
        protected override void BindController()
        {
@@ -47,6 +49,7 @@
            OnCreateGridLineCell(m_ScrollerController);
            if (GodBeastList.Count > 0)
            {
                CurrentlySelected = GodBeastList[0].LocationMarker;
                m_ScrollerController.JumpIndex(0);
            }     
            m_GodBeastSlidingList.Init();
@@ -57,8 +60,7 @@
        }
        protected override void OnPreClose()
        {
            m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
        {
            m_ScrollerController.OnRefreshCell -= OnRefreshGridCell;
        }
@@ -85,9 +87,18 @@
                        godBeastClass.GodBeastPart = itemModel[i].EquipPlace;
                        godBeastClass.GodBeastQuality = itemModel[i].chinItemModel.ItemColor;
                        godBeastClass.GodBeastStar = itemModel[i].chinItemModel.StarLevel;
                        godBeastClass.EquipScore = itemModel[i].equipScore;
                        var IudetDogzEquipPlus = itemModel[i].GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);// 神兽装备强化信息列表 [强化等级, 强化熟练度]
                        godBeastClass.GodBeastLv = IudetDogzEquipPlus[0];
                        godBeastClass.GodBeasProficiency = IudetDogzEquipPlus[1];
                        if (IudetDogzEquipPlus == null)
                        {
                            godBeastClass.GodBeastLv = 0;
                            godBeastClass.GodBeasProficiency = 0;
                        }
                        else
                        {
                            godBeastClass.GodBeastLv = IudetDogzEquipPlus[0];
                            godBeastClass.GodBeasProficiency = IudetDogzEquipPlus[1];
                        }
                        godBeastClass.LocationMarker= key*10+ itemModel[i].EquipPlace;
                        GodBeastList.Add(godBeastClass);
                    }
@@ -117,6 +128,10 @@
            {
                return -x.GodBeasProficiency.CompareTo(y.GodBeasProficiency);
            }
            if (x.EquipScore.CompareTo(y.EquipScore) != 0)//装备评分
            {
                return -x.EquipScore.CompareTo(y.EquipScore);
            }
            return 1;
        }
        void OnCreateGridLineCell(ScrollerController gridCtrl)
@@ -142,6 +157,16 @@
        {
            GodBeastEntry godBeastEntry = cell.GetComponent<GodBeastEntry>();
            int locationMarker = cell.index;
            godBeastEntry.GetGodBeastLocationMarker(locationMarker, CurrentlySelected);
            godBeastEntry.GodBeastButton.RemoveAllListeners();
            godBeastEntry.GodBeastButton.AddListener(()=>
            {
                if (locationMarker != CurrentlySelected)
                {
                    CurrentlySelected = locationMarker;
                    m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                }
            });
        }
    }
System/Strengthening/GodBeastSlidingList.cs
@@ -5,10 +5,26 @@
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
//神兽强化右侧材料吸收列表
namespace Snxxz.UI {
using System.Collections.Generic;
using System;
//神兽强化右侧材料吸收列表
namespace Snxxz.UI
{
    public class GodBeastBagClass
    {
        public int ItemId;//ID
        public int Index;//下标
        public int IsEquipment;//是否装备0水晶,1装备
        public int Color;//品质颜色
        public int Star;//星级
        public int LV;//等级
        public int Proficiency;//熟练度
        public int EquipScore;//装备评分
        public int Part;//装备位
    }
    public class GodBeastSlidingList:MonoBehaviour {
    public class GodBeastSlidingList : MonoBehaviour
    {
        [SerializeField] ScrollerController m_ScrollerController;
        [SerializeField] Text m_Label;
@@ -23,27 +39,103 @@
        [SerializeField] Toggle m_ToggleAll;
        public int LINE = 10;
        public static event Action<Dictionary<int, int>> AbsorbEvent;
        private List<GodBeastBagClass> GodBeastBagList = new List<GodBeastBagClass>();
        private List<int> DeleteIndexList = new List<int>();
        private Dictionary<int, int> AbsorptionDic = new Dictionary<int, int>();
        private int Quality = 10;
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
        private void Start()
        {
            m_Arrow.AddListener(OnClickArrow);
            m_ButtonAll.AddListener(()=>{ OnClickSwith(10); });
            m_ButtonCrystal.AddListener(() => { OnClickSwith(1);});
            m_ButtonBlue.AddListener(() => { OnClickSwith(2); });
            m_ButtonPurple.AddListener(() => { OnClickSwith(3); });
            m_ButtonOrange.AddListener(() => { OnClickSwith(4); });
            m_ButtonAll.AddListener(() =>
            {
                OnClickSwith(10);
                if (m_ToggleAll.isOn)
                {
                    m_ToggleAll.isOn = false;
                }
                GetGodBeastBag();
                FilterQuality();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                if (AbsorbEvent != null)
                {
                    AbsorbEvent(AbsorptionDic);
                }
            });
            m_ButtonCrystal.AddListener(() =>
            {
                OnClickSwith(0);
                if (m_ToggleAll.isOn)
                {
                    m_ToggleAll.isOn = false;
                }
                GetGodBeastBag();
                FilterQuality();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                if (AbsorbEvent != null)
                {
                    AbsorbEvent(AbsorptionDic);
                }
            });
            m_ButtonBlue.AddListener(() =>
            {
                OnClickSwith(2);
                if (m_ToggleAll.isOn)
                {
                    m_ToggleAll.isOn = false;
                }
                GetGodBeastBag();
                FilterQuality();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                if (AbsorbEvent != null)
                {
                    AbsorbEvent(AbsorptionDic);
                }
            });
            m_ButtonPurple.AddListener(() =>
            {
                OnClickSwith(3);
                if (m_ToggleAll.isOn)
                {
                    m_ToggleAll.isOn = false;
                }
                GetGodBeastBag();
                FilterQuality();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                if (AbsorbEvent != null)
                {
                    AbsorbEvent(AbsorptionDic);
                }
            });
            m_ButtonOrange.AddListener(() =>
            {
                OnClickSwith(4);
                if (m_ToggleAll.isOn)
                {
                    m_ToggleAll.isOn = false;
                }
                GetGodBeastBag();
                FilterQuality();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                if (AbsorbEvent != null)
                {
                    AbsorbEvent(AbsorptionDic);
                }
            });
            m_ToggleAll.onValueChanged.AddListener(OnClickToggle);
        }
        private void OnEnable()
        {
        }
        private void OnDisable()
        {
        }
        public void  Init()
        public void Init()
        {
            Quality = 10;
            ContentSelect(Quality);
@@ -55,6 +147,8 @@
            {
                m_ToggleAll.isOn = false;
            }
            GetGodBeastBag();//获取神兽背包数据排序
            FilterQuality();//分类筛选
            m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
            OnCreateGridLineCell(m_ScrollerController);
@@ -65,6 +159,114 @@
            m_ScrollerController.OnRefreshCell -= OnRefreshGridCell;
        }
        private void GetGodBeastBag()//获取神兽背包数据排序
        {
            GodBeastBagList.Clear();
            if (playerPack.GetSinglePackModel(PackType.rptDogzItem) == null)
            {
                return;
            }
            Dictionary<int, ItemModel> BackpackDic = playerPack.GetSinglePackModel(PackType.rptDogzItem).GetPackModelIndexDict();
            foreach (var key in BackpackDic.Keys)
            {
                var itemModel = BackpackDic[key];
                GodBeastBagClass godBeastBagClass = new GodBeastBagClass();
                godBeastBagClass.ItemId = itemModel.itemId;
                godBeastBagClass.Index = key;
                if (itemModel.chinItemModel.Type != 70)
                {
                    godBeastBagClass.IsEquipment = 1;
                }
                else
                {
                    godBeastBagClass.IsEquipment = 0;
                }
                godBeastBagClass.Color = itemModel.chinItemModel.ItemColor;
                godBeastBagClass.Star = itemModel.chinItemModel.StarLevel;
                godBeastBagClass.EquipScore = itemModel.equipScore;
                godBeastBagClass.Part = itemModel.EquipPlace;
                var IudetDogzEquipPlus = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);// 神兽装备强化信息列表 [强化等级, 强化熟练度]
                if (IudetDogzEquipPlus == null)
                {
                    godBeastBagClass.LV = 0;
                    godBeastBagClass.Proficiency = 0;
                }
                else
                {
                    godBeastBagClass.LV = IudetDogzEquipPlus[0];
                    godBeastBagClass.Proficiency = IudetDogzEquipPlus[1];
                }
                GodBeastBagList.Add(godBeastBagClass);
            }
            GodBeastBagList.Sort(Compare);
        }
        int Compare(GodBeastBagClass x, GodBeastBagClass y)
        {
            if (x.IsEquipment.CompareTo(y.IsEquipment) != 0)//是否强化水晶
            {
                return x.IsEquipment.CompareTo(y.IsEquipment);
            }
            if (x.Proficiency.CompareTo(y.Proficiency) != 0)//强化熟练度
            {
                return -x.Proficiency.CompareTo(y.Proficiency);
            }
            if (x.Color.CompareTo(y.Color) != 0)//品质
            {
                return -x.Color.CompareTo(y.Color);
            }
            if (x.Star.CompareTo(y.Star) != 0)//星级
            {
                return -x.Star.CompareTo(y.Star);
            }
            if (x.Part.CompareTo(y.Part) != 0)//装备位
            {
                return x.Part.CompareTo(y.Part);
            }
            if (x.EquipScore.CompareTo(y.EquipScore) != 0)//装备评分
            {
                return x.EquipScore.CompareTo(y.EquipScore);
            }
            return 1;
        }
        private void FilterQuality()//分类筛选
        {
            DeleteIndexList.Clear();
            AbsorptionDic.Clear();
            for (int i = 0; i < GodBeastBagList.Count; i++)
            {
                if (Quality > 0)//只有水晶
                {
                    if (GodBeastBagList[i].IsEquipment != 0)
                    {
                        int type = i;
                        DeleteIndexList.Add(type);
                    }
                }
                else
                {
                    if (Quality < 10 && (GodBeastBagList[i].IsEquipment == 1 || GodBeastBagList[i].Color > Quality))//过滤掉只剩所选品质装备
                    {
                        int type = i;
                        DeleteIndexList.Add(type);
                    }
                }
            }
            for (int j = 0; j < DeleteIndexList.Count; j++)
            {
                GodBeastBagList.RemoveAt(DeleteIndexList[j]);
            }
            if (m_ToggleAll.isOn)
            {
                for (int k = 0; k < GodBeastBagList.Count; k++)
                {
                    AbsorptionDic.Add(GodBeastBagList[k].Index, 1);
                }
            }
        }
        private void OnClickArrow()
        {
            m_ScrollViewFirst.SetActive(!m_ScrollViewFirst.activeSelf);
@@ -72,7 +274,24 @@
        private void OnClickToggle(bool IsBool)
        {
            if (IsBool)
            {
            }
            else
            {
                if (AbsorptionDic.Count != 0)
                {
                    AbsorptionDic.Clear();
                }
            }
            GetGodBeastBag();
            FilterQuality();
            m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
            if (AbsorbEvent != null)
            {
                AbsorbEvent(AbsorptionDic);
            }
        }
        private void OnClickSwith(int Type)
        {
@@ -87,7 +306,7 @@
        {
            switch (Type)
            {
                case 1:
                case 0:
                    m_Label.text = "强化水晶";
                    break;
                case 2:
@@ -123,14 +342,38 @@
            int childCode = 0;
            for (childCode = 0; childCode < cell.transform.childCount; childCode++)
            {
                ChildNodes _ChildNodes = cell.transform.GetChild(childCode).GetComponent<ChildNodes>();
                _ChildNodes._ItemIcon.SetActive(false);
                _ChildNodes._Elect.SetActive(false);
                GodBeastChildNodes GodBeastChildNodes = cell.transform.GetChild(childCode).GetComponent<GodBeastChildNodes>();
                GodBeastChildNodes.ItemCell.gameObject.SetActive(false);
                GodBeastChildNodes.ChoosenImg.SetActive(false);
                GodBeastChildNodes.TextNumber.gameObject.SetActive(false);
                int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1);
                if (cellCount - 1 < 1)
                GodBeastChildNodes.ButtonDown.RemoveAllListeners();
                if (cellCount - 1 < GodBeastBagList.Count)
                {
                    int index = cellCount - 1;
                    GodBeastChildNodes.ItemCell.gameObject.SetActive(true);
                    GodBeastBagClass godBeastBagClass = GodBeastBagList[index];
                    if (AbsorptionDic.ContainsKey(godBeastBagClass.Index))
                    {
                        GodBeastChildNodes.ChoosenImg.SetActive(true);
                    }
                    GodBeastChildNodes.ButtonDown.AddListener(() =>
                    {
                        if (AbsorptionDic.ContainsKey(godBeastBagClass.Index))
                        {
                            AbsorptionDic.Remove(godBeastBagClass.Index);
                        }
                        else
                        {
                            AbsorptionDic.Add(godBeastBagClass.Index,1);
                        }
                        m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                        if (AbsorbEvent != null)
                        {
                            AbsorbEvent(AbsorptionDic);
                        }
                    });
                }
            }
        }
System/WindowBase/ModelCenter.cs
@@ -144,6 +144,7 @@
            RegisterModel<ActivityModel>();
            RegisterModel<PlayerDeadModel>();
            RegisterModel<BetterEquipGetModel>();
            RegisterModel<RealmBetterEquipModel>();
            RegisterModel<PreciousItemGetModel>();
            RegisterModel<PlayerMainDate>();
            RegisterModel<StoryMissionsModel>();
UI/Common/SortTable.cs
@@ -1,67 +1,67 @@
using EnhancedUI.EnhancedScroller;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class SortTable : MonoBehaviour
    {
        [SerializeField] SortType m_SortType;
        public SortType sortType
        {
            get
            {
                return m_SortType;
            }
            set
            {
                m_SortType = value;
            }
        }
        [SerializeField] List<SortElement> m_SortElements;
        [SerializeField] ScrollerController m_Controller;
        [SerializeField] ClickScreenOtherSpace m_ClickOtherSpace;
        [SerializeField] Text m_TargetDisplay;
        public event Action<int> onSelectSortEvent;
        public event Action onSortCloseEvent;
        DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } }
        private void Awake()
        {
            m_Controller.OnRefreshCell += OnRefreshCell;
        }
        private void OnEnable()
        {
            m_Controller.Refresh();
            if (m_SortElements != null)
            {
                for (int i = 0; i < m_SortElements.Count; i++)
                {
                    m_Controller.AddCell(ScrollerDataType.Header, i, OnSortSelect);
                }
            }
            m_Controller.Restart();
            if (m_ClickOtherSpace != null)
            {
                m_ClickOtherSpace.RemoveAllListeners();
                m_ClickOtherSpace.AddListener(() =>
                {
                    if (onSortCloseEvent != null)
                    {
                        onSortCloseEvent();
                    }
                });
            }
        }
        private void OnSortSelect(CellView _cell)
        {
            var _index = _cell.index;
            var type = m_SortElements[_index].type;
using EnhancedUI.EnhancedScroller;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class SortTable : MonoBehaviour
    {
        [SerializeField] SortType m_SortType;
        public SortType sortType
        {
            get
            {
                return m_SortType;
            }
            set
            {
                m_SortType = value;
            }
        }
        [SerializeField] List<SortElement> m_SortElements;
        [SerializeField] ScrollerController m_Controller;
        [SerializeField] ClickScreenOtherSpace m_ClickOtherSpace;
        [SerializeField] Text m_TargetDisplay;
        public event Action<int> onSelectSortEvent;
        public event Action onSortCloseEvent;
        DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } }
        private void Awake()
        {
            m_Controller.OnRefreshCell += OnRefreshCell;
        }
        private void OnEnable()
        {
            m_Controller.Refresh();
            if (m_SortElements != null)
            {
                for (int i = 0; i < m_SortElements.Count; i++)
                {
                    m_Controller.AddCell(ScrollerDataType.Header, i, OnSortSelect);
                }
            }
            m_Controller.Restart();
            if (m_ClickOtherSpace != null)
            {
                m_ClickOtherSpace.RemoveAllListeners();
                m_ClickOtherSpace.AddListener(() =>
                {
                    if (onSortCloseEvent != null)
                    {
                        onSortCloseEvent();
                    }
                });
            }
        }
        private void OnSortSelect(CellView _cell)
        {
            var _index = _cell.index;
            var type = m_SortElements[_index].type;
            switch (sortType)
            {
                case SortType.EquipQuality:
@@ -70,48 +70,48 @@
                case SortType.EquipStar:
                    dogzModel.SelectDogzItemStart = type;
                    break;
            }
            if (onSelectSortEvent != null)
            {
                onSelectSortEvent(type);
            }
            if (onSortCloseEvent != null)
            {
                onSortCloseEvent();
            }
            if (m_TargetDisplay != null)
            {
                m_TargetDisplay.text = Language.Get(m_SortElements[_index].textKey);
            }
            this.gameObject.SetActive(false);
        }
        private void OnRefreshCell(ScrollerDataType type, CellView cell)
        {
            var _sortCell = cell as SortCell;
            _sortCell.sortTypeTxt.text = Language.Get(m_SortElements[cell.index].textKey);
        }
        public void SetDefault()
        {
            if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0)
            {
                m_TargetDisplay.text = Language.Get(m_SortElements[0].textKey);
            }
        }
    }
    public enum SortType
    {
        EquipQuality,
        EquipStar,
    }
    [Serializable]
    public struct SortElement
    {
        [Header("语言表key")]
        public string textKey;
        public int type;
    }
}
            }
            if (onSelectSortEvent != null)
            {
                onSelectSortEvent(type);
            }
            if (onSortCloseEvent != null)
            {
                onSortCloseEvent();
            }
            if (m_TargetDisplay != null)
            {
                m_TargetDisplay.text = Language.Get(m_SortElements[_index].textKey);
            }
            this.gameObject.SetActive(false);
        }
        private void OnRefreshCell(ScrollerDataType type, CellView cell)
        {
            var _sortCell = cell as SortCell;
            _sortCell.sortTypeTxt.text = Language.Get(m_SortElements[cell.index].textKey);
        }
        public void SetDefault()
        {
            if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0)
            {
                m_TargetDisplay.text = Language.Get(m_SortElements[0].textKey);
            }
        }
    }
    public enum SortType
    {
        EquipQuality,
        EquipStar,
    }
    [Serializable]
    public struct SortElement
    {
        [Header("语言表key")]
        public string textKey;
        public int type;
    }
}