| Core/GameEngine/Model/ConfigManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DogzDungeon/DogzDungeonModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DogzDungeon/DogzDungeonWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FindPrecious/FindPreciousBossBriefInfoBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/WindowBase/ModelCenter.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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; }