少年修仙传客户端代码仓库
client_linchunjie
2018-10-24 a98f378be27670c40732572f20702dd8fa3e8d4f
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
4个文件已添加
10个文件已修改
1418 ■■■■ 已修改文件
Core/GameEngine/Model/ConfigManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/GetEquipPathWin.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackModelInterface.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PlayerPackModels.cs 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/BagWin.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/CommonItemBaisc.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/EquipPlaceCell.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/EquipPlaceCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/GetWingsPathTips.cs 458 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/GetWingsPathTips.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/RoleEquipWin.cs 135 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/WingsWin.cs 314 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/Window.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs
@@ -44,7 +44,7 @@
    public IEnumerator Co_LoadConfigs()
    {
        AddAsyncTask<LoginSeverListConfig>();
        StartSyncTask<LoginSeverListConfig>(AssetSource.refdataFromEditor ? AssetPath.ResourceOut : AssetPath.External);
        AddAsyncTask<IconConfig>();
        AddAsyncTask<ItemConfig>();
        AddAsyncTask<SkillConfig>();
System/BlastFurnace/GetEquipPathWin.cs
@@ -454,6 +454,9 @@
                    case 12:
                        legendCntPreview.text = itemTipsModel.GetEquipLegendAttrCntPreview(itemAttrData);
                        break;
                    case 11:
                        legendCntPreview.text = itemTipsModel.GetWingsLegendAttrCntPreview(itemAttrData);
                        break;
                    case 101:
                    case 102:
                    case 103:
@@ -472,10 +475,28 @@
        private void SetGemAttrUI()
        {
            if (itemAttrData.itemConfig.LV < itemTipsModel.gemOpenLvs[0])
            switch ((RoleEquipType)itemAttrData.itemConfig.EquipPlace)
            {
                gemAttr.SetActive(false);
                return;
                case RoleEquipType.retWeapon:
                case RoleEquipType.retWeapon2:
                case RoleEquipType.retHat:
                case RoleEquipType.retClothes:
                case RoleEquipType.retBelt:
                case RoleEquipType.retTrousers:
                case RoleEquipType.retShoes:
                case RoleEquipType.retNeck:
                case RoleEquipType.retFairyCan:
                case RoleEquipType.retFairyCan2:
                case RoleEquipType.retSpiritAnimal:
                    if (itemAttrData.itemConfig.LV < itemTipsModel.gemOpenLvs[0])
                    {
                        gemAttr.SetActive(false);
                        return;
                    }
                    break;
                case RoleEquipType.retWing:
                    gemAttr.SetActive(false);
                    return;
            }
            gemAttr.SetActive(true);
            gemTitleText.text = Language.Get("EquipWin_GemPropObj_Text_1");
System/KnapSack/Logic/PackModelInterface.cs
@@ -1363,6 +1363,36 @@
            return modellist;
        }
        /// <summary>
        /// 获取装备评分最高可提升战力的装备
        /// </summary>
        /// <param name="_places"></param>
        /// <returns></returns>
        public string GetHighestScoreEquipByPlace(int equipPlace)
        {
            var itemPackage = playerPack.GetSinglePackModel(PackType.rptItem);
            var allItems = itemPackage.GetPackModelIndexDict();
            ItemModel putModel = playerPack.GetItemModelByIndex(PackType.rptEquip,equipPlace);
            equipPlace = (equipPlace == 9 || equipPlace == 10) ?  9 : equipPlace;
            var guid = string.Empty;
            var equips = new List<string>();
            var score = putModel == null ? 0 : putModel.equipScore;
            var job = PlayerDatas.Instance.baseData.Job;
            foreach (var item in allItems.Values)
            {
                if(item.chinItemModel.EquipPlace == equipPlace)
                {
                    if (!IsOverdue(item.itemInfo.ItemGUID, item.itemId)
                       && (item.chinItemModel.JobLimit == 0 || (item.chinItemModel.JobLimit / 100) == job) && item.equipScore > score)
                    {
                        guid = item.itemInfo.ItemGUID;
                        score = item.equipScore;
                    }
                }
            }
            return guid;
        }
        #endregion
        #region 背包整理后好的同类型最好的装备
@@ -1374,44 +1404,20 @@
            if (!IsCanPutOn(itemModel)) return;
            int equipPlace = itemModel.chinItemModel.EquipPlace;
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptEquip);
            ItemModel putOnModel = null;
            if (singlePack != null)
            {
                putOnModel = singlePack.GetItemModelByIndex(equipPlace);
            }
            if (!itemModelDict.ContainsKey(equipPlace))
            {
                Dictionary<int, ItemModel> dict = new Dictionary<int, ItemModel>();
                if (putOnModel == null)
                if (IsFightUp(itemModel.itemId,itemModel.equipScore) == 1)
                {
                    dict.Add(itemModel.itemInfo.ItemPlace, itemModel);
                    itemModelDict.Add(equipPlace, dict);
                }
                else
                {
                    if (itemModel.equipScore > putOnModel.equipScore)
                    {
                        dict.Add(itemModel.itemInfo.ItemPlace, itemModel);
                        itemModelDict.Add(equipPlace, dict);
                    }
                }
            }
            else
            {
                if(putOnModel == null)
                if (IsFightUp(itemModel.itemId, itemModel.equipScore) == 1)
                {
                    if (!itemModelDict[equipPlace].ContainsKey(itemModel.itemInfo.ItemPlace))
                    {
                        itemModelDict[equipPlace].Add(itemModel.itemInfo.ItemPlace, itemModel);
                    }
                }
                else
                {
                    if (itemModel.equipScore > putOnModel.equipScore)
                    {
                        itemModelDict[equipPlace].Add(itemModel.itemInfo.ItemPlace, itemModel);
                    }
                    itemModelDict[equipPlace].Add(itemModel.itemInfo.ItemPlace, itemModel);
                }
            }
