少年修仙传客户端代码仓库
client_Wu Xijin
2018-10-09 30f9bce2933a8f3cf38d05987598c661c139bb4b
4081  【前端】古神禁地列表新增”精英怪物“
3个文件已修改
2个文件已添加
216 ■■■■ 已修改文件
System/FindPrecious/ElderEliteMonsterBehaviour.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/ElderEliteMonsterBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/ElderGodAreaModel.cs 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/ElderGodAreaWin.cs 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/ElderGodBreifInfoBehaviour.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/ElderEliteMonsterBehaviour.cs
New file
@@ -0,0 +1,33 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Saturday, August 18, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI
{
    public class ElderEliteMonsterBehaviour : MonoBehaviour
    {
        [SerializeField] RawImage m_RawImage;
        public void Display(int npcId)
        {
            var config = Config.Instance.Get<NPCConfig>(npcId);
            UI3DModelExhibition.Instance.ShowNPC(npcId, config.UIModeLOffset, config.UIModelRotation, m_RawImage);
        }
        public void Dispose()
        {
            UI3DModelExhibition.Instance.StopShow();
        }
    }
}
System/FindPrecious/ElderEliteMonsterBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 2aefe6a576cf98e49a1b99cc59e23efe
timeCreated: 1534563304
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FindPrecious/ElderGodAreaModel.cs
@@ -13,9 +13,7 @@
        int m_SelectedBoss = 0;
        public int selectedBoss {
            get {
                return this.m_SelectedBoss;
            }
            get { return this.m_SelectedBoss; }
            set {
                if (this.m_SelectedBoss != value)
                {
@@ -39,6 +37,7 @@
        public event Action<int> bossSelectedEvent;
        public event Action<int> surplusTimesChangeEvent;
        List<int> sortedElites = new List<int>();
        List<int> sortedBossIds = new List<int>();
        Dictionary<int, ElderGodBossData> elderGodBosses = new Dictionary<int, ElderGodBossData>();
        Dictionary<int, int> npcAngers = new Dictionary<int, int>();
@@ -82,27 +81,61 @@
        public bool IsBossUnLocked(int _bossId)
        {
            var playerLevel = PlayerDatas.Instance.baseData.LV;
            return elderGodBosses.ContainsKey(_bossId) && playerLevel >= elderGodBosses[_bossId].unLockLevel;
            var config = Config.Instance.Get<ElderGodAreaConfig>(_bossId);
            if (config == null)
            {
                return false;
            }
            if (config.MonsterType == 1)
            {
                return true;
            }
            else
            {
                var playerLevel = PlayerDatas.Instance.baseData.LV;
                return elderGodBosses.ContainsKey(_bossId) && playerLevel >= elderGodBosses[_bossId].unLockLevel;
            }
        }
        public List<int> GetElderGodBosses()
        {
            return new List<int>(sortedBossIds);
            var bosses = new List<int>();
            bosses.Add(sortedElites[0]);
            bosses.AddRange(sortedBossIds);
            return bosses;
        }
        public int GetLatestUnLockBoss()
        public int GetRecommendNpc()
        {
            for (int i = 0; i < sortedBossIds.Count; i++)
            foreach (var item in sortedBossIds)
            {
                var bossId = sortedBossIds[i];
                if (findPreciousModel.IsBossAlive(bossId))
                if (findPreciousModel.IsBossAlive(item))
                {
                    return bossId;
                    return item;
                }
            }
            return sortedElites[0];
        }
        public int GetRecommendEliteNpc()
        {
            var npc = 0;
            var levelDelta = int.MaxValue;
            var myLevel = PlayerDatas.Instance.baseData.LV;
            foreach (var item in sortedElites)
            {
                var config = Config.Instance.Get<NPCConfig>(item);
                var delta = Mathf.Abs(myLevel - config.NPCLV);
                if (delta < levelDelta)
                {
                    npc = item;
                    levelDelta = delta;
                }
            }
            return sortedBossIds[0];
            return npc;
        }
        private void ParseConfig()
@@ -115,12 +148,25 @@
                {
                    elderGodBosses[config.NPCID] = new ElderGodBossData(config.NPCID);
                }
                else
                {
                    sortedElites.Add(config.NPCID);
                }
                npcAngers[config.NPCID] = config.MonsterAnger;
            }
            sortedElites.Sort(EliteMonsterCompare);
            sortedBossIds.AddRange(elderGodBosses.Keys);
            sortedBossIds.Sort(ElderGodBossData.LevelCompare);
        }
        private int EliteMonsterCompare(int lhs, int rhs)
        {
            var config1 = Config.Instance.Get<NPCConfig>(lhs);
            var config2 = Config.Instance.Get<NPCConfig>(rhs);
            return config1.NPCLV < config2.NPCLV ? -1 : 1;
        }
        public void OnMapInitOk()
@@ -128,7 +174,17 @@
            var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
            if (dataMapId == ELDERGODAREA_MAPID)
            {
                MapTransferUtility.Instance.MoveToNPC(selectedBoss);
                var target = 0;
                if (sortedElites.Contains(selectedBoss))
                {
                    target = GetRecommendEliteNpc();
                }
                else
                {
                    target = selectedBoss;
                }
                MapTransferUtility.Instance.MoveToNPC(target);
            }
        }
    }
