少年修仙传客户端代码仓库
client_Wu Xijin
2019-04-12 a2f60684672fa50c8793e9f548ccf57e23fc15e5
6490 【2.0】【前端】打宝界面和境界压制调整
2 文件已重命名
13个文件已修改
384 ■■■■ 已修改文件
Core/GameEngine/Model/Config/MapConfig.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/MapConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIWorldBossModelWrap.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerBoss/CrossServerBossWin.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonWin.cs 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossHomeWin.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/DemonJarWin.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/ElderGodAreaWin.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/PersonalBossWin.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/WorldBossBreifInfoBehaviour.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/WorldBossModel.cs 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/WorldBossWin.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/WorldMapUnLockTip.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/MapConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Thursday, February 14, 2019
//    [  Date ]:           Friday, April 12, 2019
//--------------------------------------------------------
using System.Collections.Generic;
@@ -16,6 +16,7 @@
    public readonly int MapID;
    public readonly string Name;
    public readonly int LV;
    public readonly int realmLevel;
    public readonly int MapFBType;
    public readonly int LocalReborn;
    public readonly int SkillReborn;
@@ -44,32 +45,34 @@
            int.TryParse(tables[2],out LV); 
            int.TryParse(tables[3],out MapFBType);
            int.TryParse(tables[3],out realmLevel);
            int.TryParse(tables[4],out LocalReborn);
            int.TryParse(tables[4],out MapFBType);
            int.TryParse(tables[5],out SkillReborn);
            int.TryParse(tables[5],out LocalReborn);
            int.TryParse(tables[6],out CanRide);
            int.TryParse(tables[6],out SkillReborn);
            int.TryParse(tables[7],out CanOutPet);
            int.TryParse(tables[7],out CanRide);
            int.TryParse(tables[8],out TeamLimit);
            int.TryParse(tables[8],out CanOutPet);
            string[] BornPointsStringArray = tables[9].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            int.TryParse(tables[9],out TeamLimit);
            string[] BornPointsStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            BornPoints = new Vector3[BornPointsStringArray.Length];
            for (int i=0;i<BornPointsStringArray.Length;i++)
            {
                BornPoints[i]=BornPointsStringArray[i].Vector3Parse();
            }
            int.TryParse(tables[10],out MainTaskID);
            int.TryParse(tables[11],out MainTaskID);
            MapTaskText = tables[11];
            MapTaskText = tables[12];
            int.TryParse(tables[12],out Camp);
            int.TryParse(tables[13],out Camp);
            int.TryParse(tables[13],out AtkType);
            int.TryParse(tables[14],out AtkType);
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/Config/MapConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: db9da28a811a0af4db68188db3a20863
timeCreated: 1550121374
timeCreated: 1555048178
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs
Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs.meta
Lua/Gen/SnxxzUIWorldBossModelWrap.cs
@@ -260,7 +260,7 @@
                
                {
                    
                        int gen_ret = gen_to_be_invoked.GetLatestUnLockBoss(  );
                        int gen_ret = gen_to_be_invoked.GetRecommendBoss(  );
                        LuaAPI.xlua_pushinteger(L, gen_ret);
                    
                    
System/CrossServerBoss/CrossServerBossWin.cs
@@ -24,6 +24,7 @@
        [SerializeField] ImageEx m_ImageGoto;
        [SerializeField] Button m_KillRecord;
        [SerializeField] Transform m_SurpassLevel;
        [SerializeField] RectTransform m_NoDamageTip;
        [SerializeField] ToggleButton m_Subscribe;
        [SerializeField] RectTransform m_ContainerBoxCollectWeary;
@@ -33,8 +34,6 @@
        CrossServerBossModel model { get { return ModelCenter.Instance.GetModel<CrossServerBossModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -85,7 +84,7 @@
            DisplayItemDropTip(model.selectedBoss);
            DisplayBossBaseInfo(model.selectedBoss);
            DisplayWearyValue(model.selectedBoss);
            DisplayTimes(model.selectedBoss);
        }
        private void ShowKillRecords()
@@ -149,7 +148,7 @@
        {
            DisplayItemDropTip(_bossId);
            DisplayBossBaseInfo(_bossId);
            DisplayWearyValue(_bossId);
            DisplayTimes(_bossId);
        }
        private void DisplayBossBaseInfo(int _bossId)
@@ -191,26 +190,40 @@
            }
        }
        private void DisplayItemDropTip(int _bossId)
        private void DisplayItemDropTip(int bossId)
        {
            var config = CrossServerBossConfig.Get(model.selectedBoss);
            var config = CrossServerBossConfig.Get(bossId);
            switch (config.MonsterType)
            {
                case 1:
                case 2:
                case 3:
                    m_NoDamageTip.gameObject.SetActive(true);
                    m_SurpassLevel.gameObject.SetActive(false);
                    break;
                case 4:
                    var npcDropConfig = NPCDropItemConfig.Get(_bossId);
                    m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
                    var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
                    var npcConfig = NPCConfig.Get(bossId);
                    if (npcConfig.Realm > realmLevel)
                    {
                        m_NoDamageTip.gameObject.SetActive(true);
                        m_SurpassLevel.gameObject.SetActive(false);
                    }
                    else
                    {
                        m_NoDamageTip.gameObject.SetActive(false);
                        var dropConfig = NPCDropItemConfig.Get(bossId);
                        var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
                        m_SurpassLevel.gameObject.SetActive(noDrop);
                    }
                    break;
            }
        }
        private void DisplayWearyValue(int _bossId)
        private void DisplayTimes(int bossId)
        {
            var config = CrossServerBossConfig.Get(model.selectedBoss);
            var config = CrossServerBossConfig.Get(bossId);
            switch (config.MonsterType)
            {
                case 1:
System/DogzDungeon/DogzDungeonWin.cs
@@ -24,6 +24,7 @@
        [SerializeField] ImageEx m_ImageGoto;
        [SerializeField] Button m_KillRecord;
        [SerializeField] Transform m_SurpassLevel;
        [SerializeField] RectTransform m_NoDamageTip;
        [SerializeField] ToggleButton m_Subscribe;
        [SerializeField] RectTransform m_ContainerBoxCollectWeary;
@@ -85,7 +86,7 @@
            DisplayItemDropTip(model.selectedBoss);
            DisplayBossBaseInfo(model.selectedBoss);
            DisplayWearyValue(model.selectedBoss);
            DisplaySkillTimes(model.selectedBoss);
        }
        private void ShowKillRecords()
@@ -232,7 +233,7 @@
        {
            DisplayItemDropTip(_bossId);
            DisplayBossBaseInfo(_bossId);
            DisplayWearyValue(_bossId);
            DisplaySkillTimes(_bossId);
        }
        private void DisplayBossBaseInfo(int _bossId)
@@ -274,24 +275,38 @@
            }
        }
        private void DisplayItemDropTip(int _bossId)
        private void DisplayItemDropTip(int bossId)
        {
            var config = DogzDungeonConfig.Get(model.selectedBoss);
            var config = DogzDungeonConfig.Get(bossId);
            switch (config.MonsterType)
            {
                case 1:
                case 2:
                case 3:
                    m_NoDamageTip.gameObject.SetActive(true);
                    m_SurpassLevel.gameObject.SetActive(false);
                    break;
                case 4:
                    var npcDropConfig = NPCDropItemConfig.Get(_bossId);
                    m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
                    var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
                    var npcConfig = NPCConfig.Get(bossId);
                    if (npcConfig.Realm > realmLevel)
                    {
                        m_NoDamageTip.gameObject.SetActive(true);
                        m_SurpassLevel.gameObject.SetActive(false);
                    }
                    else
                    {
                        m_NoDamageTip.gameObject.SetActive(false);
                        var dropConfig = NPCDropItemConfig.Get(bossId);
                        var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
                        m_SurpassLevel.gameObject.SetActive(noDrop);
                    }
                    break;
            }
        }
        private void DisplayWearyValue(int _bossId)
        private void DisplaySkillTimes(int _bossId)
        {
            var config = DogzDungeonConfig.Get(model.selectedBoss);
            switch (config.MonsterType)
System/FindPrecious/BossHomeWin.cs
@@ -26,12 +26,12 @@
        [SerializeField] Button m_Goto;
        [SerializeField] Button m_KillRecord;
        [SerializeField] Transform m_SurpassLevel;
        [SerializeField] RectTransform m_NoDamageTip;
        [SerializeField] ToggleButton m_Subscribe;
        BossHomeModel model { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -111,8 +111,8 @@
                        break;
                }
                var npcDropConfig = NPCDropItemConfig.Get(model.selectedBoss);
                m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
                DisplayTip(model.selectedBoss);
            }
        }