@@ -1444,65 +1450,17 @@
                }
            }
            return CheckPutOnLimit(itemModel.itemId);
            return CheckPutOnRealm(itemModel.chinItemModel);
        }
        private bool CheckPutOnLimit(int itemId)
        private bool CheckPutOnRealm(ItemConfig config)
        {
            int playerLv = PlayerDatas.Instance.baseData.LV;
            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(itemId);
            if (itemConfig == null) return false;
            if (itemConfig.EquipPlace != (int)RoleEquipType.retWing)
            var _realmLv = config.RealmLimit;
            if (PlayerDatas.Instance.baseData.realmLevel < _realmLv)
            {
                if (itemConfig.UseLV > playerLv) return false;
                float sumOffsetPoint = 0;
                float offset = 0;
                if (itemConfig.LimitSTR != 0)
                {
                    offset = itemConfig.LimitSTR - UIHelper.GetPropertyMapPlayerData(AttrEnum.POWER);
                    sumOffsetPoint += offset;
                }
                if (itemConfig.LimitPHY != 0)
                {
                    offset = itemConfig.LimitPHY - UIHelper.GetPropertyMapPlayerData(AttrEnum.AGILITY);
                    sumOffsetPoint += offset;
                }
                if (itemConfig.LimitPNE != 0)
                {
                    offset = itemConfig.LimitPNE - UIHelper.GetPropertyMapPlayerData(AttrEnum.MENTALITY);
                    sumOffsetPoint += offset;
                }
                if (sumOffsetPoint <= PlayerDatas.Instance.baseData.FreePoint)
                {
                    if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.AddPoint))
                    {
                        return true;
                    }
                }
                return false;
            }
            else
            {
                var _realmLv = 1;
                GeneralDefine.wingEquipLimits.TryGetValue(itemId, out _realmLv);
                var needRealmConfig = Config.Instance.Get<RealmConfig>(_realmLv);
                var curRealmConfig = Config.Instance.Get<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel);
                if (PlayerDatas.Instance.baseData.realmLevel < _realmLv)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            return true;
        }
        #endregion
@@ -1575,7 +1533,7 @@
            ItemConfig chinItemModel = Config.Instance.Get<ItemConfig>(_itemID);
            if (chinItemModel != null)
            {
                if (chinItemModel.Type < 101 || chinItemModel.Type >= 110) return 0;
                if (chinItemModel.EquipPlace < 1 || chinItemModel.EquipPlace > 12) return 0;
                ItemModel model = playerPack.GetItemModelByIndex(PackType.rptEquip,chinItemModel.EquipPlace);
                if (chinItemModel.EquipPlace == (int)RoleEquipType.retFairyCan)
                {
System/KnapSack/Logic/PlayerPackModels.cs
@@ -15,16 +15,18 @@
        public Dictionary<int, int[]> DungeonToDrugDict { get; private set; }  //key 副本ID,value丹药ID列表
        public List<AttrFruitConfig> makeDruglist { get; private set; }
        public Dictionary<int, Dictionary<int, int>> decomposeAttrDict = new Dictionary<int, Dictionary<int, int>>();
        public static string StrengthAttrShift_RecordKey = "StrengthAttrShift";
        public static string StrengthAttrShift_RecordKey = "";
        public const string RecordKnapsackTitle = "RecordKnapsackTitle";
        public string RoleEquipLocalSave = "";
        public int MaxBagGridCnt { get; private set; }
        public int InitBagGridCnt { get; private set; }
        public int MaxDepotGridCnt { get; private set; }
        public int InitDepotGridCnt { get; private set; }
        BlastFurnaceModel FurnaceModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } }
        public List<int> LocalSavePlaceArray { get; private set;}
        public override void Init()
        {
            ParseConfig();
            List<DungeonOpenTimeConfig> dungeonlist = Config.Instance.GetAllValues<DungeonOpenTimeConfig>();
            if (dungeonlist != null)
            {
@@ -80,9 +82,12 @@
            InitBagGridCnt = int.Parse(Config.Instance.Get<FuncConfigConfig>("InitBagCellCount").Numerical1);
            MaxBagGridCnt = int.Parse(Config.Instance.Get<FuncConfigConfig>("MaxBagCellCount").Numerical1);
            MaxDepotGridCnt = int.Parse(Config.Instance.Get<FuncConfigConfig>("MaxDepotCellCount").Numerical1);
            SetRoleEquipRedpoint();
        }
        public void OnBeforePlayerDataInitialize()
        {
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerLv;
            LocalSave.DeleteKey(RecordKnapsackTitle);
            cacheMapId = 0;
            playerPackDict.Clear();
@@ -111,7 +116,19 @@
            PackSendQuestMgr.Instance.SendOpenWarehouse();
            SetPlayerAttrActiveRedPoint();
            EquipDecomRedCtrl();
            StrengthAttrShift_RecordKey = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID,StrengthAttrShift_RecordKey);
            RoleEquipLocalSave = StringUtility.Contact("RoleEquipLocalSave", PlayerDatas.Instance.baseData.PlayerID);
            StrengthAttrShift_RecordKey = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "StrengthAttrShift");
            if(LocalSave.GetIntArray(RoleEquipLocalSave) != null)
            {
                LocalSavePlaceArray = LocalSave.GetIntArray(RoleEquipLocalSave).ToList();
            }
            else
            {
                LocalSavePlaceArray = null;
            }
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerLv;
            UpdatePlayerLv(PlayerDataRefresh.LV);
        }
        public override void UnInit()