System/FindPrecious/ElderGodAreaWin.cs
@@ -16,22 +16,16 @@
    public class ElderGodAreaWin : Window
    {
        [SerializeField] CyclicScroll m_Bosses;
        [SerializeField] ElderEliteMonsterBehaviour m_EliteMonsterBehaviour;
        [SerializeField] BossIntroduceBehaviour m_BossIntroduce;
        [SerializeField] Text m_Times;
        [SerializeField] Button m_Goto;
        [SerializeField] Button m_KillRecord;
        [SerializeField] ToggleButton m_Subscribe;
        ElderGodAreaModel m_Model;
        ElderGodAreaModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<ElderGodAreaModel>()); } }
        FindPreciousModel m_FindPreciousModel;
        FindPreciousModel findPreciousModel { get { return m_FindPreciousModel ?? (m_FindPreciousModel = ModelCenter.Instance.GetModel<FindPreciousModel>()); } }
        DungeonModel m_DungeonModel;
        DungeonModel dungeonModel {
            get { return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>()); }
        }
        ElderGodAreaModel model { get { return ModelCenter.Instance.GetModel<ElderGodAreaModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -81,9 +75,9 @@
            var bosses = new List<int>();
            bosses.AddRange(model.GetElderGodBosses());
            model.selectedBoss = model.GetLatestUnLockBoss();
            model.selectedBoss = model.GetRecommendNpc();
            DisplayNpcBaseInfo(true);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
            m_BossIntroduce.Display(model.selectedBoss, true);
            m_Bosses.Init(bosses);
            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
        }
@@ -111,7 +105,9 @@
                        break;
                    case 2:
                        WindowCenter.Instance.Close<FindPreciousFrameWin>();
                        MapTransferUtility.Instance.MoveToNPC(model.selectedBoss);
                        var config = Config.Instance.Get<ElderGodAreaConfig>(model.selectedBoss);
                        var targetNpc = config.MonsterType == 1 ? model.GetRecommendEliteNpc() : model.selectedBoss;
                        MapTransferUtility.Instance.MoveToNPC(targetNpc);
                        break;
                    case 3:
                        SysNotifyMgr.Instance.ShowTip("DungeonNoGO");
@@ -167,10 +163,34 @@
        private void OnBossSelected(int _bossId)
        {
            m_BossIntroduce.Display(_bossId, false);
            DisplayNpcBaseInfo(false);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
        }
        private void DisplayNpcBaseInfo(bool immediately)
        {
            var npcId = model.selectedBoss;
            var config = Config.Instance.Get<ElderGodAreaConfig>(npcId);
            switch (config.MonsterType)
            {
                case 1:
                    m_KillRecord.gameObject.SetActive(false);
                    m_BossIntroduce.gameObject.SetActive(false);
                    m_EliteMonsterBehaviour.gameObject.SetActive(true);
                    m_EliteMonsterBehaviour.Display(npcId);
                    break;
                case 2:
                    m_KillRecord.gameObject.SetActive(true);
                    m_BossIntroduce.gameObject.SetActive(true);
                    m_EliteMonsterBehaviour.gameObject.SetActive(false);
                    m_BossIntroduce.Display(npcId, immediately);
                    break;
                default:
                    break;
            }
        }
        private void CheckAchievementGuide()
        {
            if (AchievementGoto.guideAchievementId != 0)
System/FindPrecious/ElderGodBreifInfoBehaviour.cs
@@ -27,7 +27,8 @@
        protected override InteractorableState interactorableState {
            get {
                var selected = selectedBossId == bossId;
                var dieOrLocked = !model.IsBossUnLocked(bossId) || !findPreciousModel.IsBossAlive(bossId);
                var config = Config.Instance.Get<ElderGodAreaConfig>(bossId);
                var dieOrLocked = config.MonsterType == 2 && (!model.IsBossUnLocked(bossId) || !findPreciousModel.IsBossAlive(bossId));
                if (!dieOrLocked)
                {
@@ -74,6 +75,44 @@
            UpdateBossNameLevelFont(interactorableState);
        }
        protected override void DrawBossBaseInfo(string _icon, string _name, int _level, int _realm)
        {
            var config = Config.Instance.Get<ElderGodAreaConfig>(bossId);
            m_Portrait.SetSprite(_icon);
            m_Portrait.SetNativeSize();
            switch (config.MonsterType)
            {
                case 1:
                    m_BossName.text = Language.Get("ElderGodMonster");
                    m_BossLevel.text = string.Empty;
                    m_RealmContainer.gameObject.SetActive(false);
                    break;
                case 2:
                    m_BossName.text = _name;
                    m_BossLevel.text = Language.Get("Z1024", _level);
                    if (m_Realm != null && m_RealmContainer != null)
                    {
                        if (Config.Instance.ContainKey<RealmConfig>(_realm))
                        {
                            m_RealmContainer.gameObject.SetActive(true);
                            var realmConfig = Config.Instance.Get<RealmConfig>(_realm);
                            if (realmConfig != null)
                            {
                                m_Realm.SetSprite(realmConfig.Img);
                            }
                        }
                        else
                        {
                            m_RealmContainer.gameObject.SetActive(false);
                        }
                    }
                    break;
                default:
                    break;
            }
        }
        protected override void OnSubscribe(int _bossId)
        {
            base.OnSubscribe(_bossId);