@@ -191,8 +191,8 @@
            yield return WaitingForSecondConst.WaitMS300;
            var bossId = model.selectedBoss;
            var config = BossHomeConfig.Get(bossId);
            var npcDropConfig = NPCDropItemConfig.Get(bossId);
            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
            DisplayTip(model.selectedBoss);
            switch (config.MonsterType)
            {
@@ -350,10 +350,28 @@
            }
        }
        private void DisplayTip(int bossId)
        {
            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
            var config = NPCConfig.Get(bossId);
            if (config.Realm > realmLevel)
            {
                m_NoDamageTip.gameObject.SetActive(true);
                m_SurpassLevel.gameObject.SetActive(false);
            }
            else
            {
                m_NoDamageTip.gameObject.SetActive(false);
                var dropConfig = NPCDropItemConfig.Get(bossId);
                var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
                m_SurpassLevel.gameObject.SetActive(noDrop);
            }
    }
}
}
System/FindPrecious/DemonJarWin.cs
@@ -25,6 +25,7 @@
        [SerializeField] TimerBehaviour m_CountRemainTime;
        [SerializeField] Button m_Goto;
        [SerializeField] Transform m_SurpassLevel;
        [SerializeField] RectTransform m_NoDamageTip;
        [SerializeField] ToggleButton m_Subscribe;
        [SerializeField] RectTransform m_ContainerDouble;