@@ -595,6 +612,112 @@
        #endregion
        #region 玩家装备特殊逻辑
        public int fairyRedPointLvlimt { get; private set; }
        public int wingsRedpointLvlimt { get; private set; }
        public int fairyGetPathId { get; private set; }
        public Dictionary<int, int> wingsGetPathIdDict { get; private set;}
        public void ParseConfig()
        {
            FuncConfigConfig funcConfig = Config.Instance.Get<FuncConfigConfig>("WingYuPeiHQTJ");
            fairyRedPointLvlimt = int.Parse(funcConfig.Numerical1);
            wingsRedpointLvlimt = int.Parse(funcConfig.Numerical2);
            fairyGetPathId = int.Parse(funcConfig.Numerical3);
            wingsGetPathIdDict = ConfigParse.GetDic<int, int>(funcConfig.Numerical4);
        }
        public int GetRoleEquipPathId(int equipPlace)
        {
            int playerJob = PlayerDatas.Instance.baseData.Job;
            switch ((RoleEquipType)equipPlace)
            {
                case RoleEquipType.retFairyCan:
                case RoleEquipType.retFairyCan2:
                    return fairyGetPathId;
                case RoleEquipType.retWing:
                    if(wingsGetPathIdDict.ContainsKey(playerJob))
                    {
                        return wingsGetPathIdDict[playerJob];
                    }
                    break;
            }
            return 0;
        }
        private void UpdatePlayerLv(PlayerDataRefresh type)
        {
            if (type != PlayerDataRefresh.LV) return;
            for(int i = 1; i < 13; i++)
            {
                CheckRoleEquipByPlace((RoleEquipType)i);
            }
            UpdateRoleEquipRed();
        }
        public bool IsShowAddEquipByPlace(int equipPlace)
        {
            switch ((RoleEquipType)equipPlace)
            {
                case RoleEquipType.retFairyCan:
                case RoleEquipType.retFairyCan2:
                    if(PlayerDatas.Instance.baseData.LV >= fairyRedPointLvlimt)
                    {
                        return true;
                    }
                    break;
                case RoleEquipType.retWing:
                    if (PlayerDatas.Instance.baseData.LV >= wingsRedpointLvlimt)
                    {
                        return true;
                    }
                    break;
            }
            return false;
        }
        public void CheckRoleEquipByPlace(RoleEquipType equipType)
        {
            ItemModel itemModel = GetItemModelByIndex(PackType.rptEquip,(int)equipType);
            switch (equipType)
            {
                case RoleEquipType.retFairyCan:
                case RoleEquipType.retFairyCan2:
                    if (PlayerDatas.Instance.baseData.LV >= fairyRedPointLvlimt && itemModel != null)
                    {
                        SetRoleEquipLocalSave((int)equipType);
                    }
                    break;
                case RoleEquipType.retWing:
                    if (PlayerDatas.Instance.baseData.LV >= wingsRedpointLvlimt && itemModel != null)
                    {
                        SetRoleEquipLocalSave((int)equipType);
                    }
                    break;
            }
        }
        public void SetRoleEquipLocalSave(int equipPlace,bool isRedState = false)
        {
            if (isRedState && roleEquipRedDict[equipPlace].state == RedPointState.None) return;
            if(LocalSavePlaceArray != null)
            {
                if(!LocalSavePlaceArray.Contains(equipPlace))
                {
                    LocalSavePlaceArray.Add(equipPlace);
                    LocalSave.SetIntArray(RoleEquipLocalSave, LocalSavePlaceArray.ToArray());
                }
            }
            else
            {
                LocalSavePlaceArray = new List<int>();
                LocalSavePlaceArray.Add(equipPlace);
                LocalSave.SetIntArray(RoleEquipLocalSave, LocalSavePlaceArray.ToArray());
            }
        }
        #endregion
        private void GetItemEventCtrl(ItemModel itemModel)
        {
            if (showDropItem)
@@ -764,6 +887,91 @@
        }
        #region 红点逻辑判断
        private Dictionary<int, Redpoint> roleEquipRedDict = new Dictionary<int, Redpoint>();
        public void SetRoleEquipRedpoint()
        {
            roleEquipRedDict.Clear();
            for (int i = 1; i < 13; i++)
            {
                int redKey = 102011003 + i;
                Redpoint redpoint = new Redpoint(MainRedDot.RedPoint_BagFuncKey, redKey);
                roleEquipRedDict.Add(i,redpoint);
            }
        }
        public void UpdateRoleEquipRed()
        {
            foreach(var key in roleEquipRedDict.Keys)
            {
                ItemModel itemModel = GetItemModelByIndex(PackType.rptEquip,key);
                switch ((RoleEquipType)key)
                {
                    case RoleEquipType.retFairyCan:
                        if (PlayerDatas.Instance.baseData.LV >= fairyRedPointLvlimt && !TryGetRoleEquipLocalSave(key)
                           && itemModel == null && roleEquipRedDict[(int)RoleEquipType.retFairyCan2].state == RedPointState.None)
                        {
                            roleEquipRedDict[key].state = RedPointState.Simple;
                        }
                        else
                        {
                            roleEquipRedDict[key].state = RedPointState.None;
                        }
                        break;
                    case RoleEquipType.retFairyCan2:
                        if (PlayerDatas.Instance.baseData.LV >= fairyRedPointLvlimt && !TryGetRoleEquipLocalSave(key)
                            && itemModel == null && roleEquipRedDict[(int)RoleEquipType.retFairyCan].state == RedPointState.None)
                        {
                            roleEquipRedDict[key].state = RedPointState.Simple;
                        }
                        else
                        {
                            roleEquipRedDict[key].state = RedPointState.None;
                        }
                        break;
                    case RoleEquipType.retWing:
                        if (PlayerDatas.Instance.baseData.LV >= wingsRedpointLvlimt && !TryGetRoleEquipLocalSave(key)
                          && itemModel == null)
                        {
                            roleEquipRedDict[key].state = RedPointState.Simple;
                        }
                        else
                        {
                            roleEquipRedDict[key].state = RedPointState.None;
                        }
                        break;
                    default:
                        roleEquipRedDict[key].state = RedPointState.None;
                        break;
                }
            }
        }
        private bool TryGetRoleEquipLocalSave(int equipPlace)
        {
            if(LocalSavePlaceArray != null)
            {
                for(int i = 0; i < LocalSavePlaceArray.Count; i++)
                {
                    if(equipPlace == 9 || equipPlace == 10)
                    {
                        if (LocalSavePlaceArray[i] == 9 || LocalSavePlaceArray[i] == 10)
                        {
                            return true;
                        }
                    }
                    else
                    {
                        if (LocalSavePlaceArray[i] == equipPlace)
                        {
                            return true;
                        }
                    }
                }
            }
            return false;
        }
        public const int ITEMPACK_REDKEY = 102011003;
        public Redpoint redpointItemPack = new Redpoint(MainRedDot.RedPoint_BagFuncKey, ITEMPACK_REDKEY);
        private void RedPointPackCtrl(PackType type)
@@ -961,6 +1169,15 @@
            }
        }
        public event Action RefreshBagEvent;
        public void RefreshBagInfo()
        {
            if(RefreshBagEvent != null)
            {
                RefreshBagEvent();
            }
        }
        #endregion
        public void SetJumpToOneKeySell(Transform parent)
