少年修仙传客户端代码仓库
client_Wu Xijin
2019-04-27 0701fabd203b46244fa781b63ba5a13d7a0ebfad
Merge branch 'master' into ViewOtherPlayer
3 文件已复制
1个文件已删除
1 文件已重命名
5个文件已添加
13个文件已修改
1585 ■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/AlchemyCountConfig.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/AlchemyCountConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Player/Character/PlayerBaseData.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Player/PlayerDatas.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB108_tagMCYinjiStartTime.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB108_tagMCYinjiStartTime.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB1_Role/HB108_tagMCYinjiStartTime.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB1_Role/HB108_tagMCYinjiStartTime.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs 899 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/XLuaGenAutoRegister.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyStudyBehaviour.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BossShow/BossShowModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainWin/MainWinYinJiBehaviour.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainWin/MainWinYinJiBehaviour.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/TreasureFindHost/ReciveConditionCell.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/TreasureFindHost/TreasureFindHostModel.cs 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/TreasureFindHost/TreasureFindHostWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/YinJi.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/YinJi/YinJiModel.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/YinJi/YinJiModel.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -25,6 +25,7 @@
    public static void Init()
    {
        // 登记相应的数据体及对应的数据转逻辑类
        Register(typeof(HB108_tagMCYinjiStartTime) ,typeof(DTCB108_tagMCYinjiStartTime));
        Register(typeof(HA325_tagMCNPCAttackCountInfo), typeof(DTCA325_tagMCNPCAttackCountInfo));
        Register(typeof(HB215_tagMCFBBuyBuffInfo), typeof(DTCB215_tagMCFBBuyBuffInfo));
        Register(typeof(HA718_tagMCCollectAwardItemInfo), typeof(DTCA718_tagMCCollectAwardItemInfo));
Core/GameEngine/Model/Config/AlchemyCountConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Wednesday, April 17, 2019
//    [  Date ]:           Saturday, April 27, 2019
//--------------------------------------------------------
using System.Collections.Generic;
@@ -13,7 +13,8 @@
public partial class AlchemyCountConfig
{
    public readonly int AlchemyQuality;
    public readonly int id;
    public readonly int AlchemyQuality;
    public readonly int LuckValue;
    public readonly string CntRateList;
@@ -27,11 +28,13 @@
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out AlchemyQuality);
            int.TryParse(tables[0],out id);
            int.TryParse(tables[1],out LuckValue);
            int.TryParse(tables[1],out AlchemyQuality);
            CntRateList = tables[2];
            int.TryParse(tables[2],out LuckValue);
            CntRateList = tables[3];
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/Config/AlchemyCountConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 5f36f1c0496212c43ab7871e4d3d42dd
timeCreated: 1555489466
timeCreated: 1556343422
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/Player/Character/PlayerBaseData.cs
@@ -65,6 +65,9 @@
    public int reduceHeartHurt;//会心一击伤害固定值减免
    public int reduceFinalHurt;//最终伤害百分比减免
    public int yinjiCount;//当前印记数量
    public int yinjiTime;//印记转圈时间
    public long treasurePotentialSp
    {
        get
Core/GameEngine/Model/Player/PlayerDatas.cs
@@ -328,8 +328,7 @@
            case PlayerDataType.MaxMP:
                extersion.MaxMP = (int)value;
                break;
            case PlayerDataType.XP:
                break;
            case PlayerDataType.HPRestoreSetting:
                break;
            case PlayerDataType.MPRestoreSetting:
@@ -888,6 +887,12 @@
            case PlayerDataType.CDBPlayerRefresh_FinalHurtReducePer:
                baseData.reduceFinalHurt = (int)value;
                break;
            case PlayerDataType.CDBPlayerRefresh_YinjiTime:
                baseData.yinjiTime = (int)value;
                break;
            case PlayerDataType.CDBPlayerRefresh_YinjiCount:
                baseData.yinjiCount = (int)value;
                break;
        }
    }
Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB108_tagMCYinjiStartTime.cs
New file
@@ -0,0 +1,16 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
//B1 08 开始印记流失时间 #tagMCYinjiStartTime
public class DTCB108_tagMCYinjiStartTime : DtcBasic
{
    YinJiModel model { get { return ModelCenter.Instance.GetModel<YinJiModel>(); } }
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        model.BeginFadeAway();
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB108_tagMCYinjiStartTime.cs.meta
copy from Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs.meta copy to Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB108_tagMCYinjiStartTime.cs.meta
File was copied from Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 46f7e1d408789ee41a746a47b78d9480
timeCreated: 1550120577
guid: 14fac966cd3cd2247817bd50678402d0
timeCreated: 1556337541
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/ServerPack/HB1_Role/HB108_tagMCYinjiStartTime.cs
New file
@@ -0,0 +1,15 @@
using UnityEngine;
using System.Collections;
//B1 08 开始印记流失时间 #tagMCYinjiStartTime
public class HB108_tagMCYinjiStartTime : GameNetPackBasic {
    public HB108_tagMCYinjiStartTime () {
        _cmd = (ushort)0xB108;
    }
    public override void ReadFromBytes (byte[] vBytes) {
    }
}
Core/NetworkPackage/ServerPack/HB1_Role/HB108_tagMCYinjiStartTime.cs.meta
copy from Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs.meta copy to Core/NetworkPackage/ServerPack/HB1_Role/HB108_tagMCYinjiStartTime.cs.meta
File was copied from Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 46f7e1d408789ee41a746a47b78d9480
timeCreated: 1550120577
guid: a37d7e81722084247b0bde35c6c9a12d
timeCreated: 1556337541
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs
File was deleted
Lua/Gen/XLuaGenAutoRegister.cs
@@ -1356,9 +1356,6 @@
            translator.DelayWrapLoader(typeof(PwdKeyboard), PwdKeyboardWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.TreasureFindHostModel), SnxxzUITreasureFindHostModelWrap.__Register);
            translator.DelayWrapLoader(typeof(FairyJadeInvestmentModel), FairyJadeInvestmentModelWrap.__Register);
        
        
