From 41a6e87783d042bf3e0ecebfa772443f2b5ed95d Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 06 六月 2019 17:22:55 +0800
Subject: [PATCH] 7132 【2.0】【开发】打宝界面优化2

---
 System/FindPrecious/BossHomeModel.cs |   73 +++++++++++++++++++++++++++++++-----
 1 files changed, 63 insertions(+), 10 deletions(-)

diff --git a/System/FindPrecious/BossHomeModel.cs b/System/FindPrecious/BossHomeModel.cs
index ba3235b..602e7c7 100644
--- a/System/FindPrecious/BossHomeModel.cs
+++ b/System/FindPrecious/BossHomeModel.cs
@@ -7,9 +7,10 @@
 namespace Snxxz.UI
 {
     [XLua.LuaCallCSharp]
-	public class BossHomeModel : Model, IMapInitOk
+    public class BossHomeModel : Model, IMapInitOk
     {
         public const int BOSSHOME_MAPID = 31020;
+        public const int BOSSHOME_REDPOINT = 76002;
 
         int m_SelectedFloor = 0;
         public int selectedFloor {
@@ -45,9 +46,24 @@
             }
         }
 
+        int m_WearyValue = 0;
+        public int wearyValue {
+            get { return m_WearyValue; }
+            set {
+                m_WearyValue = value;
+                UpdateRedpoint();
+                if (bossWearyValueChangeEvent != null)
+                {
+                    bossWearyValueChangeEvent();
+                }
+            }
+        }
+
         public event Action<int> bossHomeFloorSelectedEvent;
         public event Action<int> bossSelectedEvent;
+        public event Action bossWearyValueChangeEvent;
 
+        public Redpoint bossHomeRedpoint = new Redpoint(FindPreciousModel.FINDPRECIOUS_REDPOINTID, BOSSHOME_REDPOINT);
         Dictionary<int, BossHomeData> bossHomes = new Dictionary<int, BossHomeData>();
         Dictionary<int, int> vipLackFloorCost = new Dictionary<int, int>();
         List<int> sortedBosses = new List<int>();
@@ -56,10 +72,12 @@
         public override void Init()
         {
             ParseConfig();
+            PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataChange;
         }
 
         public override void UnInit()
         {
+            PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataChange;
         }
 
         public bool TryGetBossHomeData(int _layer, out BossHomeData _data)
@@ -127,6 +145,21 @@
             {
                 return 0;
             }
+        }
+
+        private void OnPlayerDataChange(PlayerDataType _type)
+        {
+            if (_type == PlayerDataType.VIPLv)
+            {
+                UpdateRedpoint();
+            }
+        }
+
+        private void UpdateRedpoint()
+        {
+            var count = vipModel.GetVipPrivilegeCnt(VipPrivilegeType.BossHomeAwardLimit) - m_WearyValue;
+            bossHomeRedpoint.count = count;
+            bossHomeRedpoint.state = count > 0 ? RedPointState.Quantity : RedPointState.None;
         }
 
         private void ParseConfig()
@@ -200,7 +233,7 @@
 
         public void OnMapInitOk()
         {
-            var dataMapId = ModelCenter.Instance.GetModel<DungeonModel>().GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
+            var dataMapId = MapUtility.GetDataMapId(PlayerDatas.Instance.baseData.MapID);
             if (dataMapId == BOSSHOME_MAPID)
             {
                 MapTransferUtility.Instance.MoveToNPC(selectedBoss);
@@ -213,29 +246,49 @@
         public int id { get; private set; }
         public List<int> bossIds = new List<int>();
 
+        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
+
         public BossHomeData(int _id)
         {
             this.id = _id;
         }
 
+        public List<int> GetShowBosses()
+        {
+            var bosses = new List<int>();
+            for (var i = 0; i < bossIds.Count; i++)
+            {
+                var bossId = bossIds[i];
+                if (findPreciousModel.IsBossUnlockOrUnlockSoon(bossId))
+                {
+                    bosses.Add(bossId);
+                }
+            }
+
+            if (bosses.Count == 0)
+            {
+                bosses.Add(bossIds[0]);
+            }
+
+            return bosses;
+        }
+
         public int GetRecommendNpc()
         {
-            var playerLevel = PlayerDatas.Instance.baseData.LV;
-            var recommendNpc = bossIds[bossIds.Count - 1];
-
-            for (int i = 0; i < bossIds.Count; i++)
+            var recommendNpc = bossIds[0];
+            for (var i = bossIds.Count - 1; i >= 0; i--)
             {
-                var bossHomeConfig = BossHomeConfig.Get(bossIds[i]);
-                var npcConfig = NPCConfig.Get(bossIds[i]);
-                if (bossHomeConfig.MonsterType == 2 && playerLevel < npcConfig.NPCLV)
+                var bossId = bossIds[i];
+                var bossHomeConfig = BossHomeConfig.Get(bossId);
+                if (bossHomeConfig.MonsterType == 2 && findPreciousModel.IsBossUnlock(bossId))
                 {
                     recommendNpc = bossIds[i];
                     break;
                 }
             }
+
             return recommendNpc;
         }
-
     }
 
 }

--
Gitblit v1.8.0