System/KnapSack/New/BagWin.cs
@@ -63,12 +63,12 @@
        protected override void OnPreOpen() {
            KnapsackTimeCDMgr.Instance.RefreshItemOverdueAct += RefreshRemainTime;
            playerPack.RefreshBagEvent += RefreshBagInfo;
            playerPack.lookEquipEvent += LookEquip;
            playerPack.RefreshItemCountAct += OnAddItemCell;
            playerPack.RefreshPackAct += RefreshPackModel;
            playerPack.GridRefreshEvent += OnPackCanUseGrid;
        }
        protected override void OnAfterOpen() {
            this.transform.SetAsLastSibling();
@@ -91,6 +91,7 @@
            playerPack.RefreshPackAct -= RefreshPackModel;
            playerPack.lookEquipEvent -= LookEquip;
            playerPack.GridRefreshEvent -= OnPackCanUseGrid;
            playerPack.RefreshBagEvent -= RefreshBagInfo;
        }
        protected override void OnAfterClose() {
@@ -127,6 +128,12 @@
            }
        }
        private void RefreshBagInfo()
        {
            _gridlineCtrl.m_Scorller.RefreshActiveCellViews();
        }
        public void OnRefrenshUIModel() {
            packModel = playerPack.GetSinglePackModel(PackType.rptItem);
            OnCreateGridLineCell(_gridlineCtrl);
System/KnapSack/New/CommonItemBaisc.cs
@@ -218,8 +218,8 @@
        {
            ItemConfig config = Config.Instance.Get<ItemConfig>(itemId);
            int playerJob = PlayerDatas.Instance.baseData.Job;
            if (config == null || (!isCompare && compareSocre <= 0) || config.EquipPlace == 0
                || score == compareSocre || type == PackType.rptEquip || type == PackType.rptDogzEquip) return 0;
            if (config == null || (!isCompare && compareSocre == score) || config.EquipPlace == 0
                || (score == compareSocre && compareSocre != 0) || (compareSocre <= 0 && (type == PackType.rptEquip || type == PackType.rptDogzEquip))) return 0;
            ItemModel model = playerPack.GetItemModelByGUID(guid);
            if (model != null && modelInterface.IsOverdue(guid, itemId, model.useDataDict)) return 1;
System/KnapSack/New/EquipPlaceCell.cs
New file
@@ -0,0 +1,94 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class EquipPlaceCell : MonoBehaviour
    {
        [SerializeField] Button noneItemBtn;
        [SerializeField] ItemCell itemCell;
        [SerializeField] public RoleEquipType equipType;
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack
        {
            get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
        }
        PackModelInterface _modelInterface;
        PackModelInterface modelInterface
        {
            get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
        }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        GetItemPathModel pathModel { get { return ModelCenter.Instance.GetModel<GetItemPathModel>(); } }
        private void OnEnable()
        {
            Display((int)this.equipType);
        }
        public void Display(int equipPlace)
        {
            if (this.equipType != (RoleEquipType)equipPlace) return;
            ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptEquip,equipPlace);
            noneItemBtn.RemoveAllListeners();
            itemCell.cellBtn.onClick.RemoveAllListeners();
            if (itemModel == null)
            {
                itemCell.gameObject.SetActive(false);
                if(playerPack.IsShowAddEquipByPlace(equipPlace))
                {
                    noneItemBtn.gameObject.SetActive(true);
                    noneItemBtn.AddListener(()=>
                    {
                        playerPack.SetRoleEquipLocalSave(equipPlace,true);
                        playerPack.UpdateRoleEquipRed();
                        string guid = modelInterface.GetHighestScoreEquipByPlace(equipPlace);
                        if (string.IsNullOrEmpty(guid))
                        {
                            int pathId = playerPack.GetRoleEquipPathId(equipPlace);
                            if(pathId != 0)
                            {
                                pathModel.SetChinItemModel(pathId);
                            }
                        }
                        else
                        {
                            playerPack.SetLookIndex(guid);
                            playerPack.RefreshBagInfo();
                        }
                    });
                }
                else
                {
                    noneItemBtn.gameObject.SetActive(false);
                }
            }
            else
            {
                playerPack.CheckRoleEquipByPlace((RoleEquipType)equipPlace);
                playerPack.UpdateRoleEquipRed();
                noneItemBtn.gameObject.SetActive(false);
                itemCell.gameObject.SetActive(true);
                itemCell.Init(itemModel);
                itemCell.cellBtn.onClick.AddListener(() => {
                    itemTipsModel.SetItemTipsModel(PackType.rptEquip, itemModel.itemInfo.ItemGUID, false);
                    itemTipsModel.SetPutOnTipsBtn(itemTipsModel.curAttrData);
                    itemTipsModel.ShowUICtrl();
                });
            }
        }
    }
}
System/KnapSack/New/EquipPlaceCell.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: fab44501321b6294caf4e7cabb066e2d
timeCreated: 1540263979
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/KnapSack/New/GetWingsPathTips.cs
New file
@@ -0,0 +1,458 @@
using DG.Tweening;
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class GetWingsPathTips : MonoBehaviour
    {
        #region TopUI
        [SerializeField]
        Button closeBtn;
        [SerializeField]
        GameObject putOnIcon;
        [SerializeField]
        Text titleText;
        [SerializeField]
        Text equipScoreDes;
        [SerializeField]
        Text equipScoreValue;
        [SerializeField]
        Text conditionText;
        [SerializeField]
        Image conditionValueText;
        [SerializeField]
        Text dateText;
        [SerializeField]
        ItemCell itemCell;
        #endregion
        #region MidUI
        [SerializeField]
        RectTransform attrContent;
        [SerializeField]
        ScrollRect scrollRect;
        [SerializeField]
        LayoutElement scrollLayout;
        [SerializeField]
        GameObject basicAttr;
        [SerializeField]
        Text basicTitleText;
        [SerializeField]
        Text basicAttrDes;
        [SerializeField]
        GameObject legendAttr;
        [SerializeField]
        Text legendTitleText;
        [SerializeField]
        Text legendCntPreview;
        [SerializeField]
        Text legendAttrDes;
        [SerializeField] List<GameObject> attrCutLinelist = new List<GameObject>();
        #endregion
        [SerializeField]
        protected RectTransform _itemInfoTips;
        [SerializeField] RectTransform getWaysTips;
        [SerializeField]
        protected CanvasGroup _getWaysTipsAlpha;
        [SerializeField]
        private ScrollerController _waysCtrl;
        [SerializeField]
        private Transform waysLineCell;
        [SerializeField]
        private Button _closeWaysBtn;
        [SerializeField]
        [Header("移动时间")]
        protected float _moveTime = 0.3f;
        [SerializeField]
        protected CanvasGroup tipAlpha;
        [SerializeField] GameObject equipTipsObj;
        #region BottomUI
        [SerializeField]
        GameObject bottomPart;
        [SerializeField]
        private Button _getItemBtn;
        #endregion
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        PackModelInterface _modelInterface;
        PackModelInterface modelInterface
        {
            get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
        }
        ItemAttrData itemAttrData;
        private int curAttrTypeNum = 0;
        public void InitModel(ItemAttrData attrData)
        {
            curAttrTypeNum = 0;
            KnapsackTimeCDMgr.Instance.RefreshItemOverdueTimeAct += RefreshRemainTime;
            itemAttrData = attrData;
            InitUI();
            closeBtn.AddListener(OnClickCloseBtn);
            _waysCtrl.OnRefreshCell += RefreshWayCell;
            _getItemBtn.onClick.AddListener(OnClickGetItemBtn);
            _closeWaysBtn.onClick.AddListener(OnClickCloseBtn);
        }
        private void OnEnable()
        {
            bottomPart.gameObject.SetActive(false);
            StartCoroutine(SetScrollSize());
        }
        IEnumerator SetScrollSize()
        {
            yield return null;
            yield return null;
            attrContent.anchoredPosition3D = new Vector3(attrContent.anchoredPosition3D.x, 0, 0);
            SetMidUIHeight(attrContent.rect.height);
            StartCoroutine(ShowBottomPart());
        }
        IEnumerator ShowBottomPart()
        {
            yield return null;
            bottomPart.gameObject.SetActive(true);
            StartCoroutine(SetPanelScale());
        }
        IEnumerator SetPanelScale()
        {
            yield return null;
            itemTipsModel.SetCurTips(this.GetComponent<RectTransform>());
            SetGetWaysPos();
            //_itemInfoTips.localPosition = Vector3.zero;
            tipAlpha.alpha = 1;
        }
        public void SetGetWaysPos()
        {
            if (itemTipsModel.compareAttrData != null)
            {
                getWaysTips.anchoredPosition3D = Vector3.zero;
            }
            else
            {
                getWaysTips.anchoredPosition3D = new Vector3(this.GetComponent<RectTransform>().sizeDelta.x / 2, 0, 0);
            }
        }
        private void InitUI()
        {
            #region 设置TopUI
            titleText.text = itemTipsModel.GetItemTipsTitle(itemAttrData);
            titleText.color = UIHelper.GetUIColor(modelInterface.GetItemQuality(itemAttrData.itemId, itemAttrData.useDataDict));
            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)
            {
                putOnIcon.SetActive(true);
            }
            else
            {
                putOnIcon.SetActive(false);
            }
            equipScoreDes.text = Language.Get("EquipWin_EquipPointText_1");
            equipScoreValue.text = itemAttrData.score.ToString();
            if (itemAttrData.isHavePutLimit)
            {
                conditionText.gameObject.SetActive(true);
                conditionValueText.gameObject.SetActive(true);
                var _realmLv = itemAttrData.itemConfig.RealmLimit;
                var _realmCfg = Config.Instance.Get<RealmConfig>(_realmLv);
                if (PlayerDatas.Instance.baseData.realmLevel < _realmLv)
                {
                    conditionText.text = UIHelper.GetTextColorByItemColor(TextColType.Red, Language.Get("RealmLimit1"));
                    if (_realmLv != 0)
                    {
                        conditionValueText.SetSprite(_realmCfg.Img);
                    }
                    else
                    {
                        conditionText.gameObject.SetActive(false);
                        conditionValueText.gameObject.SetActive(false);
                    }
                }
                else
                {
                    if (_realmLv != 0)
                    {
                        conditionText.text = StringUtility.Contact("<color=#FFF4CDFF>", Language.Get("RealmLimit1"), "</color>");
                        conditionValueText.SetSprite(_realmCfg.Img);
                    }
                    else
                    {
                        conditionText.gameObject.SetActive(false);
                        conditionValueText.gameObject.SetActive(false);
                    }
                }
            }
            else
            {
                conditionText.gameObject.SetActive(false);
                conditionValueText.gameObject.SetActive(false);
            }
            if (itemAttrData.itemConfig.ExpireTime > 0)
            {
                List<int> itemEffectTime = itemAttrData.GetUseDataModel((int)ItemUseDataKey.Def_IudetCreateTime);
                if (itemEffectTime != null && itemEffectTime[0] != 0 && itemAttrData.guid != "")
                {
                    RefreshRemainTime(itemAttrData.guid);
                }
                else
                {
                    SetDateLimitUI(itemAttrData.itemConfig.ExpireTime);
                }
            }
            else
            {
                dateText.gameObject.SetActive(false);
            }
            #endregion
            #region 设置MidUI
            SetBasicAttrUI();
            SetLegendAttrUI();
            for (int i = 0; i < attrCutLinelist.Count; i++)
            {
                if (i == curAttrTypeNum - 1)
                {
                    attrCutLinelist[curAttrTypeNum - 1].SetActive(false);
                }
                else
                {
                    attrCutLinelist[i].SetActive(true);
                }
            }
            #endregion
        }
        private void OnDisable()
        {
            KnapsackTimeCDMgr.Instance.RefreshItemOverdueTimeAct -= RefreshRemainTime;
        }
        private void RefreshRemainTime(string guid)
        {
            if (guid != itemAttrData.guid)
            {
                return;
            }
            ItemCDCool cool = KnapsackTimeCDMgr.Instance.GetItemCoolById(guid);
            if (cool != null)
            {
                SetDateLimitUI(cool.GetRemainTime());
            }
            else
            {
                SetDateLimitUI(0);
            }
        }
        private void SetDateLimitUI(double time)
        {
            dateText.gameObject.SetActive(true);
            TimeSpan t = TimeSpan.FromSeconds(time);
            if (t.TotalDays > 1)
            {
                dateText.text = Language.Get("EquipInfo_OverdueDay", (int)t.TotalDays);
            }
            else if (t.TotalHours > 1)
            {
                dateText.text = Language.Get("EquipInfo_OverdueHour", (int)t.TotalHours);
            }
            else if (t.TotalMinutes > 1)
            {
                dateText.text = Language.Get("EquipInfo_OverdueMin", (int)t.TotalMinutes);
            }
            else if (t.TotalMinutes > 0)
            {
                dateText.text = Language.Get("EquipInfo_OverdueMin", 1);
            }
            else if (t.TotalSeconds <= 0)
            {
                dateText.text = Language.Get("EquipInfo_Overdued");
            }
        }
        #region 设置属性UI
        private void SetBasicAttrUI()
        {
            basicAttr.SetActive(true);
            basicTitleText.text = Language.Get("RolePanel_BaseAttrText_1");
            basicAttrDes.text = itemTipsModel.GetBasicAttr(itemAttrData);
            curAttrTypeNum = 1;
        }
        private void SetLegendAttrUI()
        {
            if (itemAttrData.legendDataDict == null)
            {
                legendAttr.SetActive(false);
                return;
            }
            curAttrTypeNum = 2;
            legendAttr.SetActive(true);
            legendTitleText.text = Language.Get("EquipWin_LegendPropObj_Text_1");
            legendAttrDes.text = itemTipsModel.GetLegendAttr(itemAttrData);
            if (itemAttrData.isPreview)
            {
                legendCntPreview.gameObject.SetActive(true);
                legendCntPreview.text = itemTipsModel.GetWingsLegendAttrCntPreview(itemAttrData);
            }
            else
            {
                legendCntPreview.gameObject.SetActive(false);
            }
        }
        private void SetMidUIHeight(float midHeight)
        {
            scrollRect.enabled = false;
            if (midHeight < itemTipsModel.equipMidHeights[0])
            {
                scrollLayout.preferredHeight = itemTipsModel.equipMidHeights[0];
            }
            else if (midHeight > itemTipsModel.equipMidHeights[1])
            {
                scrollRect.enabled = true;
                scrollLayout.preferredHeight = itemTipsModel.equipMidHeights[1];
            }
            else
            {
                scrollLayout.preferredHeight = midHeight;
            }
        }
        #endregion
        private void OnClickGetItemBtn()
        {
            if (_getWaysTipsAlpha.alpha <= 0)
            {
                Vector3 pos = Vector3.zero;
                if (itemTipsModel.compareAttrData != null)
                {
                    equipTipsObj.SetActive(false);
                    pos = new Vector3(0, 0, 0);
                }
                else
                {
                    pos = new Vector3(this.GetComponent<RectTransform>().sizeDelta.x, 0, 0);
                }
                _itemInfoTips.DOAnchorPos3D(pos, _moveTime);
                _getWaysTipsAlpha.DOFade(1, _moveTime);
                closeBtn.gameObject.SetActive(false);
                CreateWayCell();
            }
            else
            {
                _itemInfoTips.DOAnchorPos3D(new Vector3(this.GetComponent<RectTransform>().sizeDelta.x, 0, 0), _moveTime);
                _getWaysTipsAlpha.DOFade(0, _moveTime);
                closeBtn.gameObject.SetActive(true);
                if (itemTipsModel.compareAttrData != null)
                {
                    equipTipsObj.SetActive(true);
                }
            }
        }
        private void OnClickCloseBtn()
        {
            closeBtn.onClick.RemoveAllListeners();
            KnapSackEventMgr.Instance.HideItemPopWin();
        }
        #region getWaysTips逻辑
        private List<GetItemWaysConfig> getWayslist;
        protected virtual void CreateWayCell()
        {
            getWayslist = itemTipsModel.GetWaysList(itemAttrData);
            _waysCtrl.Refresh();
            int i = 0;
            int remain = getWayslist.Count % waysLineCell.childCount;
            int line = (int)getWayslist.Count / waysLineCell.childCount;
            if (remain > 0)
            {
                line += 1;
            }
            for (i = 0; i < line; i++)
            {
                _waysCtrl.AddCell(ScrollerDataType.Header, i);
            }
            _waysCtrl.Restart();
        }
        private void RefreshWayCell(ScrollerDataType type, CellView cell)
        {
            int i = 0;
            for (i = 0; i < cell.transform.childCount; i++)
            {
                WayCell wayCell = cell.transform.GetChild(i).GetComponent<WayCell>();
                if (wayCell == null)
                    wayCell = cell.transform.GetChild(i).gameObject.AddComponent<WayCell>();
                int index = (cell.transform.childCount) * cell.index + i;
                if (index <= getWayslist.Count - 1)
                {
                    cell.transform.GetChild(i).gameObject.SetActive(true);
                    GetItemWaysConfig itemWaysModel = getWayslist[index];
                    wayCell.icon.SetSprite(itemWaysModel.Icon);
                    wayCell.wayName.text = itemWaysModel.Text;
                    wayCell.funcName.text = itemWaysModel.name;
                    wayCell.wayButton.RemoveAllListeners();
                    wayCell.wayButton.AddListener(() => {
                        ClickWayCell(itemWaysModel);
                    });
                }
                else
                {
                    cell.transform.GetChild(i).gameObject.SetActive(false);
                }
            }
        }
        public void ClickWayCell(GetItemWaysConfig itemWaysModel)
        {
            OnClickCloseBtn();
            ModelCenter.Instance.GetModel<GetItemPathModel>().ClickGetWay(itemAttrData.itemId, itemWaysModel);
        }
        #endregion
    }
}
System/KnapSack/New/GetWingsPathTips.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a95419693c2992743b4e1127f6b4959c
timeCreated: 1540294742
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/KnapSack/New/RoleEquipWin.cs
@@ -17,30 +17,8 @@
    public class RoleEquipWin : Window
    {
        #region 成员变量
        [SerializeField]
        private GameObject _beastArea; //灵守
        [SerializeField]
        private GameObject _helmetArea; //头盔
        [SerializeField]
        private GameObject _clothArea; //胸甲
        [SerializeField]
        private GameObject _pantsArea; //护腿
        [SerializeField]
        private GameObject _shoesArea;  //鞋子
        [SerializeField]
        private GameObject _weaponArea; //武器
        [SerializeField]
        private GameObject _retWeapon2;  //副手
        [SerializeField]
        private GameObject _fairy01Area; //圣器1
        [SerializeField]
        private GameObject _fairy02Area; //圣器2`
        [SerializeField]
        private GameObject _necklaceArea; //项链
        [SerializeField]
        private GameObject _beltArea; //腰带
        [SerializeField]
        private GameObject _wingsArea;  //翅膀
        [SerializeField] List<EquipPlaceCell> equipPlaces = new List<EquipPlaceCell>();
        [SerializeField] RawImage RoleShowBG;
        [SerializeField]
        private Button _starCountBtn;
@@ -70,13 +48,6 @@
            get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
        }
        private FuncConfigConfig _equipPlaceModel;
        private List<string> _equipCodelist;
        private List<string> _equipNamelist;
        private RoleEquipType _equipType;
        private BagWin bagWin;
        private Dictionary<int,ItemModel> _roleEquipDict = new Dictionary<int,ItemModel>();
        private Dictionary<RoleEquipType ,GameObject> equipArealist = new Dictionary<RoleEquipType, GameObject>();
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
@@ -96,19 +67,6 @@
        protected override void BindController()
        {
            equipArealist.Add(RoleEquipType.retWeapon, _weaponArea);
            equipArealist.Add(RoleEquipType.retClothes, _clothArea);
            equipArealist.Add(RoleEquipType.retHat, _helmetArea);
            equipArealist.Add(RoleEquipType.retTrousers, _pantsArea);
            equipArealist.Add(RoleEquipType.retShoes, _shoesArea);
            equipArealist.Add(RoleEquipType.retNeck, _necklaceArea);
            equipArealist.Add(RoleEquipType.retWeapon2, _retWeapon2);
            equipArealist.Add(RoleEquipType.retFairyCan, _fairy01Area);
            equipArealist.Add(RoleEquipType.retFairyCan2, _fairy02Area);
            equipArealist.Add(RoleEquipType.retBelt, _beltArea);
            equipArealist.Add(RoleEquipType.retWing, _wingsArea);
            equipArealist.Add(RoleEquipType.retSpiritAnimal, _beastArea);
            _oneKeySellBtn.onClick.AddListener(OnClickOneKeySell);
            _sortBtn.onClick.AddListener(() => { OnClickSortBtn(); });
        }