@@ -134,13 +135,13 @@
            DemonJarBossData bossData;
            model.TryGetBossData(model.selectedBoss, out bossData);
            var npcDropConfig = NPCDropItemConfig.Get(bossData.id);
            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
            m_BossIntroduce.Display(model.selectedBoss, true);
            m_Bosses.Init(bosses);
            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
            DisplayTip(model.selectedBoss);
        }
        private void ShowSkillRecord()
@@ -378,19 +379,18 @@
            return true;
        }
        private void OnBossSelected(int _bossId)
        private void OnBossSelected(int bossId)
        {
            m_BossIntroduce.Display(_bossId, false);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
            m_BossIntroduce.Display(bossId, false);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(bossId);
            DemonJarBossData bossData;
            model.TryGetBossData(_bossId, out bossData);
            var npcDropConfig = NPCDropItemConfig.Get(bossData.id);
            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
            model.TryGetBossData(bossId, out bossData);
            var demonJarConfig = DemonJarConfig.Get(model.selectedBoss);
            m_RewardDescription.text = Language.Get(demonJarConfig.RewardDescription);
            var config = DemonJarConfig.Get(model.selectedBoss);
            m_RewardDescription.text = Language.Get(config.RewardDescription);
            DisplayTip(bossId);
            DisplayAutoAndDoubleTitle();
        }
