From bb2d2bae05da9eed93e13071b0f3bb9f5e058aa8 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期二, 16 四月 2019 19:52:14 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/HazyRegion/HazyGrassDungeonWin.cs |  121 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 108 insertions(+), 13 deletions(-)

diff --git a/System/HazyRegion/HazyGrassDungeonWin.cs b/System/HazyRegion/HazyGrassDungeonWin.cs
index b038997..91518d8 100644
--- a/System/HazyRegion/HazyGrassDungeonWin.cs
+++ b/System/HazyRegion/HazyGrassDungeonWin.cs
@@ -6,6 +6,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using System.Text;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -15,13 +16,10 @@
     public class HazyGrassDungeonWin : Window
     {
         [SerializeField] DungeonTargetBehaviour m_DungeonTarget;
-        [SerializeField] Text m_BasicGrassCount;
-        [SerializeField] Text m_FairyGrassCount;
-        [SerializeField] Text m_BasicGrassRefreshTime;
-        [SerializeField] Text m_FairyGrassRefreshTime;
+        [SerializeField] HazyGrassCountBeha[] m_GrassCountBehas;
+        [SerializeField] Text[] m_GrassTimes;
 
-        [SerializeField] Transform m_ContainerCollectSucc;
-        [SerializeField] Text m_GainRemind;
+        float timer = 0f;
 
         DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
         HazyRegionModel hazyRegionModel { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
@@ -37,11 +35,13 @@
 
         protected override void OnPreOpen()
         {
-            m_ContainerCollectSucc.gameObject.SetActive(false);
-
             Display();
 
+            timer = 0f;
+            RequestGrassCount();
+
             GlobalTimeEvent.Instance.secondEvent += PerSecond;
+            hazyGrassModel.onMapNpcCountRefresh += OnMapNpcCountRefresh;
         }
 
         protected override void OnAfterOpen()
@@ -51,10 +51,22 @@
         protected override void OnPreClose()
         {
             GlobalTimeEvent.Instance.secondEvent -= PerSecond;
+            hazyGrassModel.onMapNpcCountRefresh -= OnMapNpcCountRefresh;
         }
 
         protected override void OnAfterClose()
         {
+        }
+
+        protected override void LateUpdate()
+        {
+            base.LateUpdate();
+            timer += Time.deltaTime;
+            if (timer >= 5f)
+            {
+                timer = 0f;
+                RequestGrassCount();
+            }
         }
         #endregion
 
@@ -77,19 +89,102 @@
             }
 
             DisplayGrassRefreshTime();
+            DisplayGrassCount();
         }
 
         void DisplayGrassCount()
         {
-
+            var mapId = hazyGrassModel.GetGrassMapId(hazyRegionModel.processingIncidentId);
+            var npcInfos = hazyGrassModel.GetGrassNpcInfos(mapId);
+            for (int i = 0; i < m_GrassCountBehas.Length; i++)
+            {
+                if (npcInfos != null && i < npcInfos.Count)
+                {
+                    m_GrassCountBehas[i].SetActive(true);
+                    m_GrassCountBehas[i].Display(npcInfos[i].npcId,
+                        hazyGrassModel.GetMapNpcCount(npcInfos[i].npcId));
+                }
+                else
+                {
+                    m_GrassCountBehas[i].SetActive(false);
+                }
+            }
         }
 
         void DisplayGrassRefreshTime()
         {
-            var used = Mathf.Max(0, (int)(TimeUtility.ServerNow - hazyGrassModel.grassBornTime).TotalSeconds);
-            var refreshSeconds = hazyGrassModel.grassRefreshSeconds - used % hazyGrassModel.grassRefreshSeconds;
-            m_BasicGrassRefreshTime.text = Language.Get("HazyBasicGrassRefresh", TimeUtility.SecondsToMS(refreshSeconds));
-            m_FairyGrassRefreshTime.text = Language.Get("HazyFairyGrassRefresh", TimeUtility.SecondsToMS(refreshSeconds));
+            var mapId = hazyGrassModel.GetGrassMapId(hazyRegionModel.processingIncidentId);
+            var npcInfos = hazyGrassModel.GetGrassNpcInfos(mapId);
+            for (int i = 0; i < m_GrassTimes.Length; i++)
+            {
+                if (npcInfos != null && i < npcInfos.Count)
+                {
+                    m_GrassTimes[i].gameObject.SetActive(true);
+                    var used = TimeUtility.Minute * 60 + TimeUtility.Second;
+                    var refreshSeconds = npcInfos[i].refreshMinute * 60;
+                    var seconds = refreshSeconds - used % refreshSeconds;
+                    var npcConfig = NPCConfig.Get(npcInfos[i].npcId);
+                    m_GrassTimes[i].text = string.Format("{0}{1}鍚庡埛鏂�", npcConfig.charName,
+                        TimeUtility.SecondsToMS(seconds));
+                }
+                else
+                {
+                    m_GrassTimes[i].gameObject.SetActive(false);
+                }
+            }
+        }
+
+        void RequestGrassCount()
+        {
+            if (!ClientDungeonStageUtility.isClientDungeon)
+            {
+                var config = HazyRegionConfig.Get(hazyRegionModel.processingIncidentId);
+                if (config != null)
+                {
+                    var npcInfos = hazyGrassModel.GetGrassNpcInfos(config.dungeonId);
+                    if (npcInfos != null)
+                    {
+                        int[] npcs = new int[npcInfos.Count];
+                        for (int i = 0; i < npcInfos.Count; i++)
+                        {
+                            npcs[i] = npcInfos[i].npcId;
+                        }
+
+                        var pak = new CA227_tagCMQueryNPCCntInfo();
+                        pak.MapID = (uint)config.dungeonId;
+                        pak.LineID = (ushort)config.lineId;
+                        pak.NPCIDList = LitJson.JsonMapper.ToJson(npcs);
+                        pak.NPCIDListLen = (byte)pak.NPCIDList.Length;
+                        GameNetSystem.Instance.SendInfo(pak);
+                    }
+                }
+            }
+        }
+
+        private void OnMapNpcCountRefresh()
+        {
+            DisplayGrassCount();
+        }
+
+        [Serializable]
+        public class HazyGrassCountBeha
+        {
+            [SerializeField] Transform m_Container;
+            [SerializeField] Text m_Title;
+            [SerializeField] Text m_Count;
+
+            public void Display(int npcId, int count)
+            {
+                var npcConfig = NPCConfig.Get(npcId);
+                m_Title.text = string.Format("鍓╀綑{0}鏁伴噺锛�", npcConfig.charName);
+                m_Count.text = count.ToString();
+                m_Count.color = UIHelper.GetUIColor(count > 0 ? TextColType.Green : TextColType.Red);
+            }
+
+            public void SetActive(bool active)
+            {
+                m_Container.gameObject.SetActive(active);
+            }
         }
     }
 

--
Gitblit v1.8.0