| System/FindPrecious/ElderEliteMonsterBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FindPrecious/ElderEliteMonsterBehaviour.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FindPrecious/ElderGodAreaModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FindPrecious/ElderGodAreaWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FindPrecious/ElderGodBreifInfoBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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);