@@ -144,12 +102,6 @@
            UIEventTrigger.Get(_starCountBtn.gameObject).OnDown = OnClickStarBtn;
            UIEventTrigger.Get(_equipIntensifyBtn.gameObject).OnDown = OnClickEquipIntensify;
            foreach (var go in equipArealist.Values)
            {
                GameObject itemCell = go.transform.Find("ItemCell").gameObject;
                itemCell.gameObject.SetActive(false);
            }
            OnFrenshBagInfo();
        }
@@ -162,26 +114,12 @@
        protected override void OnAfterOpen()
        {
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptEquip);
            if(singlePack != null)
            {
                Dictionary<int,ItemModel> itemPlaceDict = singlePack.GetPackModelIndexDict();
                foreach (var model in itemPlaceDict.Values)
                {
                    PutOnEquip(model.packType,model.itemInfo.ItemPlace,model.itemInfo.ItemID);
                }
            }
            SuccessConfig successConfig = Config.Instance.Get<SuccessConfig>(AchievementGoto.guideAchievementId);
            if(successConfig != null && successConfig.Type == 95)
            {
                playerPack.SetJumpToOneKeySell(_oneKeySellBtn.transform);
            }
            //if(playerPack.IsActiveSTRAttr())
            //{
            //    ControlEffect(0,true);
            //}
            if(playerPack.IsActiveStarAttr())
            {
@@ -231,42 +169,28 @@
            }
        }
        public void UpdateRoleEquip(int equipPlace)
        {
            for (int i = 0; i < equipPlaces.Count; i++)
            {
                equipPlaces[i].Display(equipPlace);
            }
            UI3DModelExhibition.Instance.ShowPlayer(RoleShowBG, PlayerDatas.Instance.baseData.Job);
        }
        public void PutOnEquip(PackType type,int index, int Id)
        {
            //临时条件判断
            if (type != PackType.rptEquip || !equipArealist.ContainsKey((RoleEquipType)index)) return;
            if (type != PackType.rptEquip) return;
            ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptEquip,index);
            ItemCell itemCell = equipArealist[(RoleEquipType)index].transform.Find("ItemCell").GetComponent<ItemCell>();
            itemCell.gameObject.SetActive(true);
            itemCell.Init(itemModel);
            itemCell.cellBtn.onClick.RemoveAllListeners();
            itemCell.cellBtn.onClick.AddListener(()=> {
                itemTipsModel.SetItemTipsModel(PackType.rptEquip, itemModel.itemInfo.ItemGUID,false);
                itemTipsModel.SetPutOnTipsBtn(itemTipsModel.curAttrData);
                itemTipsModel.ShowUICtrl();
            });
            if (_roleEquipDict.ContainsKey(itemModel.itemInfo.ItemPlace))
            {
                _roleEquipDict[itemModel.itemInfo.ItemPlace] = itemModel;
            }
            else
            {
                _roleEquipDict.Add(itemModel.itemInfo.ItemPlace,itemModel);
            }
            UI3DModelExhibition.Instance.ShowPlayer(RoleShowBG, PlayerDatas.Instance.baseData.Job);
            UpdateRoleEquip(index);
        }
        public void PutOffEquip(PackType type, int place,int id)
        {
            if (type != PackType.rptEquip) return;
            ClearEquipInfo(place);
            equipArealist[(RoleEquipType)place].transform.Find("ItemCell").gameObject.SetActive(false);
            UI3DModelExhibition.Instance.ShowPlayer(RoleShowBG, PlayerDatas.Instance.baseData.Job);
            UpdateRoleEquip(place);
        }
        private void OnClickEquipIntensify(GameObject go)