System/Alchemy/AlchemyModel.cs
@@ -272,7 +272,7 @@
                    alchemyCount = dict[_luckValue];
                }
            }
            return alchemyCount.Equals(default(AlchemyCount));
            return !alchemyCount.Equals(default(AlchemyCount));
        }
        public bool TryGetAlchemyMaterials(int alchemyId, out List<Item> items)
System/Alchemy/AlchemyStudyBehaviour.cs
@@ -88,12 +88,6 @@
        {
            error = 0;
            var config = AlchemyConfig.Get(model.selectAlchemy);
            var count = packModel.GetItemCountByID(PackType.Item, config.LearnNeedItemID);
            if (count <= 0)
            {
                error = 1;
                return false;
            }
            if (model.stoveLevel < config.LearnNeedAlchemLV)
            {
                error = 2;
@@ -104,6 +98,12 @@
                error = 3;
                return false;
            }
            var count = packModel.GetItemCountByID(PackType.Item, config.LearnNeedItemID);
            if (count <= 0)
            {
                error = 1;
                return false;
            }
            return true;
        }
@@ -112,7 +112,9 @@
            switch (error)
            {
                case 1:
                    SysNotifyMgr.Instance.ShowTip("AlchemyLearnError_1");
                    var config = AlchemyConfig.Get(model.selectAlchemy);
                    ItemTipUtility.Show(config.LearnNeedItemID);
                    //SysNotifyMgr.Instance.ShowTip("AlchemyLearnError_1");
                    break;
                case 2:
                    SysNotifyMgr.Instance.ShowTip("AlchemyLearnError_2");
System/BossShow/BossShowModel.cs
@@ -134,7 +134,7 @@
            catch (Exception e)
            {
                BossShowing = false;
                Debug.LogError(e.Message);
                Debug.LogError(e.Message + e.StackTrace);
            }
        }