@@ -434,6 +434,26 @@
            }
        }
        private void DisplayTip(int bossId)
        {
            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
            var config = NPCConfig.Get(bossId);
            if (config.Realm > realmLevel)
            {
                m_NoDamageTip.gameObject.SetActive(true);
                m_SurpassLevel.gameObject.SetActive(false);
            }
            else
            {
                m_NoDamageTip.gameObject.SetActive(false);
                var dropConfig = NPCDropItemConfig.Get(bossId);
                var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
                m_SurpassLevel.gameObject.SetActive(noDrop);
            }
        }
    }
}
System/FindPrecious/ElderGodAreaWin.cs
@@ -22,6 +22,7 @@
        [SerializeField] Button m_Goto;
        [SerializeField] Button m_KillRecord;
        [SerializeField] ToggleButton m_Subscribe;
        [SerializeField] RectTransform m_NoDamageTip;
        ElderGodAreaModel model { get { return ModelCenter.Instance.GetModel<ElderGodAreaModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
@@ -82,6 +83,8 @@
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
            m_Bosses.Init(bosses);
            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
            DisplayTip(model.selectedBoss);
        }
        private void ShowKillRecords()
@@ -163,11 +166,13 @@
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
        }
        private void OnBossSelected(int _bossId)
        private void OnBossSelected(int bossId)
        {
            StopCoroutine("Co_DelayDisplayNpcBaseInfo");
            StartCoroutine("Co_DelayDisplayNpcBaseInfo");
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(bossId);
            DisplayTip(bossId);
        }
        private void DisplayNpcBaseInfo(bool immediately)
@@ -213,6 +218,22 @@
                }
            }
        }
        private void DisplayTip(int bossId)
        {
            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
            var config = NPCConfig.Get(bossId);
            if (config.Realm > realmLevel)
            {
                m_NoDamageTip.gameObject.SetActive(true);
            }
            else
            {
                m_NoDamageTip.gameObject.SetActive(false);
            }
        }
    }
}
System/FindPrecious/PersonalBossWin.cs
@@ -19,6 +19,7 @@
        [SerializeField] BossIntroduceBehaviour m_BossIntroduce;
        [SerializeField] Text m_Times;
        [SerializeField] Button m_Goto;
        [SerializeField] RectTransform m_NoDamageTip;
        PersonalBossModel model { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
@@ -73,6 +74,8 @@
            m_BossIntroduce.Display(model.selectedBoss, true);
            m_Bosses.Init(bosses);
            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
            DisplayTip(model.selectedBoss);
        }
        private void GotoKillBoss()