@@ -278,35 +202,7 @@
        {
            WindowCenter.Instance.Open<PlayerStarNumWin>();
        }
        public void ClearEquipInfo(int place)
        {
            if (_roleEquipDict.ContainsKey(place))
            {
                _roleEquipDict.Remove(place);
            }
        }
        public bool CheckEquipIfPutOn(int equipPlace)
        {
            if (_roleEquipDict.ContainsKey(equipPlace))
                return true;
            return false;
        }
 
        private List<string> GetToolsList(string tools, List<string> toolslist)
        {
            toolslist = new List<string>();
            string[] toolsArray = tools.Split('|');
            for (int i = 0; i < toolsArray.Length; i++)
            {
                toolslist.Add(toolsArray[i]);
            }
            return toolslist;
        }
        public void OnClickSortBtn()
        {
            modelInterface.SendPackResetQuest(PackType.rptItem);
@@ -316,7 +212,6 @@
            _sortBtn.enabled = false;
          
        }
        private void RefreshTime(float time)
        {
System/KnapSack/New/WingsWin.cs
@@ -1,149 +1,165 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, September 07, 2017
//--------------------------------------------------------
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI {
    public class WingsWin : Window
    {
        #region 成员变量
        [SerializeField]
        WingsTip wingsTip;
        [SerializeField]
        BuyWingsTip buyTip;
        [SerializeField]
        CanvasGroup wingsTipAlpha;
        [SerializeField]
        CanvasGroup buyTipAlpha;
        #endregion
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        private List<GameObject> TempCreatelist = new List<GameObject>();
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            KnapSackEventMgr.Instance.AddWingsWinTempObjEvent = AddTempCreatelist;
            KnapSackEventMgr.Instance.HideWingsWinEvent = OnHidePanel;
            wingsTipAlpha.alpha = 0;
            buyTipAlpha.alpha = 0;
            UIShow();
        }
        protected override void OnAfterOpen()
        {
            this.transform.SetAsLastSibling();
        }
        protected override void OnPreClose()
        {
            for (int i = 0; i < TempCreatelist.Count; i++)
            {
                Destroy(TempCreatelist[i]);
            }
            TempCreatelist.Clear();
            wingsTip.gameObject.SetActive(false);
            buyTip.gameObject.SetActive(false);
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        public void UIShow()
        {
            if (itemTipsModel.compareAttrData == null)
            {
                if (itemTipsModel.curAttrData != null)
                {
                    switch (itemTipsModel.curAttrData.ChildType)
                    {
                        case ItemTipChildType.Normal:
                            wingsTip.InitModel(itemTipsModel.curAttrData);
                            wingsTip.gameObject.SetActive(true);
                            break;
                        case ItemTipChildType.Buy:
                            buyTip.InitModel(itemTipsModel.curAttrData);
                            buyTip.gameObject.SetActive(true);
                            break;
                    }
                }
            }
            else
            {
                if (itemTipsModel.curAttrData != null)
                {
                    switch (itemTipsModel.curAttrData.ChildType)
                    {
                        case ItemTipChildType.Normal:
                            WingsTip compareTip = CloneEquipUI(this.transform, wingsTip.gameObject).GetComponent<WingsTip>();
                            compareTip.InitModel(itemTipsModel.compareAttrData);
                            TempCreatelist.Add(compareTip.gameObject);
                            wingsTip.InitModel(itemTipsModel.curAttrData);
                            compareTip.gameObject.SetActive(true);
                            wingsTip.gameObject.SetActive(true);
                            break;
                        case ItemTipChildType.Buy:
                            buyTip.InitModel(itemTipsModel.curAttrData);
                            wingsTip.InitModel(itemTipsModel.compareAttrData);
                            buyTip.gameObject.SetActive(true);
                            wingsTip.gameObject.SetActive(true);
                            break;
                    }
                }
            }
        }
        private void AddTempCreatelist(GameObject obj)
        {
            TempCreatelist.Add(obj);
        }
        public GameObject CloneEquipUI(Transform parent, GameObject target)
        {
            GameObject go = Instantiate(target);
            go.transform.SetParent(parent);
            go.transform.localPosition = Vector3.zero;
            go.transform.localScale = Vector3.one;
            return go;
        }
        public void OnHidePanel()
        {
            CloseImmediately();
        }
    }
}
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, September 07, 2017
//--------------------------------------------------------
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI {
    public class WingsWin : Window
    {
        #region 成员变量
        [SerializeField]
        WingsTip wingsTip;
        [SerializeField]
        BuyWingsTip buyTip;
        [SerializeField] GetWingsPathTips getWingsPathTip;
        [SerializeField]
        CanvasGroup wingsTipAlpha;
        [SerializeField]
        CanvasGroup buyTipAlpha;
        [SerializeField] CanvasGroup wingsPathAlpha;
        #endregion
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        private List<GameObject> TempCreatelist = new List<GameObject>();
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            KnapSackEventMgr.Instance.AddWingsWinTempObjEvent = AddTempCreatelist;
            KnapSackEventMgr.Instance.HideWingsWinEvent = OnHidePanel;
            itemTipsModel.SetCurTips(null);
            itemTipsModel.SetCompareTips(null);
            wingsTipAlpha.alpha = 0;
            buyTipAlpha.alpha = 0;
            wingsPathAlpha.alpha = 0;
            UIShow();
        }
        protected override void OnAfterOpen()
        {
            this.transform.SetAsLastSibling();
        }
        protected override void OnPreClose()
        {
            for (int i = 0; i < TempCreatelist.Count; i++)
            {
                Destroy(TempCreatelist[i]);
            }
            TempCreatelist.Clear();
            wingsTip.gameObject.SetActive(false);
            buyTip.gameObject.SetActive(false);
            getWingsPathTip.gameObject.SetActive(false);
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        public void UIShow()
        {
            if (itemTipsModel.compareAttrData == null)
            {
                if (itemTipsModel.curAttrData != null)
                {
                    switch (itemTipsModel.curAttrData.ChildType)
                    {
                        case ItemTipChildType.Normal:
                            wingsTip.InitModel(itemTipsModel.curAttrData);
                            wingsTip.gameObject.SetActive(true);
                            break;
                        case ItemTipChildType.Buy:
                            buyTip.InitModel(itemTipsModel.curAttrData);
                            buyTip.gameObject.SetActive(true);
                            break;
                        case ItemTipChildType.GetWingsPath:
                            getWingsPathTip.InitModel(itemTipsModel.curAttrData);
                            getWingsPathTip.gameObject.SetActive(true);
                            break;
                    }
                }
            }
            else
            {
                if (itemTipsModel.curAttrData != null)
                {
                    switch (itemTipsModel.curAttrData.ChildType)
                    {
                        case ItemTipChildType.Normal:
                            WingsTip compareTip = CloneEquipUI(this.transform, wingsTip.gameObject).GetComponent<WingsTip>();
                            compareTip.InitModel(itemTipsModel.compareAttrData);
                            TempCreatelist.Add(compareTip.gameObject);
                            wingsTip.InitModel(itemTipsModel.curAttrData);
                            compareTip.gameObject.SetActive(true);
                            wingsTip.gameObject.SetActive(true);
                            break;
                        case ItemTipChildType.Buy:
                            buyTip.InitModel(itemTipsModel.curAttrData);
                            wingsTip.InitModel(itemTipsModel.compareAttrData);
                            buyTip.gameObject.SetActive(true);
                            wingsTip.gameObject.SetActive(true);
                            break;
                        case ItemTipChildType.GetWingsPath:
                            getWingsPathTip.InitModel(itemTipsModel.curAttrData);
                            getWingsPathTip.gameObject.SetActive(true);
                            wingsTip.InitModel(itemTipsModel.compareAttrData);
                            wingsTip.gameObject.SetActive(true);
                            break;
                    }
                }
            }
        }
        private void AddTempCreatelist(GameObject obj)
        {
            TempCreatelist.Add(obj);
        }
        public GameObject CloneEquipUI(Transform parent, GameObject target)
        {
            GameObject go = Instantiate(target);
            go.transform.SetParent(parent);
            go.transform.localPosition = Vector3.zero;
            go.transform.localScale = Vector3.one;
            return go;
        }
        public void OnHidePanel()
        {
            CloseImmediately();
        }
    }
}
System/WindowBase/Window.cs
@@ -508,11 +508,12 @@
        private void AddSreenMask()
        {
            var maskObject = UIUtility.CreateWidget("ScreenMask", "ScreenMask");
            var rectTransform = maskObject.transform as RectTransform;
            var maskObject = new GameObject("ScreenMask");
            var rectTransform = maskObject.AddMissingComponent<RectTransform>();
            rectTransform.sizeDelta = new Vector2(1336, 752);
            rectTransform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one);
            rectTransform.SetAsFirstSibling();
            windowMask = maskObject.GetComponent<RawImage>();
            windowMask = maskObject.AddMissingComponent<RawImage>();
        }
        private RectTransform FindParent(WindowType _type)
Utility/EnumHelper.cs
@@ -1547,6 +1547,7 @@
    UnionWarehouseDonation, //捐献装备
    UnionWarehouseExchange, //兑换装备
    GetEquipPath,  //装备获取途径
    GetWingsPath,//翅膀获取途径
}
public enum InstalledAsset