From 37fe958376a003a36154bf9e4b456397f5c254b1 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期五, 12 四月 2019 19:46:18 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/FindPrecious/WorldBossModel.cs |   67 +++++++++++++++++++++++++++------
 1 files changed, 54 insertions(+), 13 deletions(-)

diff --git a/System/FindPrecious/WorldBossModel.cs b/System/FindPrecious/WorldBossModel.cs
index f71a9fa..6a5c0c6 100644
--- a/System/FindPrecious/WorldBossModel.cs
+++ b/System/FindPrecious/WorldBossModel.cs
@@ -3,13 +3,11 @@
 using UnityEngine;
 using System;
 
-
 namespace Snxxz.UI
 {
     [XLua.LuaCallCSharp]
-	public class WorldBossModel : Model
+    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;
             }
         }
 

--
Gitblit v1.8.0