@@ -136,10 +139,27 @@
            return true;
        }
        private void OnBossSelected(int _bossId)
        private void OnBossSelected(int bossId)
        {
            m_BossIntroduce.Display(_bossId, false);
            m_BossIntroduce.Display(bossId, false);
            DisplayTip(bossId);
        }
        private void DisplayTip(int bossId)
        {
            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
            var config = NPCConfig.Get(bossId);
            if (config.Realm > realmLevel)
            {
                m_NoDamageTip.gameObject.SetActive(true);
            }
            else
            {
                m_NoDamageTip.gameObject.SetActive(false);
            }
        }
    }
}
System/FindPrecious/WorldBossBreifInfoBehaviour.cs
@@ -14,6 +14,8 @@
    public class WorldBossBreifInfoBehaviour : FindPreciousBossBriefInfoBehaviour
    {
        [SerializeField] Image m_Attention;
        [SerializeField] RectTransform m_UnLockCondition;
        [SerializeField] Image m_UnLockRealm;
        protected override int selectedBossId {
            get {
@@ -90,6 +92,43 @@
            m_Attention.gameObject.SetActive(findPreciousModel.IsBossSubscribed(bossId));
        }
        protected override void DrawBossBaseInfo(string icon, string name, int level, int realm)
        {
            m_Portrait.SetSprite(icon);
            m_Portrait.SetNativeSize();
            m_BossName.text = name;
            m_BossLevel.text = Language.Get("Z1024", level);
            m_RealmContainer.gameObject.SetActive(isUnLocked);
            m_UnLockCondition.gameObject.SetActive(!isUnLocked);
            if (!isUnLocked)
            {
                var unLockRealm = model.GetBossUnLockRealm(bossId);
                var config = RealmConfig.Get(unLockRealm);
                m_UnLockRealm.SetSprite(config.Img);
            }
            else
            {
                if (m_Realm != null && m_RealmContainer != null)
                {
                    if (RealmConfig.Has(realm))
                    {
                        m_RealmContainer.gameObject.SetActive(true);
                        var realmConfig = RealmConfig.Get(realm);
                        if (realmConfig != null)
                        {
                            m_Realm.SetSprite(realmConfig.Img);
                        }
                    }
                    else
                    {
                        m_RealmContainer.gameObject.SetActive(false);
                    }
                }
            }
        }
    }
}
System/FindPrecious/WorldBossModel.cs
@@ -3,13 +3,11 @@
using UnityEngine;
using System;
namespace Snxxz.UI
{
    [XLua.LuaCallCSharp]
    public class WorldBossModel : Model
    {
        public const int WORLDBOSS_REDPOINT = 76001;
        int m_SelectedBoss = 0;
@@ -64,6 +62,7 @@
        public Redpoint worldBossRedPoint = new Redpoint(FindPreciousModel.FINDPRECIOUS_REDPOINTID, WORLDBOSS_REDPOINT);
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
        public override void Init()
        {
@@ -82,13 +81,10 @@
        public List<int> GetWorldBosses()
        {
            var activedBossIds = new List<int>();
            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
            for (int i = 0; i < sortedBossIds.Count; i++)
            {
                var bossId = sortedBossIds[i];
                var config = WorldBossConfig.Get(bossId);
                var mapId = config.MapID;
                if (mapModel.IsMapUnlocked(mapId))
                if (IsBossUnLockedOrUnlockSoon(bossId))
                {
                    activedBossIds.Add(bossId);
                }
@@ -100,7 +96,6 @@
        public List<int> GetWorldBosses(int _mapId)
        {
            var bosses = new List<int>();
            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
            for (int i = 0; i < sortedBossIds.Count; i++)
            {
                var bossId = sortedBossIds[i];
@@ -120,7 +115,7 @@
            return worldBosses.ContainsKey(_bossId) && worldBosses[_bossId].isUnLocked;
        }
        public int GetLatestUnLockBoss()
        public int GetRecommendBoss()
        {
            var playerLevel = PlayerDatas.Instance.baseData.LV;
            for (int i = sortedBossIds.Count - 1; i >= 0; i--)
@@ -136,6 +131,47 @@
            return sortedBossIds[0];
        }
        public int GetBossUnLockRealm(int bossId)
        {
            if (!worldBosses.ContainsKey(bossId))
            {
                return 0;
            }
            var config = NPCConfig.Get(bossId);
            var realmStage = realmModel.GetRealmStage(config.Realm);
            var realms = new List<int>();
            if (realmModel.TryGetRealmStages(realmStage, out realms))
            {
                return realms[0];
            }
            else
            {
                return 0;
            }
        }
        private bool IsBossUnLockedOrUnlockSoon(int bossId)
        {
            var myRealmLevel = PlayerDatas.Instance.baseData.realmLevel;
            var myRealmStage = realmModel.GetRealmStage(myRealmLevel);
            var config = NPCConfig.Get(bossId);
            var bossRealmStage = realmModel.GetRealmStage(config.Realm);
            if (myRealmStage >= bossRealmStage)
            {
                return true;
            }
            if (myRealmStage + 1 >= bossRealmStage)
            {
                return true;
            }
            return false;
        }
        private void ParseConfig()
        {
            var worldBossConfigs = WorldBossConfig.GetValues();
@@ -147,18 +183,23 @@
            sortedBossIds.AddRange(worldBosses.Keys);
            sortedBossIds.Sort(WorldBossData.LevelCompare);
        }
    }
    public class WorldBossData
    {
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
        public int id { get; private set; }
        public bool isUnLocked {
            get {
                var config = WorldBossConfig.Get(id);
                var mapUnLocked = mapModel.IsMapUnlocked(config.MapID);
                return mapUnLocked;
                var myRealmLevel = PlayerDatas.Instance.baseData.realmLevel;
                var myRealmStage = realmModel.GetRealmStage(myRealmLevel);
                var config = NPCConfig.Get(id);
                var bossRealmStage = realmModel.GetRealmStage(config.Realm);
                return myRealmStage >= bossRealmStage;
            }
        }
System/FindPrecious/WorldBossWin.cs
@@ -21,10 +21,10 @@
        [SerializeField] Button m_Goto;
        [SerializeField] Button m_KillRecord;
        [SerializeField] Transform m_SurpassLevel;
        [SerializeField] RectTransform m_NoDamageTip;
        [SerializeField] ToggleButton m_Subscribe;
        WorldBossModel model { get { return ModelCenter.Instance.GetModel<WorldBossModel>(); } }
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
@@ -78,16 +78,14 @@
            var bosses = new List<int>();
            bosses.AddRange(model.GetWorldBosses());
            model.selectedBoss = model.GetLatestUnLockBoss();
            model.selectedBoss = model.GetRecommendBoss();
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
            m_BossIntroduce.Display(model.selectedBoss, true);
            m_Bosses.Init(bosses);
            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
            var config = NPCConfig.Get(model.selectedBoss);
            var npcDropConfig = NPCDropItemConfig.Get(model.selectedBoss);
            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
            DisplayTip(model.selectedBoss);
        }
        private void ShowKillRecords()
@@ -128,12 +126,11 @@
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
        }
        private void OnBossSelected(int _bossId)
        private void OnBossSelected(int bossId)
        {
            m_BossIntroduce.Display(_bossId, false);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
            var npcDropConfig = NPCDropItemConfig.Get(model.selectedBoss);
            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
            m_BossIntroduce.Display(bossId, false);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(bossId);
            DisplayTip(bossId);
        }
        private void OnBossWearyValue()
@@ -221,6 +218,25 @@
            }
        }
        private void DisplayTip(int bossId)
        {
            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
            var config = NPCConfig.Get(bossId);
            if (config.Realm > realmLevel)
            {
                m_NoDamageTip.gameObject.SetActive(true);
                m_SurpassLevel.gameObject.SetActive(false);
            }
            else
            {
                m_NoDamageTip.gameObject.SetActive(false);
                var dropConfig = NPCDropItemConfig.Get(bossId);
                var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
                m_SurpassLevel.gameObject.SetActive(noDrop);
            }
        }
    }
}
System/WorldMap/WorldMapUnLockTip.cs
@@ -12,28 +12,36 @@
    public class WorldMapUnLockTip : MonoBehaviour
    {
        [SerializeField] Image m_LevelConditionSign;
        [SerializeField] Image m_TreasureConditionSign;
        [SerializeField] Text m_LevelCondtion;
        [SerializeField] Text m_TreasureCondition;
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        [SerializeField] Image m_ConditionSign1;
        [SerializeField] Image m_ConditionSign2;
        [SerializeField] Text m_Condtion1;
        [SerializeField] Text m_Condition2;
        public void Display(int _mapId)
        {
            var config = MapConfig.Get(_mapId);
            m_LevelCondtion.text = Language.Get("WorldMap_LV", config.LV);
            m_LevelCondtion.color = PlayerDatas.Instance.baseData.LV >= config.LV ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red);
            if (string.IsNullOrEmpty(config.MapTaskText))
            if (config.realmLevel > 0)
            {
                m_TreasureConditionSign.gameObject.SetActive(false);
                m_TreasureCondition.text = "";
                var realmConfig = RealmConfig.Get(config.realmLevel);
                m_Condtion1.text = Language.Get("WorldMap_Realm", realmConfig.Name);
                m_Condtion1.color = UIHelper.GetUIColor(PlayerDatas.Instance.baseData.realmLevel >= config.realmLevel ? TextColType.Green : TextColType.Red);
            }
            else
            {
                m_TreasureConditionSign.gameObject.SetActive(true);
                m_TreasureCondition.text = config.MapTaskText;
                m_Condtion1.text = Language.Get("WorldMap_LV", config.LV);
                m_Condtion1.color = UIHelper.GetUIColor(PlayerDatas.Instance.baseData.LV >= config.LV ? TextColType.Green : TextColType.Red);
            }
            if (string.IsNullOrEmpty(config.MapTaskText))
            {
                m_ConditionSign2.gameObject.SetActive(false);
                m_Condition2.text = "";
            }
            else
            {
                m_ConditionSign2.gameObject.SetActive(true);
                m_Condition2.text = config.MapTaskText;
            }
        }