System/MainWin/MainWinYinJiBehaviour.cs
New file
@@ -0,0 +1,101 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Saturday, April 27, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class MainWinYinJiBehaviour : MonoBehaviour
    {
        [SerializeField] RectTransform m_Content;
        [SerializeField] Image m_Circle;
        [SerializeField] Text m_Number;
        float circleTotalTime = 1f;
        YinJiModel model { get { return ModelCenter.Instance.GetModel<YinJiModel>(); } }
        private void OnEnable()
        {
            PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
            DisplayYinJiCount();
        }
        private void OnDisable()
        {
            PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
        }
        private void LateUpdate()
        {
            if (model.yinjiEndTime > Time.time)
            {
                var fillAmount = 0f;
                if (circleTotalTime != 0f)
                {
                    fillAmount = (model.yinjiEndTime - Time.time) / circleTotalTime;
                }
                m_Circle.fillAmount = fillAmount;
            }
            else
            {
                if (m_Circle.fillAmount != 0f)
                {
                    m_Circle.fillAmount = 0f;
                }
            }
            if (PlayerDatas.Instance.baseData.yinjiCount > 0)
            {
                if (!this.gameObject.activeSelf)
                {
                    m_Content.gameObject.SetActive(true);
                }
            }
            else
            {
                if (this.gameObject.activeSelf)
                {
                    m_Content.gameObject.SetActive(false);
                }
            }
        }
        private void OnPlayerDataRefresh(PlayerDataType type)
        {
            switch (type)
            {
                case PlayerDataType.CDBPlayerRefresh_YinjiCount:
                    DisplayYinJiCount();
                    break;
                case PlayerDataType.CDBPlayerRefresh_YinjiTime:
                    circleTotalTime = PlayerDatas.Instance.baseData.yinjiTime * 0.001f;
                    break;
            }
        }
        private void DisplayYinJiCount()
        {
            if (PlayerDatas.Instance.baseData.yinjiCount > 0)
            {
                m_Content.gameObject.SetActive(true);
                var count = PlayerDatas.Instance.baseData.yinjiCount;
                m_Number.text = count > 0 ? count.ToString() : "";
            }
            else
            {
                m_Content.gameObject.SetActive(false);
            }
        }
    }
}
System/MainWin/MainWinYinJiBehaviour.cs.meta
File was renamed from Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 46f7e1d408789ee41a746a47b78d9480
timeCreated: 1550120577
guid: cf633c396e5c6b94ca6e73bfe2440548
timeCreated: 1556335353
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/TreasureFindHost/ReciveConditionCell.cs
@@ -24,74 +24,58 @@
        [SerializeField] List<CommonItemBaisc> itemlist = new List<CommonItemBaisc>();
        TreasureFindHostModel hostModel { get { return ModelCenter.Instance.GetModel<TreasureFindHostModel>(); } }
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        int progress = 0;
        int findId = 0;
        StringBuilder condiSB = new StringBuilder();
        public void SetModel(int findId)
        {
            FindTreasureInfo info = null;
            hostModel.TryGetFindTreasureInfo(findId, out info);
            if (info == null) return;
            condiSB.Length = 0;
            findId = info.id;
            bool isReach = hostModel.IsReachCondition(info, out progress);
            SetReceiveAwardInfo(info);
            switch (info.type)
        public void Display(int findId)
        {
            FindTreasureInfo findHosts = null;
            hostModel.TryGetFindTreasureInfo(findId, out findHosts);
            if (findHosts == null)
            {
                return;
            }
            findId = findHosts.id;
            bool isReach = hostModel.IsReachCondition(findHosts);
            SetReceiveAwardInfo(findHosts);
            switch (findHosts.type)
            {
                case 1:
                    conditionText.text = Language.Get("TreasureFindHost_Type1", GetFindProgressStr(info));
                    break;
                case 2:
                    int equipPlace = 0;
                    foreach (var value in info.needConditionsDict.Values)
                    var index = 0;
                    var sb = new StringBuilder();
                    sb.Append(Language.Get("FindHostEquip_1"));
                    foreach (var findHostEquip in findHosts.findHostEquips)
                    {
                        string s = s = Language.Get("TreasureFindHost_Type2Split1", value[0], UIHelper.GetColorNameByItemColor(value[1]), value[2]);
                        if (condiSB.Length > 0)
                        if (index > 0)
                        {
                            s = StringUtility.Contact(Language.Get("TreasureFindHost_Type2Split2"), s);
                            sb.Append(Language.Get("FindHostEquip_2"));
                        }
                        equipPlace = value[3];
                        condiSB.Append(s);
                        var equipSet = equipModel.GetEquipSet(findHostEquip.level);
                        var realmConfig = RealmConfig.Get(equipSet.realm);
                        sb.Append(UIHelper.GetRealmName(equipSet.realm, true));
                        sb.Append(UIHelper.AppendColor(findHostEquip.itemColor,
                            UIHelper.GetColorNameByItemColor(findHostEquip.itemColor), true));
                        if (findHostEquip.isSuit)
                        {
                            var suits = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, findHostEquip.level, EquipSuitType.TwoSuit);
                            sb.Append(EquipSuitConfig.GetEquipSuitName(suits[0].suiteID));
                        }
                        sb.Append(UIHelper.GetEquipPlaceName(findHostEquip.place));
                        index++;
                    }
                    conditionText.text = Language.Get("TreasureFindHost_Type2", condiSB.ToString(), UIHelper.GetEquipPlaceName(equipPlace), GetFindProgressStr(info));
                    break;
                case 3:
                    conditionText.text = Language.Get("TreasureFindHost_Type3", info.targetNum, GetFindProgressStr(info));
                    break;
                case 4:
                    foreach (var value in info.needConditionsDict.Values)
                    {
                        string s = "";
                        switch (value[1])
                        {
                            case 1:
                                s = Language.Get("TreasureFindHost_Type4Split1", value[0], Language.Get("TreasureFindHost_Type4Split2"));
                                break;
                            case 2:
                                s = Language.Get("TreasureFindHost_Type4Split1", value[0], Language.Get("TreasureFindHost_Type4Split3"));
                                break;
                        }
                        if (condiSB.Length > 0)
                        {
                            s = StringUtility.Contact(Language.Get("TreasureFindHost_Type2Split2"), s);
                        }
                        condiSB.Append(s);
                    }
                    conditionText.text = Language.Get("TreasureFindHost_Type4", info.targetNum, condiSB.ToString(), GetFindProgressStr(info));
                    break;
                default:
                    DebugEx.LogError("暂无此类型需要添加:" + info.type);
                    conditionText.text = StringUtility.Contact(sb.ToString(), "\n", GetFindProgressStr(findHosts));
                    break;
            }
            List<int> adviceIdlist = info.adviceItemIdDict[PlayerDatas.Instance.baseData.Job];
            List<int> adviceIdlist = findHosts.findRecommandItems[PlayerDatas.Instance.baseData.Job];
            receiveBtn.RemoveAllListeners();
            if (info.IsCompleted)
            if (findHosts.IsCompleted)
            {
                receiveEffect.gameObject.SetActive(false);
                receivedImg.SetActive(true);
@@ -107,7 +91,7 @@
                    btnText.text = Language.Get("HallowsWin_Btn_ReceiveAward");
                    receiveBtn.AddListener(() =>
                    {
                        hostModel.SendGetRewardQuest(info.id);
                        hostModel.SendGetRewardQuest(findHosts.id);
                    });
                }
                else
@@ -126,13 +110,13 @@
            adviceText.SetActive(false);
        }
        public void SetReceiveAwardInfo(FindTreasureInfo info)
        public void SetReceiveAwardInfo(FindTreasureInfo findHost)
        {
            foreach (var value in info.awardMoneyDict.Values)
            foreach (var findHostMoney in findHost.findHostMoneys)
            {
                int rewardMoneyCnt = value[1];
                int rewardMoneyCnt = findHostMoney.count;
                rewardCntTex.text = UIHelper.ReplaceLargeNum(rewardMoneyCnt);
                int itemId = GeneralDefine.moneyDisplayIds[value[0]];
                int itemId = GeneralDefine.moneyDisplayIds[findHostMoney.moneyType];
                ItemConfig itemConfig = ItemConfig.Get(itemId);
                if (itemConfig != null)
                {
@@ -146,14 +130,14 @@
                });
            }
            foreach (var value in info.awardItemDict.Values)
            foreach (var item in findHost.findHostItems)
            {
                ItemConfig itemConfig = ItemConfig.Get(value[0]);
                ItemConfig itemConfig = ItemConfig.Get(item.id);
                if (itemConfig != null)
                {
                    rewardIcon.SetSprite(itemConfig.IconKey);
                    rewardBg.SetItemBackGround(itemConfig.ItemColor);
                    int rewardCnt = value[1];
                    int rewardCnt = item.count;
                    rewardCntTex.text = UIHelper.ReplaceLargeNum(rewardCnt);
                    rewardBtn.RemoveAllListeners();
                    rewardBtn.AddListener(() =>
@@ -172,17 +156,15 @@
            }
            else
            {
                if (progress < info.targetNum)
                if (!hostModel.IsReachCondition(info))
                {
                    return UIHelper.AppendColor(TextColType.Red, StringUtility.Contact(progress, "/", info.targetNum), true);
                    return UIHelper.AppendColor(TextColType.Red, StringUtility.Contact(0, "/", info.targetNum), true);
                }
                else
                {
                    return UIHelper.AppendColor(TextColType.Green, StringUtility.Contact(progress, "/", info.targetNum));
                    return UIHelper.AppendColor(TextColType.Green, StringUtility.Contact(1, "/", info.targetNum), true);
                }
            }
        }
    }
}
System/TreasureFindHost/TreasureFindHostModel.cs
@@ -9,48 +9,42 @@
    [XLua.LuaCallCSharp]
    public class TreasureFindHostModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
    {
        private Dictionary<int, List<FindTreasureInfo>> findTreasureDict = new Dictionary<int, List<FindTreasureInfo>>();
        PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        Dictionary<int, List<FindTreasureInfo>> findTreasures = new Dictionary<int, List<FindTreasureInfo>>();
        public List<int> treasureIdlist { get; set; }
        public event Action TreasureFindHostCompleteAct;
        public int[] specEquipIds { get; private set;}
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        public override void Init()
        {
            findTreasureDict.Clear();
            List<TreasureFindHostConfig> findlist = TreasureFindHostConfig.GetValues();
            for(int i = 0; i < findlist.Count; i++)
            var configs = TreasureFindHostConfig.GetValues();
            foreach (var config in configs)
            {
                int treasureId = findlist[i].MagicWeaponID;
                if(!findTreasureDict.ContainsKey(treasureId))
                int treasureId = config.MagicWeaponID;
                List<FindTreasureInfo> list;
                if (!findTreasures.TryGetValue(treasureId, out list))
                {
                    List<FindTreasureInfo> infolist = new List<FindTreasureInfo>();
                    FindTreasureInfo treasureInfo = new FindTreasureInfo(findlist[i].ID);
                    infolist.Add(treasureInfo);
                    findTreasureDict.Add(treasureId,infolist);
                    list = new List<FindTreasureInfo>();
                    findTreasures.Add(treasureId, list);
                }
                else
                {
                    FindTreasureInfo treasureInfo = new FindTreasureInfo(findlist[i].ID);
                    findTreasureDict[treasureId].Add(treasureInfo);
                }
                var treasureInfo = new FindTreasureInfo(config.ID);
                list.Add(treasureInfo);
            }
            treasureIdlist = findTreasureDict.Keys.ToList();
            treasureIdlist = findTreasures.Keys.ToList();
            SetTreasureCellRedKey();
            PlayerDatas.Instance.playerDataRefreshEvent += RefreshPlayerData;
            playerPack.refreshItemCountEvent += RefreshEquipInfo;
            packModel.refreshItemCountEvent += RefreshEquipInfo;
            treasureModel.treasureStateChangeEvent += RefreshTreasureState;
            FuncConfigConfig SamboSpecialUnlock = FuncConfigConfig.Get("SamboSpecialUnlock");
            specEquipIds = ConfigParse.GetMultipleStr<int>(SamboSpecialUnlock.Numerical1);
        }
        public void OnBeforePlayerDataInitialize()
        {
            jumpTreasureId = 0;
            foreach (var list in findTreasureDict.Values)
            foreach (var list in findTreasures.Values)
            {
                for (int i = 0; i < list.Count; i++)
                {
@@ -89,111 +83,57 @@
        public override void UnInit()
        {
            PlayerDatas.Instance.playerDataRefreshEvent -= RefreshPlayerData;
            playerPack.refreshItemCountEvent -= RefreshEquipInfo;
            packModel.refreshItemCountEvent -= RefreshEquipInfo;
            treasureModel.treasureStateChangeEvent -= RefreshTreasureState;
        }
        public Dictionary<int, List<FindTreasureInfo>> GetFindTreasureInfoDict()
        {
            return findTreasureDict;
            return findTreasures;
        }
        public bool IsReachCondition(FindTreasureInfo treasureInfo,out int progress)
        public bool IsReachCondition(FindTreasureInfo treasureInfo)
        {
            progress = 0;
            if (treasureInfo == null) return false;
            if (treasureInfo == null)
            {
                return false;
            }
            switch(treasureInfo.type)
            {
                case 1:
                    return CheckType1IsReachCondition(treasureInfo, out progress);
                case 2:
                    return CheckType2IsReachCondition(treasureInfo, out progress);
                case 3:
                    return CheckType3IsReachCondition(treasureInfo, out progress);
                case 4:
                    return CheckType4IsReachCondition(treasureInfo,out progress);
                    return CheckType1IsReachCondition(treasureInfo);
            }
            return false;
        }
        private bool CheckType1IsReachCondition(FindTreasureInfo treasureInfo, out int progress)
        private bool CheckType1IsReachCondition(FindTreasureInfo treasureInfo)
        {
            progress = PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.CDBPlayerRefresh_FuncDef);
            if(progress < treasureInfo.targetNum)
            foreach (var findHostEquip in treasureInfo.findHostEquips)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        private bool CheckType2IsReachCondition(FindTreasureInfo treasureInfo, out int progress)
        {
            progress = 0;
            SinglePack singlePack = playerPack.GetSinglePack(PackType.Equip);
            if (singlePack == null) return false;
            foreach (var condi in treasureInfo.needConditionsDict.Values)
            {
                progress = 0;
                ItemModel itemModel = playerPack.GetItemByIndex(PackType.Equip,condi[3]);
                if(itemModel != null)
                var equipGuid = equipModel.GetEquip(new Int2(findHostEquip.level, findHostEquip.place));
                if (!string.IsNullOrEmpty(equipGuid))
                {
                    if(specEquipIds != null && specEquipIds.Contains(itemModel.itemId))
                    var itemModel = packModel.GetItemByGuid(equipGuid);
                    if (itemModel != null)
                    {
                        progress += 1;
                        return true;
                    }
                    if(itemModel.config.LV >= condi[0]
                        && itemModel.config.ItemColor >= condi[1]
                        && itemModel.config.StarLevel >= condi[2])
                    {
                        progress += 1;
                        return true;
                        if (itemModel.config.ItemColor >= findHostEquip.itemColor)
                        {
                            if (findHostEquip.isSuit)
                            {
                                if (ItemLogicUtility.Instance.IsSuitEquip(itemModel.itemId))
                                {
                                    return true;
                                }
                            }
                            else
                            {
                                return true;
                            }
                        }
                    }
                }
            }
            return false;
        }
        private bool CheckType3IsReachCondition(FindTreasureInfo treasureInfo, out int progress)
        {
            progress = 0;
            SinglePack singlePack = playerPack.GetSinglePack(PackType.Equip);
            if (singlePack == null) return false;
            Dictionary<int, ItemModel> equipDict = singlePack.GetAllItems();
            foreach(var model in equipDict.Values)
            {
                progress += model.config.StarLevel;
            }
            if(progress >= treasureInfo.targetNum)
            {
                return true;
            }
            return false;
        }
        private bool CheckType4IsReachCondition(FindTreasureInfo treasureInfo,out int progress)
        {
            progress = 0;
            SinglePack singlePack = playerPack.GetSinglePack(PackType.Equip);
            if (singlePack == null) return false;
            Dictionary<int, ItemModel> equipDict = singlePack.GetAllItems();
            foreach(var condi in treasureInfo.needConditionsDict.Values)
            {
                progress = 0;
                if(progress >= treasureInfo.targetNum)
                {
                    return true;
                }
            }
            return false;
        }
@@ -204,7 +144,7 @@
            if (hostConfig != null)
            {
                List<FindTreasureInfo> infolist = null;
                findTreasureDict.TryGetValue(hostConfig.MagicWeaponID,out infolist);
                findTreasures.TryGetValue(hostConfig.MagicWeaponID,out infolist);
                if(infolist != null)
                {
                    for (int i = 0; i < infolist.Count; i++)
@@ -224,8 +164,11 @@
        {
            progress = 0;
            List<FindTreasureInfo> infolist = null;
            findTreasureDict.TryGetValue(treasureId,out infolist);
            if (infolist == null) return false;
            findTreasures.TryGetValue(treasureId,out infolist);
            if (infolist == null)
            {
                return false;
            }
            
            for(int i = 0; i < infolist.Count; i++)
            {
@@ -245,7 +188,7 @@
        private void RefreshTreasureState(int id)
        {
            if (!findTreasureDict.ContainsKey(id)) return;
            if (!findTreasures.ContainsKey(id)) return;
            Treasure treasure = null;
            treasureModel.TryGetTreasure(id, out treasure);
@@ -281,7 +224,7 @@
        public bool CheckTreasureFindHostFinish()
        {
            bool isfinish = true;
            foreach (var id in findTreasureDict.Keys)
            foreach (var id in findTreasures.Keys)
            {
                Treasure treasure = null;
                treasureModel.TryGetTreasure(id, out treasure);
@@ -396,7 +339,7 @@
        {
            treasureCellRedDict.Clear();
            int i = 0;
            foreach(var id in findTreasureDict.Keys)
            foreach(var id in findTreasures.Keys)
            {
                int redKey = TreasureFindHost_RedKey * 100 + i;
                Redpoint redpoint = new Redpoint(TreasureFindHost_RedKey,redKey);
@@ -417,7 +360,10 @@
        private void RefreshEquipInfo(PackType type, int index, int itemId)
        {
            if (type != PackType.Equip) return;
            if (type != PackType.Equip)
            {
                return;
            }
            for (int i = 0; i < treasureIdlist.Count; i++)
            {
@@ -467,11 +413,10 @@
            }
            if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.TreasureFindHost)) return;
            List<FindTreasureInfo> list = findTreasureDict[treasureId];
            int progress = 0;
            List<FindTreasureInfo> list = findTreasures[treasureId];
            for (int i = 0; i < list.Count; i++)
            {
                bool isReach = IsReachCondition(list[i],out progress);
                bool isReach = IsReachCondition(list[i]);
                if(!list[i].IsCompleted && isReach)
                {
                    treasureCellRedDict[treasureId].state = RedPointState.Simple;
@@ -482,6 +427,7 @@
            Treasure treasure = null;
            treasureModel.TryGetTreasure(treasureId, out treasure);
            var progress = 0;
            if (IsReachUnlock(treasureId,out progress) 
                && treasure != null && treasure.state != TreasureState.Collected)
            {
@@ -494,99 +440,94 @@
    public class FindTreasureInfo
    {
        public int id;
        public int treasureId;
        public int type;
        public int targetNum;
        public int jumpId;
        public Dictionary<int, List<int>> needConditionsDict = new Dictionary<int, List<int>>();
        public Dictionary<int, List<int>> awardItemDict = new Dictionary<int, List<int>>();
        public Dictionary<int, List<int>> awardMoneyDict = new Dictionary<int, List<int>>();
        public Dictionary<int, List<int>> adviceItemIdDict = new Dictionary<int, List<int>>();
        public readonly int id;
        public readonly int treasureId;
        public readonly int type;
        public readonly int targetNum;
        public readonly int jumpId;
        public List<FindHostEquip> findHostEquips { get; private set; }
        public List<Item> findHostItems = new List<Item>();
        public List<FindHostMoney> findHostMoneys = new List<FindHostMoney>();
        public Dictionary<int, List<int>> findRecommandItems = new Dictionary<int, List<int>>();
        public bool IsCompleted;
        public FindTreasureInfo(int id)
        {
            needConditionsDict.Clear();
            awardItemDict.Clear();
            awardMoneyDict.Clear();
            adviceItemIdDict.Clear();
            var config = TreasureFindHostConfig.Get(id);
            this.id = id;
            this.type = config.Type;
            this.targetNum = config.NeedCnt;
            this.jumpId = config.JumpID;
            this.treasureId = config.MagicWeaponID;
            IsCompleted = false;
            TreasureFindHostConfig hostConfig = TreasureFindHostConfig.Get(id);
            this.type = hostConfig.Type;
            this.targetNum = hostConfig.NeedCnt;
            this.jumpId = hostConfig.JumpID;
            this.treasureId = hostConfig.MagicWeaponID;
            JsonData needCondiData = JsonMapper.ToObject(hostConfig.Condition);
            if(needCondiData.IsArray)
            switch (type)
            {
                for(int i = 0; i < needCondiData.Count; i++)
                {
                    List<int> condlist = new List<int>();
                    needConditionsDict.Add(i,condlist);
                    if (needCondiData[i].IsArray)
                case 1:
                    var equipArray = JsonMapper.ToObject<int[][]>(config.Condition);
                    findHostEquips = new List<FindHostEquip>();
                    for (int i = 0; i < equipArray.Length; i++)
                    {
                        for(int j = 0; j < needCondiData[i].Count;j++)
                        findHostEquips.Add(new FindHostEquip()
                        {
                            condlist.Add(int.Parse(needCondiData[i][j].ToString()));
                        }
                            level = equipArray[i][0],
                            itemColor = equipArray[i][1],
                            isSuit = equipArray[i][2] == 1,
                            place = equipArray[i][3],
                        });
                    }
                    else
                    {
                        condlist.Add(int.Parse(needCondiData[i].ToString()));
                    }
                }
                    break;
            }
            JsonData awardItemData = JsonMapper.ToObject(hostConfig.AwardItemList);
            if(awardItemData.IsArray)
            var itemArray = JsonMapper.ToObject<int[][]>(config.AwardItemList);
            for (int i = 0; i < itemArray.Length; i++)
            {
                for(int i= 0; i < awardItemData.Count;i++)
                findHostItems.Add(new Item()
                {
                    List<int> awardlist = new List<int>();
                    awardItemDict.Add(i, awardlist);
                    if (awardItemData[i].IsArray)
                    {
                        for(int j = 0; j < awardItemData[i].Count; j++)
                        {
                            awardlist.Add(int.Parse(awardItemData[i][j].ToString()));
                        }
                    }
                }
                    id = itemArray[i][0],
                    count = itemArray[i][1],
                });
            }
            JsonData awardMoneyData = JsonMapper.ToObject(hostConfig.Money);
            if (awardMoneyData.IsArray)
            var moneyArray = JsonMapper.ToObject<int[][]>(config.Money);
            for (int i = 0; i < moneyArray.Length; i++)
            {
                for (int i = 0; i < awardMoneyData.Count; i++)
                findHostMoneys.Add(new FindHostMoney()
                {
                    List<int> awardlist = new List<int>();
                    awardMoneyDict.Add(i, awardlist);
                    if (awardMoneyData[i].IsArray)
                    {
                        for (int j = 0; j < awardMoneyData[i].Count; j++)
                        {
                            awardlist.Add(int.Parse(awardMoneyData[i][j].ToString()));
                        }
                    }
                }
                    moneyType = moneyArray[i][0],
                    count = moneyArray[i][1],
                });
            }
            JsonData adviceData = JsonMapper.ToObject(hostConfig.AdviceIds);
            foreach(var job in adviceData.Keys)
            var recommandJson = JsonMapper.ToObject(config.AdviceIds);
            foreach (var jobKey in recommandJson.Keys)
            {
                List<int> idlist = new List<int>();
                adviceItemIdDict.Add(int.Parse(job),idlist);
                if(adviceData[job].IsArray)
                var items = new List<int>();
                findRecommandItems.Add(int.Parse(jobKey), items);
                var array = LitJson.JsonMapper.ToObject<int[]>(recommandJson[jobKey].ToJson());
                for (int i = 0; i < array.Length; i++)
                {
                    for(int i = 0; i < adviceData[job].Count; i++)
                    {
                        idlist.Add(int.Parse(adviceData[job][i].ToString()));
                    }
                    items.Add(array[i]);
                }
            }
        }
    }
    public struct FindHostEquip
    {
        public int level;
        public int place;
        public int itemColor;
        public bool isSuit;
    }
    public struct FindHostMoney
    {
        public int moneyType;
        public int count;
    }
}
System/TreasureFindHost/TreasureFindHostWin.cs
@@ -313,8 +313,7 @@
            }
            else
            {
                int progress = 0;
                if (hostModel.IsReachCondition(info, out progress))
                if (hostModel.IsReachCondition(info))
                {
                    return true;
                }
@@ -333,8 +332,7 @@
            }
            else
            {
                int progress = 0;
                if (hostModel.IsReachCondition(info, out progress))
                if (hostModel.IsReachCondition(info))
                {
                    return false;
                }
@@ -348,7 +346,7 @@
        private void RefreshConditionCell(ScrollerDataType type, CellView cell)
        {
            ReciveConditionCell conditionCell = cell.GetComponent<ReciveConditionCell>();
            conditionCell.SetModel(cell.index);
            conditionCell.Display(cell.index);
        }
    }
System/YinJi.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 80212c8f087439f4a8bd063acaf6d098
folderAsset: yes
timeCreated: 1556337107
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
System/YinJi/YinJiModel.cs
New file
@@ -0,0 +1,39 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Saturday, April 27, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class YinJiModel : Model, IBeforePlayerDataInitialize
    {
        public float yinjiEndTime { get; private set; }
        public override void Init()
        {
        }
        public override void UnInit()
        {
        }
        public void OnBeforePlayerDataInitialize()
        {
            yinjiEndTime = 0f;
        }
        public void BeginFadeAway()
        {
            yinjiEndTime = Time.time + PlayerDatas.Instance.baseData.yinjiTime * 0.001f;
        }
    }
}
System/YinJi/YinJiModel.cs.meta
copy from Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs.meta copy to System/YinJi/YinJiModel.cs.meta
File was copied from Lua/Gen/SnxxzUITreasureFindHostModelWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 46f7e1d408789ee41a746a47b78d9480
timeCreated: 1550120577
guid: 1032dcc4efb61bf4ea34d11cfe05d62b
timeCreated: 1556337085
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Utility/EnumHelper.cs
@@ -568,6 +568,8 @@
    CDBPlayerRefresh_SuperHitRateReduce = 210,//暴击抗性
    CDBPlayerRefresh_LuckyHitReduce = 211,//会心一击伤害固定值减免
    CDBPlayerRefresh_FinalHurtReducePer = 212,//最终伤害百分比减少
    CDBPlayerRefresh_YinjiTime=213,//印记持续时间,单位毫秒
    CDBPlayerRefresh_YinjiCount = 214,//印记持续时间,单位毫秒
};
/** 背包类型码定义 */