少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-18 72f94e2e0120db00113d0934d52151c436407c5a
1889 【前端】神兽地界及界面相关
6个文件已修改
400 ■■■■■ 已修改文件
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonModel.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonWin.cs 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/FindPreciousBossBriefInfoBehaviour.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs
@@ -187,6 +187,7 @@
        AddAsyncTask<AllPeoplePartyAwardConfig>();
        AddAsyncTask<OrderInfoConfig>();
        AddAsyncTask<TrialExchangeConfig>();
        AddAsyncTask<DogzDungeonConfig>();
        while (!AllCompleted())
        {
System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs
@@ -5,12 +5,133 @@
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class DogzDungeonBreifInfoBehaviour : MonoBehaviour {
    public class DogzDungeonBreifInfoBehaviour : FindPreciousBossBriefInfoBehaviour
    {
        [SerializeField] Text m_RefreshTimesDescription;
        [SerializeField] Image m_Attention;
        protected override int selectedBossId {
            get {
                return model.selectedBoss;
            }
            set {
                model.selectedBoss = value;
            }
        }
        protected override InteractorableState interactorableState {
            get {
                var selected = selectedBossId == bossId;
                var dieOrLocked = !model.IsBossUnLocked(bossId) || !findPreciousModel.IsBossAlive(bossId);
                if (!dieOrLocked)
                {
                    return selected ? InteractorableState.NormalSelected : InteractorableState.NormalUnSelected;
                }
                else
                {
                    return selected ? InteractorableState.DieOrLockedSelected : InteractorableState.DieOrLockedUnSelected;
                }
            }
            set {
                base.interactorableState = value;
            }
        }
        protected override bool isUnLocked {
            get {
                return model.IsBossUnLocked(bossId);
            }
        }
        DogzDungeonModel model { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } }
        protected override void DrawBossBaseInfo(string _icon, string _name, int _level, int _realm)
        {
            var config = ConfigManager.Instance.GetTemplate<DogzDungeonConfig>(bossId);
            m_Portrait.SetSprite(_icon);
            m_Portrait.SetNativeSize();
            m_BossName.text = _name;
            m_BossLevel.text = config.MonsterType == 3 ? "(随机boss)" : Language.Get("Z1024", _level);
            if (m_Realm != null)
            {
                if (_realm > 0)
                {
                    m_Realm.gameObject.SetActive(true);
                    var realmConfig = ConfigManager.Instance.GetTemplate<RealmConfig>(_realm);
                    if (realmConfig != null)
                    {
                        m_Realm.SetSprite(realmConfig.Img);
                    }
                }
                else
                {
                    m_Realm.gameObject.SetActive(false);
                }
            }
        }
        private void DisplayRefreshTimesDescription()
        {
            var config = ConfigManager.Instance.GetTemplate<DogzDungeonConfig>(bossId);
            var timeStrings = new string[config.RefreshTime.Length];
            for (int i = 0; i < config.RefreshTime.Length; i++)
            {
                timeStrings[i] = config.RefreshTime[i].ToString();
            }
            m_RefreshTimesDescription.text = string.Join("、", timeStrings);
        }
        public override void Display(object _data)
        {
            base.Display(_data);
            m_Attention.gameObject.SetActive(findPreciousModel.IsBossSubscribed(bossId));
            var config = ConfigManager.Instance.GetTemplate<WorldBossConfig>(bossId);
            var npcConfig = ConfigManager.Instance.GetTemplate<NPCConfig>(bossId);
            DrawBossBaseInfo(config.PortraitID, npcConfig.charName, npcConfig.NPCLV, npcConfig.Realm);
            UpdateBossRebornCoolDown(isUnLocked);
            UpdateBossPortrait(interactorableState);
            OnSelected(bossId);
            model.bossSelectedEvent -= OnSelected;
            model.bossSelectedEvent += OnSelected;
        }
        public override void Dispose()
        {
            base.Dispose();
            model.bossSelectedEvent -= OnSelected;
        }
        private void OnSelected(int _bossId)
        {
            UpdateBossNameLevelFont(interactorableState);
        }
        protected override void OnSubscribe(int _bossId)
        {
            base.OnSubscribe(_bossId);
            if (bossId != _bossId)
            {
                return;
            }
            m_Attention.gameObject.SetActive(findPreciousModel.IsBossSubscribed(bossId));
        }
    }
@@ -18,3 +139,4 @@
System/DogzDungeon/DogzDungeonModel.cs
@@ -1,20 +1,119 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TableConfig;
using System;
namespace Snxxz.UI
{
    public class DogzDungeonModel : Model
    {
        public const int DOGZDUNGEON_REDPOINT = 76009;
        public const int DATA_MAPID = 1010010;
        int m_SelectedBoss = 0;
        public int selectedBoss {
            get {
                return this.m_SelectedBoss;
            }
            set {
                if (this.m_SelectedBoss != value)
                {
                    this.m_SelectedBoss = value;
                    if (bossSelectedEvent != null)
                    {
                        bossSelectedEvent(value);
                    }
                }
            }
        }
        public event Action<int> bossSelectedEvent;
        List<int> sortedBossIds = new List<int>();
        Dictionary<int, DogzDungeonBossData> bosses = new Dictionary<int, DogzDungeonBossData>();
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        public override void Init()
        {
            throw new System.NotImplementedException();
        }
        public override void UnInit()
        {
            throw new System.NotImplementedException();
        }
        public bool TryGetBossData(int _bossId, out DogzDungeonBossData _data)
        {
            return bosses.TryGetValue(_bossId, out _data);
        }
        public List<int> GetBosses()
        {
            return new List<int>(bosses.Keys);
        }
        public int GetLatestUnLockBoss()
        {
            var playerLevel = PlayerDatas.Instance.baseData.LV;
            for (int i = sortedBossIds.Count - 1; i >= 0; i--)
            {
                var bossId = sortedBossIds[i];
                var npcConfig = ConfigManager.Instance.GetTemplate<NPCConfig>(bossId);
                if (IsBossUnLocked(bossId) && findPreciousModel.IsBossAlive(bossId) && playerLevel >= npcConfig.NPCLV)
                {
                    return bossId;
                }
            }
            return sortedBossIds[0];
        }
        public bool IsBossUnLocked(int _bossId)
        {
            return bosses.ContainsKey(_bossId) && bosses[_bossId].isUnLocked;
        }
        private void ParseConfig()
        {
            var configs = ConfigManager.Instance.GetAllValues<DogzDungeonConfig>();
            foreach (var config in configs)
            {
                bosses[config.NPCID] = new DogzDungeonBossData(config.NPCID);
                sortedBossIds.Add(config.NPCID);
            }
            sortedBossIds.Sort(DogzDungeonBossData.LevelCompare);
        }
    }
    public class DogzDungeonBossData
    {
        public int id { get; private set; }
        public bool isUnLocked {
            get {
                var config = ConfigManager.Instance.GetTemplate<NPCConfig>(id);
                return PlayerDatas.Instance.baseData.LV >= config.NPCLV;
            }
        }
        public DogzDungeonBossData(int _id)
        {
            this.id = _id;
        }
        public static int LevelCompare(int a, int b)
        {
            var configA = ConfigManager.Instance.GetTemplate<NPCConfig>(a);
            var configB = ConfigManager.Instance.GetTemplate<NPCConfig>(b);
            return configA.NPCLV < configB.NPCLV ? -1 : 1;
        }
    }
}
System/DogzDungeon/DogzDungeonWin.cs
@@ -8,11 +8,29 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class DogzDungeonWin : Window
    {
        [SerializeField] CyclicScroll m_Bosses;
        [SerializeField] Transform m_ContainerMonster;
        [SerializeField] Text m_MonsterLevel;
        [SerializeField] RawImage m_MonsterPortrait;
        [SerializeField] BossIntroduceBehaviour m_BossIntroduce;
        [SerializeField] Button m_Goto;
        [SerializeField] Button m_KillRecord;
        [SerializeField] Transform m_SurpassLevel;
        [SerializeField] ToggleButton m_Subscribe;
        [SerializeField] TextEx m_WearyValue;
        DogzDungeonModel model { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -21,6 +39,9 @@
        protected override void AddListeners()
        {
            m_Goto.AddListener(GotoKillBoss);
            m_KillRecord.AddListener(ShowKillRecords);
            m_Subscribe.AddListener(SwitchSubscribeBoss);
        }
        protected override void OnPreOpen()
@@ -29,17 +50,144 @@
        protected override void OnAfterOpen()
        {
            model.bossSelectedEvent += OnBossSelected;
            findPreciousModel.bossSubscribeChangeEvent += OnSubscribeBoss;
        }
        protected override void OnPreClose()
        {
            model.bossSelectedEvent -= OnBossSelected;
            findPreciousModel.bossSubscribeChangeEvent -= OnSubscribeBoss;
        }
        protected override void OnAfterClose()
        {
        }
        protected override void OnActived()
        {
            base.OnActived();
        }
        #endregion
        private void ShowBosses()
        {
            var bosses = model.GetBosses();
            model.selectedBoss = model.GetLatestUnLockBoss();
            m_Bosses.Init(bosses);
            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
            var config = ConfigManager.Instance.GetTemplate<BossHomeConfig>(model.selectedBoss);
            var npcConfig = ConfigManager.Instance.GetTemplate<NPCConfig>(model.selectedBoss);
            switch (config.MonsterType)
            {
                case 1:
                    m_KillRecord.gameObject.SetActive(false);
                    m_BossIntroduce.gameObject.SetActive(false);
                    m_ContainerMonster.gameObject.SetActive(true);
                    m_BossIntroduce.Dispose();
                    UI3DModelExhibition.Instance.BeginShowNPC(model.selectedBoss, Vector3.zero, m_MonsterPortrait);
                    m_MonsterLevel.text = Language.Get("Z1024", npcConfig.NPCLV);
                    break;
                case 2:
                    m_KillRecord.gameObject.SetActive(true);
                    m_BossIntroduce.gameObject.SetActive(true);
                    m_BossIntroduce.Display(model.selectedBoss, true);
                    m_ContainerMonster.gameObject.SetActive(false);
                    m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
                    break;
            }
            var npcDropConfig = ConfigManager.Instance.GetTemplate<NPCDropItemConfig>(model.selectedBoss);
            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
        }
        private void ShowKillRecords()
        {
            findPreciousModel.ViewKillRecordsBoss = model.selectedBoss;
            WindowCenter.Instance.Open<KillRecordsWin>();
        }
        private void SwitchSubscribeBoss()
        {
            if (findPreciousModel.IsBossSubscribed(model.selectedBoss))
            {
                findPreciousModel.RequestDeSubscribeBoss(model.selectedBoss);
            }
            else
            {
                findPreciousModel.RequestSubscribeBoss(model.selectedBoss, false);
            }
        }
        private void GotoKillBoss()
        {
            var dataMapId = dungeonModel.GetDungeonDataIdByMapId(PlayerDatas.Instance.baseData.MapID);
            EnterDogzDungeon();
        }
        private void OnSubscribeBoss(int _bossId)
        {
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
        }
        private void OnBossSelected(int _bossId)
        {
            var config = ConfigManager.Instance.GetTemplate<BossHomeConfig>(_bossId);
            var npcDropConfig = ConfigManager.Instance.GetTemplate<NPCDropItemConfig>(_bossId);
            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
            switch (config.MonsterType)
            {
                case 1:
                    m_KillRecord.gameObject.SetActive(false);
                    m_BossIntroduce.gameObject.SetActive(false);
                    m_ContainerMonster.gameObject.SetActive(true);
                    m_BossIntroduce.Dispose();
                    UI3DModelExhibition.Instance.BeginShowNPC(_bossId, Vector3.zero, m_MonsterPortrait);
                    var npcConfig = ConfigManager.Instance.GetTemplate<NPCConfig>(_bossId);
                    m_MonsterLevel.text = Language.Get("Z1024", npcConfig.NPCLV);
                    break;
                case 2:
                    if (m_BossIntroduce.gameObject.activeInHierarchy)
                    {
                        m_BossIntroduce.Display(_bossId, false);
                    }
                    else
                    {
                        m_BossIntroduce.gameObject.SetActive(true);
                        m_BossIntroduce.Display(_bossId, true);
                    }
                    m_KillRecord.gameObject.SetActive(true);
                    m_ContainerMonster.gameObject.SetActive(false);
                    m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
                    break;
            }
        }
        private void EnterDogzDungeon()
        {
            var error = 0;
            if (TestEnterDungeon(out error))
            {
            }
            else
            {
                ProcessEnterDungeonError(error);
            }
        }
        private bool TestEnterDungeon(out int _error)
        {
            _error = 0;
            return true;
        }
        private void ProcessEnterDungeonError(int _error)
        {
        }
    }
}
System/FindPrecious/FindPreciousBossBriefInfoBehaviour.cs
@@ -83,7 +83,7 @@
            findPreciousModel.bossInfoUpdateEvent -= OnBossInfoUpdate;
        }
        protected void DrawBossBaseInfo(string _icon, string _name, int _level, int _realm)
        protected virtual void DrawBossBaseInfo(string _icon, string _name, int _level, int _realm)
        {
            m_Portrait.SetSprite(_icon);
            m_Portrait.SetNativeSize();
@@ -224,13 +224,16 @@
                }
            }
            if (isRebornRightNow && !m_RefreshAtOnce.gameObject.activeInHierarchy)
            if (m_RefreshAtOnce != null)
            {
                m_RefreshAtOnce.gameObject.SetActive(true);
            }
            else if (!isRebornRightNow && m_RefreshAtOnce.gameObject.activeInHierarchy)
            {
                m_RefreshAtOnce.gameObject.SetActive(false);
                if (isRebornRightNow && !m_RefreshAtOnce.gameObject.activeInHierarchy)
                {
                    m_RefreshAtOnce.gameObject.SetActive(true);
                }
                else if (!isRebornRightNow && m_RefreshAtOnce.gameObject.activeInHierarchy)
                {
                    m_RefreshAtOnce.gameObject.SetActive(false);
                }
            }
        }
System/WindowBase/ModelCenter.cs
@@ -187,6 +187,7 @@
            RegisterModel<TrialDungeonModel>();
            RegisterModel<ActivitiesPushMgr>();
            RegisterModel<MultipleRealmPointModel>();
            RegisterModel<DogzDungeonModel>();
            inited = true;
        }